CNN Architectures(AlexNet,VGG,GoogleNet,ResNet,DenseNet)


AlexNet (2012)

 

The network had a very similar architecture as LeNet by Yann LeCun et al but was deeper, with more filters per layer, and with stacked convolutional layers. It consisted 11x11, 5x5,3x3, convolutions, max pooling, dropout, data augmentation, ReLU activations, SGD with momentum. It attached ReLU activations after every convolutional and fully-connected layer

 

VGGNet (2014)

Similar to AlexNet, only 3x3 convolutions, but lots of filters

 

  1. Convolution using 64 filters
  2. Convolution using 64 filters + Max pooling
  3. Convolution using 128 filters
  4. Convolution using 128 filters + Max pooling
  5. Convolution using 256 filters
  6. Convolution using 256 filters
  7. Convolution using 256 filters + Max pooling
  8. Convolution using 512 filters
  9. Convolution using 512 filters
  10. Convolution using 512 filters + Max pooling
  11. Convolution using 512 filters
  12. Convolution using 512 filters
  13. Convolution using 512 filters + Max pooling
  14. Fully connected with 4096 nodes
  15. Fully connected with 4096 nodes
  16. Output layer with Softmax activation with 1000 nodes
  • Convolutions layers (used only 3*3 size )
  • Max pooling layers (used only 2*2 size)
  • Fully connected layers at end
  • Total 16 layers

實際上,一個5x5可以用兩個3x3來近似代替,一個7x7可以用三個3x3的卷積核來代替,不僅提升了判別函數的識別能力,而且還減少了參數;如3個3x3的卷積核,通道數為C,則參數為3x(3x3xCxC)=27C2C2,而一個7x7的卷積核,通道數也為C,則參數為(7x7xCxC)=49C2C2。 

GoogLeNet(2014)

GoogLeNet采用了22層網絡,為了避免上述提到的梯度消失問題,GoogLeNet巧妙的在不同深度處增加了兩個loss來保證梯度回傳消失的現象

Inception的網絡,將1x1,3x3,5x5的conv和3x3的pooling,stack在一起,一方面增加了網絡的width,另一方面增加了網絡對尺度的適應性,但是如果簡單的將這些應用到feature map上的話,concat起來的feature map厚度將會很大,所以為了避免這一現象提出的inception具有如下結構,在3x3前,5x5前,max pooling后分別加上了1x1的卷積核起到了降低feature map厚度的作用,這也使得雖然googlenet有22層但是參數個數要少於alexnet和vgg。inception的具體結構如圖2所示。

 


作者:時濁
鏈接:https://www.jianshu.com/p/1da6cc24137a
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。

1、GoogLeNet Inception V1

 

 

采用1x1卷積核來進行降維。 
例如:上一層的輸出為100x100x128,經過具有256個輸出的5x5卷積層之后(stride=1,pad=2),輸出數據為100x100x256。其中,卷積層的參數為128x5x5x256。假如上一層輸出先經過具有32個輸出的1x1卷積層,再經過具有256個輸出的5x5卷積層,那么最終的輸出數據仍為為100x100x256,但卷積參數量已經減少為128x1x1x32 + 32x5x5x256,大約減少了4倍。

 

對上圖做以下說明: 
1 . 采用不同大小的卷積核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合; 
2 . 之所以卷積核大小采用1、3和5,主要是為了方便對齊。設定卷積步長stride=1之后,只要分別設定pad=0、1、2,那么卷積之后便可以得到相同維度的特征,然后這些特征就可以直接拼接在一起了; 
3 . 文章說很多地方都表明pooling挺有效,所以Inception里面也嵌入了。 
4 . 網絡越到后面,特征越抽象,而且每個特征所涉及的感受野也更大了,因此隨着層數的增加,3x3和5x5卷積的比例也要增加。

 

對上圖做如下說明: 
1 . 顯然GoogLeNet采用了模塊化的結構,方便增添和修改; 
2 . 網絡最后采用了average pooling來代替全連接層,想法來自NIN,事實證明可以將TOP1 accuracy提高0.6%。但是,實際在最后還是加了一個全連接層,主要是為了方便以后大家finetune; 
3 . 雖然移除了全連接,但是網絡中依然使用了Dropout ; 
4 . 為了避免梯度消失,網絡額外增加了2個輔助的softmax用於向前傳導梯度。文章中說這兩個輔助的分類器的loss應該加一個衰減系數,但看caffe中的model也沒有加任何衰減。此外,實際測試的時候,這兩個額外的softmax會被去掉。

 

global average pooling:假如,最后的一層的數據是10個6*6的特征圖,global average pooling是將每一張特征圖計算所有像素點的均值,輸出一個數據值,

這樣10 個特征圖就會輸出10個數據點,將這些數據點組成一個1*10的向量的話,就成為一個特征向量,就可以送入到softmax的分類中計算了

 

 

2、GoogLeNet Inception V2

 從上面來看,大卷積核完全可以由一系列的3x3卷積核來替代,那能不能分解的更小一點呢。文章考慮了 nx1 卷積核。 
如下圖所示的取代3x3卷積:

於是,任意nxn的卷積都可以通過1xn卷積后接nx1卷積來替代。實際上,作者發現在網絡的前期使用這種分解效果並不好,還有在中度大小的feature map上使用效果才會更好。(對於mxm大小的feature map,建議m在12到20之間)。

 

 

 

(1) 圖4是GoogLeNet V1中使用的Inception結構;

(2) 圖5是用3x3卷積序列來代替大卷積核;

(3) 圖6是用nx1卷積來代替大卷積核,這里設定n=7來應對17x17大小的feature map。該結構被正式用在GoogLeNet V2中。

 

RestNet 

 

形式上看,就是用 H(X)來表示最優解映射,但我們讓堆疊的非線性層去擬合另一個映射 F(X):=H(X) - X, 此時原最優解映射 H(X)就可以改寫成 F(X)+X,我們假設殘差映射跟原映射相比更容易被優化。極端情況下,如果一個映射是可優化的,那也會很容易將殘差推至0,把殘差推至0和把此映射逼近另一個非線性層相比要容易的多。

 

加入了shortcut connections,實線是在input 和output維度一致時候,虛線是在input和output維度不一致的時候,可以采用2種option: a) 對於多出來的dimention用0 padding b)利用1 X 1的卷積核降維

DenseNet 

見后面的博客:https://www.cnblogs.com/wuxiangli/p/8257764.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM