引言
- Google提出的Inception系列是分類任務中的代表性工作,不同於VGG簡單地堆疊卷積層,Inception重視網路的拓撲結構。本文關注Inception系列方法的演變,並加入了Xception作為對比。
PS1:這裡有一篇blog,作者Bharath Raj簡潔明瞭地介紹這系列的工作:https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202,強烈建議閱讀。
PS2:我看了比較多的blog,都沒有介紹清楚V2和V3的區別。主要是因為V2的提出涉及到兩篇paper,並且V2和V3是在一篇論文中提到的。實際上,它們兩者的區別並不大。
InceptionV1
Going Deeper with Convolutions
核心思想
由於影像的突出部分可能有極大的尺寸變化,這為卷積操作選擇正確的核心大小創造了困難,比如更全域性的資訊應該使用大的核心,而更區域性的資訊應該使用小核心。不妨在同一級執行多種尺寸的濾波核,讓網路本質變得更"寬"而不是”更深“。
- 提出Inception模組(左),具有三種不同的濾波器(1x1,3x3,5x5)和max pooling。為降低計算量,GooLeNet借鑑Network-in-Network的思想,用1x1卷積降維減小引數量(右)。可在保持計算成本的同時增加網路的深度和寬度。
網路架構
- GoogLeNet具有9個Inception模組,22層深(27層包括pooling),並在最後一個Inception模組使用全域性池化。
- 由於網路深度,將存在梯度消失vanishing gradient的問題。
- 為了防止網路中間部分消失,作者提出了兩個輔助分類器auxiliary classifiers(紫色),總損失是實際損失和輔助損失的加權求和。
# The total loss used by the inception net during training.
total_loss = real_loss + 0.3 * aux_loss_1 + 0.3 * aux_loss_2
實驗結果
InceptionV2
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
Rethinking the Inception Architecture for Computer Vision
核心思想
- 使用Batch Normalization
將輸出歸一化為N(0,1正態分佈,一方面可以採用較大的學習速率,加快收斂;另一方面BN具有正則效應。
- 卷積分解Factorizing Convolutions
當卷積沒有徹底改變輸入維度時,神經網路表現更好。過度減小尺寸會導致資訊丟失,稱為"representational bottleneck",巧妙地使用分解(factorization)方法,可提高卷積的計算效率。
- 分解為更小的卷積:\(5\times5\)卷積可分解為兩個\(3\times3\)卷積以提升計算效率,計算效率為原來的\(\frac{3\times3+3\times3}{5\times5}\)
- 分解為非對稱卷積:\(n\times n\)卷積可分解為\(1\times n\)和\(n \times 1\)的卷積。
Inception的演化
a為InceptionV1;用兩個3x3卷積替換5x5得到b;再將3x3卷積分解為3x1、1x3得c;在高層特徵中,卷積組被擴充為d已產生更多不一樣的特徵。
下采樣模組
InceptionV3不再使用max pooling下采樣,這樣導致資訊損失較大。於是作者想用conv升維,然後再pooling,但會帶來較大的計算量,所以作者設計了一個並行雙分支的結構Grid Size Reduction來取代max pooling。
網路結構
figure5、figure6、figure7分別表示上圖的b、c、d,每種block之間加入Grid Size Reduction。
實驗結果
Inceptionv2達到23.4%,而Inceptionv3是指在Inceptionv2上同時使用RMSProp、Label Smoothing和分解7x7卷積、輔助分類器使用BN。
InceptionV3
Rethinking the Inception Architecture for Computer Vision
核心思想
作者指出,輔助分類器在訓練即將結束時準確度接近飽和時才會有大的貢獻。因此可以作正則化regularizes。
- V3在V2上作了如下改進,見V2實驗結果:
- RMSProp Optimizer
- 分解7x7的卷積
- 輔助分類器採用BatchNorm
- Label Smoothing,防止過擬合。
實驗結果
InceptionV4
Inception-ResNet and the Impact of Residual Connections on Learning
這篇文章結合ResNet和Inception提出了三種新的網路結構
- Inception-ResNet-v1:混合版Inception,和InceptionV3有相同計算成本。
- Inception-ResNet-v2:計算成本更高,顯著提高performance。
- InceptionV4:純Inception變體,無residual連線,媲美Inception-ResNetV2
核心思想
- InceptionV4是對原來的版本進行了梳理,因為原始模型是採用分割槽方式訓練,而遷移到TensorFlow框架後可以對Inception模組進行一定的規範和簡化。
網路架構
- Stem:Inception-ResNetV1採用了top,Inceptionv4和Inception-ResNetV2採用了bottom。
- Inception modules A,B,C
- Reduction Blocks A,B
- Network
Inception-ResNet
核心思想
- 受ResNet啟發,提出一種混合版的Inception。Inception-ResNet有v1、v2版本。
- Inception-ResNetV1計算量與InceptionV3相似,Inception-ResNetV2計算量與InceptionV4相似。
- 它們有不同的steam。
- 它們的A、B、C模組相同,區別在於超引數設定。
當卷積核數量超過1000時,更深的單元會導致網路死亡。因此為了增加穩定性,作者對殘差啟用值進行0.1-0.3的縮放。
網路架構
- Steam:見InceptionV4
- Inception-ResNet Module A,B,C
- Residual Blocks A,B
- Network
實驗結果
Xception
核心思想
Xception: Deep Learning with Depthwise Separable Convolutions
- 借鑑depth wise separable conv改進InceptionV3。
Inception基於假設:卷積時將通道和空間卷積分離會更好。其1x1的卷積作用於通道,3x3的卷積同時作用於通道和空間,沒有做到完全分離。
Xception(Extream Inception)則讓3x3卷積只作用於一個通道的特徵圖,從而實現了完全分離。
InceptionV3到Xception的演化
Xception與depthwise separable conv的不同之處:
- depthwise separable conv先對通道進行卷積再1x1卷積,而Xception先1x1卷積,再對通道卷積。
- depthwise separable conv兩個卷積間不帶啟用函式,Xception會經過ReLU。
網路架構
實驗結果
總結
GoogLeNet即InceptionV1提出了Inception結構,包含1x1、3x3、5x5的conv和pooling,使網路變寬,增加網路對多尺度的適應性。
- InceptionV2提出了Batch Normalization,使輸出歸一化為N(0,1)分佈,從而加快收斂。並且提出了卷積分解的思想,將大卷積分解為小卷積或非對稱卷積,從而降低計算量。
- InceptionV3在InceptionV2的基礎上做了一些改進,繼續分解7x7卷積、Label Smoothing,並在輔助分類器中也採用BN。
- InceptionV4重新考慮了InceptionV3的結構,降低了不必要的計算量,純Inception,未引入Residual連線,準確性媲美Inception-ResNetv2。
Inception-ResNet是Inception和Residual Connection的結合,效能有所提升。其有兩個版本v1、v2,v1的計算量跟InceptionV3相似,v2的計算量跟InceptionV4相似。
Xception借鑑了depth wise separable conv改進InceptionV3,將空間和通道完全分離,從而提升了效能,降低了引數量。
參考
- paper
[1]Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.
[2]Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint arXiv:1502.03167, 2015.
[3]Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 2818-2826.
[4]Szegedy C, Ioffe S, Vanhoucke V, et al. Inception-v4, inception-resnet and the impact of residual connections on learning[C]//Thirty-First AAAI Conference on Artificial Intelligence. 2017.
[5]Chollet F. Xception: Deep learning with depthwise separable convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1251-1258.
- blog
A Simple Guide to the Versions of the Inception Network