国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Inception模型進化史:從GoogLeNet到Inception-ResNet

   作者:葉    虎           

編輯:陳人和           


前  言

說起CNN分類網(wǎng)絡(luò),無法避開的是Google提出的Inception網(wǎng)絡(luò)。Inception網(wǎng)絡(luò)開始于2014年的GoogLeNet,并經(jīng)歷了幾次版本的迭代,一直到目前最新的Inception-v4,每個版本在性能上都有一定的提升。這里簡單介紹Inception網(wǎng)絡(luò)的迭代史,重點講述各個版本網(wǎng)絡(luò)設(shè)計所采用的trick,需要說明的是Inception網(wǎng)絡(luò)相對復(fù)雜一些,因為它采用了各式各樣的較tricky的模塊。

圖1 Inception網(wǎng)絡(luò)與其他網(wǎng)絡(luò)的性能對比

章節(jié)目錄

  • Inception-v1

  • Inception-v2

  • Inception-v3

  • Inception-v4

  • Inception-ResNet

  • 小結(jié)


01

Inception-v1

Inception-v1就是眾人所熟知的GoogLeNet,它奪得了2014年ImageNet競賽的冠軍,它的名字也是為了致敬較早的LeNet網(wǎng)絡(luò)。GooLenet網(wǎng)絡(luò)率先采用了Inception模塊,因而又稱為Inception網(wǎng)絡(luò),后面的版本也是在Inception模塊基礎(chǔ)上進行改進。原始的Inception模塊如圖2所示,包含幾種不同大小的卷積,即1x1卷積,3x3卷積和5x5卷積,還包括一個3x3的max pooling層。這些卷積層和pooling層得到的特征concat在一起作為最終的輸出,也是下一個模塊的輸入。

圖2 Inception模塊的原始版本

但是采用較大的卷積核計算復(fù)雜度較大,只能限制特征的channel數(shù)量。所以GoogLeNet采用了1x1卷積來進行優(yōu)化,即先采用1x1卷積將特征的channel數(shù)降低,然后再進行前面所說的卷積。這種“瓶頸層”設(shè)計也是后面很多網(wǎng)絡(luò)所常采用的,如ResNet網(wǎng)絡(luò)。改進后的Inception模塊如下圖所示

圖3 采用1×1卷積改進后的Inception模塊

整個GoogLeNet網(wǎng)絡(luò)是由Inception模塊堆積而成,如下圖所示,整個網(wǎng)絡(luò)總22層

圖4 GoogLeNet網(wǎng)絡(luò)結(jié)構(gòu)

從圖中也可以看到,最終的卷積層之后采用Global Average Pooling層,而不是全連接層,這有助于減少參數(shù)量,最近的分類網(wǎng)絡(luò)也基本上是類似的思路。另外值得注意的一點是網(wǎng)絡(luò)中間層有兩個附屬的loss,這是一種“深度監(jiān)督”策略,文中說是為了避免梯度消失問題,也是一種正則化手段。

圖5 采用Global Average Pooling層替換FC層



02

Inception-v2

在Inception-v2網(wǎng)絡(luò),作者引入了BN層,所以Inception-v2其實是BN-Inception,這點Google在Inception-v4的paper中進行了說明。目前BN層已經(jīng)成為了CNN網(wǎng)絡(luò)最常用的一種策略,簡單來說,就是對中間特征進行歸一化。采用BN層后,一方面可以使用較大的學(xué)習(xí)速率,加快收斂速度,另外一方面,BN層具有正則化效應(yīng)(雖然有一些對BN層的理論分析,但是仍有爭議)。BN層的原理如下所示:

首先計算特征的mean和var,然后進行歸一化,但是為了保證一定的可變度,增加了gamma和beta兩個訓(xùn)練參數(shù)進行縮放和偏移。在訓(xùn)練過程,還要記錄兩個累積量:moving_mean和moving_var,它是每個訓(xùn)練step中batch的mean和var的指數(shù)加權(quán)移動平均數(shù)。在inference過程,不需要計算mean和var,而是使用訓(xùn)練過程中的累積量。這種訓(xùn)練和測試之間的差異性是BN層最被詬病的,所以后面有一系列的改進方法,如Group Norm等。



03

Inception-v3

Inception-v3引入的核心理念是“因子化”(Factorization),主要是將一些較大的卷積分解成幾個較小的卷積。比如將一個5x5卷積分解成兩個3x3卷積: 

   圖6 采用兩個3x3卷積替換5x5卷積

可以計算,采用5x5卷積,參數(shù)量是5x5=25,而兩個3x3卷積的參數(shù)量是3x3+3x3=18,參數(shù)量減少了28%,但是兩者效果是等價的(感受野)。據(jù)此,改進了GoogLeNet網(wǎng)絡(luò)中的Inception模塊:

圖7 Inception-V3中的Inception模塊A

另外的一個因子化,是將nxn的卷積分解成1xn和nx1卷積,如對3x3卷積進行分解:

圖8 3×3卷積分解成1×3和3×1兩個卷積

同樣地,這種分解也在保證效果相同下降低參數(shù)量。據(jù)此,提出了改進的Inception模塊B:

圖9 Inception-v3中的Inception模塊B

但是作者在實際中發(fā)現(xiàn)這種結(jié)構(gòu)不適合較早的層,只適合中等大小的特征(對于mxm大小的特征m的值在12-20之間)。而對于高級特征(m較小的后面層),作者提出了Inceptionmo模塊C,其特點是卷積組被擴展以產(chǎn)生更多不一樣的特征:

圖10 Inception-v3中的Inception模塊C

