Inception系列回顧

博客:博客園 | CSDN | blog

寫在前面

Inception 家族成員:Inception-V1(GoogLeNet)、BN-Inception、Inception-V2、Inception-V3、Inception-ResNet-V1、Inception-V4、Inception-ResNet-V2。

Inception系列網絡結構可以模塊化爲:
InputStemAReducitonABReductionBCAvg Pooling(+Linear)feature Input \rightarrow Stem \rightarrow A \rightarrow ReducitonA \rightarrow B \rightarrow ReductionB \rightarrow C \rightarrow Avg\ Pooling (+ Linear) \rightarrow feature

  • Stem:前處理部分
  • A B C網絡主體“三段式”,A B C每段的輸入feature size依次折半,channel增加
  • ReductionA B:完成feature size折半操作(降採樣)
  • Avg Pooling (+ Linear):後處理部分

Inception系列的演化過程就是上面各環節不斷改進(越來越複雜)的過程,其進化方向大致爲

  • Stem:大卷積層→多個小卷積層堆疊→multi-branch 小卷積層堆疊
  • A B C:相同multi-branch結構→每階段不同multi-branch結構→每階段不同Residual+multi-branch結構,big convolution→ small convolution + BN → factorized convolution
  • ReductionA B:max pooling → 不同multi-branch conv(stride 2)結構
  • 後處理:Avg Pooling + Linear → Avg Pooling

性能進化如下圖所示,single model通過center crop 在ImageNet上 Top1 和 Top5 準確率,

https://arxiv.org/abs/1810.00736

具體如下。

Inception-V1 (GoogLeNet)

Inception-V1,更被熟知的名字爲GoogLeNet,意向Lenet致敬。

通過增加網絡深度和寬度可以提升網絡的表徵能力。

增加寬度可以簡單地通過增加捲積核數量來實現,GoogLeNet在增加捲積核數量的同時,引入了不同尺寸的卷積核,來捕捉不同尺度的特徵,形成了multi-branch結構——這是GoogLeNet網絡結構的最大特點,如下圖所示,然後將不同branch得到的feature map 拼接在一起,爲了讓feature map的尺寸相同,每個branch均採用SAME padding方式,同時stride爲1(包括max pooling)。爲了降低計算量,又引入了1×11\times 1卷積層來降維,如下圖右所示,該multi-branch結構稱之爲一個Inception Module,在GoogLeNet中採用的是下圖右的Inception Module。
source: http://arxiv.org/abs/1409.4842

直接增加深度會導致淺層出現嚴重的梯度消失現象,GoogLeNet引入了輔助分類器(Auxiliary Classifier),在淺層和中間層插入,來增強回傳時的梯度信號,引導淺層學習到更具區分力的特徵。

source: http://arxiv.org/abs/1409.4842

最終,網絡結構如下,主體三段式A B C 即 3x、4x、5x,

source: http://arxiv.org/abs/1409.4842

GoogLeNet網絡結構的特點可以概括爲,

  • 同時使用不同尺寸的卷積核,形成multi-branch結構,來捕捉不同尺度的特徵
  • 使用1×11 \times 1卷積降維,壓縮信息,降低計算量
  • 在classifier前使用average pooling

BN-Inception

BN-Inception網絡實際是在Batch Normalization論文中順帶提出的,旨在表現BN的強大。

source: http://arxiv.org/abs/1512.00567

與GoogLeNet的不同之處在於,

  • 在每個激活層前增加BN層
  • 將Inception Module中的5×55 \times 5 卷積替換爲2個3×33\times 3 卷積,如上圖所示
  • 在Inception 3a和3b之後增加Inception 3c
  • 部分Inception Module中的Pooling層改爲average pooling
  • 取消Inception Module之間銜接的pooling層,而將下采樣操作交給Inception 3c和4e,令stride爲2

BN-Inception網絡結構如下

source: http://arxiv.org/abs/1502.03167

Inception-V2, V3

Inception V2和V3出自同一篇論文Rethinking the Inception Architecture for Computer Vision

GoogLeNet和BN-Inception網絡結構中Inception Module可分爲3組,稱之爲3x、4x和5x(即主體三段式A B C),GoogLeNet和BN-Inception這3組採用相同Inception Module結構,只是堆疊的數量不同。

Inception V2和V3與以往最大的不同之處在於3組分別使用了不同結構的Inception Module,分別如下圖從左到右所示,

source: http://arxiv.org/abs/1512.00567

具體地,

  • 3x使用的Inception Module與BN-Inception相同,即將5×55\times 5拆分成2個堆疊的3×33\times 3
  • 4x使用的Inception Module採用了factorized convolutions ,將2維卷積拆分成2個堆疊的1維卷積,可類比傳統計算機視覺中的“行列可分解卷積”,但中間夾了個激活,1維卷積的長度爲7;
  • 5x使用的Inception Module,1維卷積不再堆疊而是並列,將結果concat;

除此之外,

  • 3x和4x之間,4x和5x之間,均不存在銜接的池化層,下采樣通過Inception Module中的stride實現
  • 取消了淺層的輔助分類器,只保留中層的輔助分類器
  • 最開始的幾個卷積層調整爲多個堆疊的3×33\times 3 卷積

據論文所述,V2的網絡結構如下

source: http://arxiv.org/abs/1512.00567

據論文所述,V3與V2的差異在於,

  • RMSProp Optimizer
  • Label Smoothing訓練中使用的label爲one hot label與均勻分佈的加權,可以看成一種正則
  • Factorized 7×77 \times 7,即將第一個7×77 \times 7卷積層變爲堆疊的3個3×33 \times 3
  • BN-auxiliary,輔助分類器中的全連接層也加入BN

但是,實際發佈的Inception V3完全是另外一回事,參見pytorch/inception,有人繪製了V3的網絡架構如下——網上少有繪製正確的,下圖中亦存在小瑕疵,最後一個下采樣Inception Module中1×11\times 1的stride爲1。

需要注意的是,起下采樣作用兩個Inception Module並不相同。

source: https://www.researchgate.net/figure/VGG16-VGG19-Inception-V3-Xception-and-ResNet-50-architectures_fig1_330478807

有的時候,Inception-V2和BN-Inception是混淆的。從Inception-V3開始,Inception架構變得越來越不像人搞的……

Inception-V4,Inception-ResNet-v1,Inception-ResNet-v2

Inception-V4,Inception-ResNet-v1 和 Inception-ResNet-v2出自同一篇論文Inception-V4, Inception-ResNet and the Impact of Residual Connections on Learning

Inception-V4相對V3的主要變化在於,前處理使用更復雜的multi-branch stem模塊,主體三段式與V3相同。

https://towardsdatascience.com/review-inception-v4-evolved-from-googlenet-merged-with-resnet-idea-image-classification-5e8c339d18bc

Inception-ResNet-V1與Inception-ResNet-V2,將Inception與ResNet結合,使用Inception結構來擬合殘差部分,兩者在A B C部分結構相同,只是後者channel數更多,兩者的主要差異在前處理部分,後者採用了更復雜的multi-branch stem結構(與V4相同)。相比純Inception結構,引入ResNet結構極大加快了網絡的收斂速度

https://www.aiuai.cn/aifarm465.html

https://www.aiuai.cn/aifarm465.html

以上。

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章