CV中的经典网络模型
目標檢測
目標檢測,不僅要識別目標是什么(分類),還要知道目標的具體位置(可以當作回歸來做)。
RCNN
Selective Search 算法獲得候選框,Alexnet提取特征,SVM對每個候選框區域打分。對于重疊的區域,通過計算IoU和非極大值抑制,剔除重疊的區域。imagenet到VOC的遷移學習,VOC只有21個類,其中一類是背景。
YOLO
?you only look once,屬于one stage檢測,因為不需要提前使用其他的算法獲得候選區域。雖然不是顯式地找候選框,隱式的也是少不了的。YOLO把圖像均勻分成SxS的格子,每個格子預測B個候選框,一般取S=7,B=2,這樣得到98個候選框。雖然有這么多BBox,但是有些是沒有意義的,因為其對應的格子就不包含object。不包含object的cell肯定不予考慮,那么包含著object的呢,也要打分排序:與groundtruth的IoU越高,得分也越高,這個得分叫做置信度confidence。更進一步,即便有一些cell的置信度都很高,得分都一樣,但是他們的重要程度可能還是不一樣的:那些object的中心落在哪個cell中,哪個cell的重要性更高,可以為這個object負責。這個重要程度以條件概率的形式給出,即這個cell是屬于某個object的前提下,屬于class i的概率。
YOLO v1 的模型結構受 GoogLeNet 啟發。但是,有少許不同。YOLO 采用了 1x1 和 3x3 的序列組合替代 Inception 模塊。YOLO 模型的最后一層是一個 7x7x30 的 tensor,怎么理解呢?7x7自然對應的是空域中的均勻分割,每一個cell對應2個BBox,每個BBox對應兩個內容,一個是空間位置(中心點坐標x,y,長寬w,h,通道數c),一個是對應各個類別的概率(20類,長度20),所以最終的輸出就是7x7x((2+2+1)*2+20))
AlenNet
成功使用了Relu,成功使用了Dropout,成功使用了重疊的最大池化(最大池化相比于平均池化,避免了模糊效應;而重疊的是通過步長小于池化核,使得輸出之前有重疊,提升了特征的豐富性)。注意這里都是“成功應用”,而不是提出,AlenNet提出的貢獻是LRN。
local response normalization
這里的作用也是避免過擬合,提升泛化能力。思路是為局部神經元創建競爭機制,模擬生物學中的“側抑制“,反饋大的被激活,反饋小的被抑制。
google?
vgg
inception
Inception是GoogleNet中的一個模塊。這個詞的本意是開端,同時也作為《盜夢空間》的英文名。模塊起這個名字正是為了像盜夢空間一樣進入更深的“夢境”。在更深之前,首先是更寬。既然卷積核的大小有限制,太大不行,太小也不行,那就用多個不同尺寸的卷積核,不同卷積核的輸出不再是對應像素相加,而是級聯起來,送入下一層。
那么,Inception具體選取了哪幾個尺寸的卷積核呢。1x1,3x3和5x5,還有一個最大池化層,相當于Inception模塊不僅要幫助你決定卷積核的尺寸,還要決定是否使用池化層。1x1卷積和其他卷積其實本質是一樣的,都是跨通道的線性組合,只不過它沒有改變特征圖的分辨率,所以可以認為是在通道維度降低了維度(當然也可以升維,與濾波器個數有關)。既然1x1卷積可以降維,那么就可以在Inception中的卷積之前,池化之后加一步1x1卷積,降低計算量,這就是Inception V1。
網絡更寬了,就可以更深嗎?我們知道,更深的話容易遇到梯度消失的問題,其實在這里這個問題依然存在。為了解決這個問題,GoogleNet額外增加了兩個輔助的softmax。具體做法是對其中的兩個Inception模塊,他們的輸出一方面進入下一個Inception,一方面會在平均池化后使用1x1降維,再經過全連接,進入softmax激活層。
ResNet
既然梯度消失是層層累積造成的現象,那么我們可不可以讓某些層跳過之前的幾層,得到梯度消失之前的信息?ResNet就是這樣做到,同時給這種短路機制的想法賦予了一個更高大上其實也更合理的解釋:這種結構不再是讓網絡直接學習目標值,而是讓接下來的網絡學習之前學習的結果與目的的差值。在不斷減小殘差的同時,也得到了更加準確的預測。當殘差為0時,這一模塊即為恒等映射
事實上,ResNet作為2016年的最佳CVPR論文,在ImageNet分類競賽中,將DNN的深度從VGG的16層提升到了152層。對于更深的DNN,每個Res模塊的深度也可以從兩層增加到三層:
ResNet的一個重要設計原則是:當feature map大小降低一半時,feature map的數量增加一倍,這保持了網絡層的復雜度。對于短路連接,當輸入和輸出維度一致時,可以直接將輸入加到輸出上。但是當維度不一致時(對應的是維度增加一倍),這就不能直接相加。有兩種策略:(1)采用zero-padding增加維度,此時一般要先做一個downsamp,可以采用strde=2的pooling,這樣不會增加參數;(2)采用新的映射(projection shortcut),一般采用1x1的卷積,這樣會增加參數,也會增加計算量。短路連接除了直接使用恒等映射,當然都可以采用projection shortcut。https://zhuanlan.zhihu.com/p/31852747
DenseNet
?
mobile net
https://blog.csdn.net/briblue/article/details/82012575
https://www.cnblogs.com/dengshunge/p/10808191.html
?
?
總結
以上是生活随笔為你收集整理的CV中的经典网络模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu安装谷歌浏览器 typora
- 下一篇: 李航《统计学习方法》笔记