Inception-v3的另外的一個改進是不再直接使用max pooling層進行下采樣,因為這樣導(dǎo)致信息損失較大。一個可行方案是先進行卷積增加特征channel數(shù)量,然后進行pooling,但是計算量較大。所以作者設(shè)計了另外一種方案,即兩個并行的分支,如圖11 所示,一個是pooling層,另外一個卷積層,最后將兩者結(jié)果concat在一起。這樣在使用較小的計算量情形下還可以避免瓶頸層,這種策略其實在ShuffleNet網(wǎng)絡(luò)中也采用了,看來多讀paper還是有用的,可以借鑒別人論文的優(yōu)點。

圖11 Inception-v3中的下采樣模塊

組合3個改進的Inception模塊,最終的Inception-v3網(wǎng)絡(luò)如下圖12所示,較早的層采用模塊A,中間層采用模塊B,而后面層采用模塊C。這中間有點復(fù)雜,如果想深入理解網(wǎng)絡(luò)的整體結(jié)構(gòu),可以參考一下google的開源實現(xiàn)(slim/inception-v3)。特別要注意的一點是Inception-v3的默認輸入大小是299x229,而不是常規(guī)的224x224。

圖12 Inception-v3網(wǎng)絡(luò)結(jié)構(gòu)

Inception-v3也像GoogLeNet那樣使用了深度監(jiān)督,即中間層引入loss。另外一點是Inception-v3采用了一種Label Smoothing技術(shù)來正則化模型,提升泛化能力。其主要理念是防止最大的logit遠大于其它logits,因為可能會導(dǎo)致過擬合。具體實現(xiàn)比較簡單,即改變one-hot編碼的label即可:

new_labels = (1 — ε) * one_hot_labels + ε / K

其中K是類別數(shù),而ε=0.1是一個超參數(shù)。


04

學(xué)習(xí)與推斷Inception-v4

Inception-v4是對原來的版本進行了梳理,因為原始模型是采用分區(qū)方式訓(xùn)練,而遷移到TensorFlow框架后可以對Inception模塊進行一定的規(guī)范和簡化。Inception-v4整體結(jié)構(gòu)如圖13所示,網(wǎng)絡(luò)的輸入是299x299大小。在使用Inception模塊之前,有一個stem模塊,如右圖所示,這個模塊在Inception-v3網(wǎng)絡(luò)也是存在的,它將輸出35x35大小的特征圖。

圖13 Inception-v4網(wǎng)絡(luò)結(jié)構(gòu)

Inception-v4中的Inception模塊分成3組,基本上與Inception-v3網(wǎng)絡(luò)是一致的,但有細微的變化,如下圖所示:

圖14 Inception-v4網(wǎng)絡(luò)的Inception模塊



05

Inception-ResNet

Inception-ResNet網(wǎng)絡(luò)是在Inception模塊中引入ResNet的殘差結(jié)構(gòu),它共有兩個版本,其中Inception-ResNet-v1對標(biāo)Inception-v3,兩者計算復(fù)雜度類似,而Inception-ResNet-v2對標(biāo)Inception-v4,兩者計算復(fù)雜度類似。Inception-ResNet網(wǎng)絡(luò)結(jié)構(gòu)如圖15所示,整體架構(gòu)與Inception類似,右圖兩個分別是Inception-ResNet-v1和Inception-ResNet-v2網(wǎng)絡(luò)的stem模塊結(jié)構(gòu),也即是Inception-v3和Inception-v4網(wǎng)絡(luò)的stem模塊。 

圖15 Inception-ResNet網(wǎng)絡(luò)結(jié)構(gòu)與stem模塊

Inception-ResNet-v1的Inception模塊如圖16所示,與原始Inception模塊對比,增加shortcut結(jié)構(gòu),而且在add之前使用了線性的1x1卷積對齊維度。對于Inception-ResNet-v2模型,與v1比較類似,只是參數(shù)設(shè)置不同。

圖16 Inception-ResNet-v1的Inception模塊

不同Inception網(wǎng)絡(luò)的在ImageNet上的對比結(jié)果如下表所示,可以看到加入殘差結(jié)構(gòu),并沒有很明顯地提升模型效果。但是作者發(fā)現(xiàn)殘差結(jié)構(gòu)有助于加速收斂。所以作者說沒有殘差結(jié)構(gòu)照樣可以訓(xùn)練出很深的網(wǎng)絡(luò)。


06

小結(jié)

從最初的GoogLeNet,到最新的Inception-ResNet,Inception網(wǎng)絡(luò)在不斷的迭代中越來越好,相比其它模型,Inception網(wǎng)絡(luò)相對來說更復(fù)雜一些,主要在于模塊比較復(fù)雜,而且采用的模塊也是多樣化。未來的話,可能需要AutoML來設(shè)計更好的模塊結(jié)構(gòu)。

參考

  1. GoogLeNet/Inception-v1: Going Deeper with Convolutions.

  2. BN-Inception/Inception-v2: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.

  3. Inception-v3: Rethinking the Inception Architecture for Computer Vision.

  4. Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

  5. Review: Inception-v4?—?Evolved From GoogLeNet, Merged with ResNet Idea (Image Classification)

  6. A Simple Guide to the Versions of the Inception Network


 

END

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ResNet, AlexNet, VGG, Inception: 理解各種各樣的CNN架構(gòu)
幾種經(jīng)典的圖像分類模型
淺談卷積神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)
PaddlePaddle
【模型解讀】GoogLeNet中的inception結(jié)構(gòu),你看懂了嗎
【深度學(xué)習(xí)系列】用PaddlePaddle和Tensorflow實現(xiàn)GoogLeNet Incept...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服