訂閱
糾錯(cuò)
加入自媒體

三個(gè)模型對(duì)CNN結(jié)構(gòu)演變進(jìn)行總結(jié)

導(dǎo)言:

  自2012年AlexNet在ImageNet比賽上獲得冠軍,卷積神經(jīng)網(wǎng)絡(luò)逐漸取代傳統(tǒng)算法成為了處理計(jì)算機(jī)視覺任務(wù)的核心。

  在這幾年,研究人員從提升特征提取能力,改進(jìn)回傳梯度更新效果,縮短訓(xùn)練時(shí)間,可視化內(nèi)部結(jié)構(gòu),減少網(wǎng)絡(luò)參數(shù)量,模型輕量化, 自動(dòng)設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)等這些方面,對(duì)卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)有了較大的改進(jìn),逐漸研究出了AlexNet、ZFNet、VGG、NIN、GoogLeNet和Inception系列、ResNet、WRN和DenseNet等一系列經(jīng)典模型,MobileNet系列、ShuffleNet系列、SqueezeNet和Xception等輕量化模型。

  在本文將對(duì)這些經(jīng)典模型的結(jié)構(gòu)設(shè)計(jì)演變做一個(gè)總結(jié),旨在讓讀者了解一些結(jié)構(gòu)的設(shè)計(jì)原理,產(chǎn)生效果的原因。在面對(duì)一個(gè)具體任務(wù)時(shí)能夠準(zhǔn)確地選擇一個(gè)合理的特征提取網(wǎng)絡(luò),而不是隨便選擇一個(gè)。在自主設(shè)計(jì)網(wǎng)絡(luò)時(shí),也能根據(jù)總結(jié)的原則和經(jīng)驗(yàn)設(shè)計(jì)出合理的結(jié)構(gòu),避免隨心設(shè)計(jì)。

本文來源于公眾號(hào)CV技術(shù)指南的技術(shù)總結(jié)系列。

更多內(nèi)容請(qǐng)關(guān)注公眾號(hào)CV技術(shù)指南,專注于計(jì)算機(jī)視覺的技術(shù)總結(jié),最新技術(shù)跟蹤。

CNN結(jié)構(gòu)演變總結(jié)

在這個(gè)系列將按照以下三個(gè)部分對(duì)CNN結(jié)構(gòu)演變進(jìn)行總結(jié)。

一、經(jīng)典模型,對(duì)AlexNet、VGG、NIN、GoogLeNet和Inception系列、ResNet、WRN和DenseNet這些模型的結(jié)構(gòu)設(shè)計(jì)部分進(jìn)行總結(jié)。

二、輕量化模型,對(duì)MobileNet系列、ShuffleNet系列、SqueezeNet和Xception等輕量化模型總結(jié)介紹輕量化的原理,設(shè)計(jì)原則。

三、對(duì)前面經(jīng)典模型、輕量化模型中一些經(jīng)典設(shè)計(jì)進(jìn)行總結(jié)。如1x1卷積的作用、兩種池化的應(yīng)用場(chǎng)合、降低過擬合的方法、歸一化方法、卷積層大小尺寸的設(shè)計(jì)原則和卷積核的作用等。

注:本系列沒有對(duì)自動(dòng)化結(jié)構(gòu)網(wǎng)絡(luò)設(shè)計(jì)的模型進(jìn)行總結(jié),主要原因是模型是由算法根據(jù)具體任務(wù)自主設(shè)計(jì)而來,并非人工設(shè)計(jì),因此并不知道其設(shè)計(jì)原理,對(duì)其總結(jié)的意義不大。

這些模型的詳細(xì)解讀,包括實(shí)驗(yàn),實(shí)際效果,完整結(jié)構(gòu),大部分都可在公眾號(hào)CV技術(shù)指南的模型解讀部分看到,少數(shù)模型的解讀將在后續(xù)更新。相關(guān)模型的原論文以及所有模型解讀的總結(jié)pdf,可關(guān)注公眾號(hào) CV技術(shù)指南 回復(fù)“CNN模型”獲取。

LeNet

第一個(gè)卷積神經(jīng)網(wǎng)絡(luò)出現(xiàn)在1989年,這個(gè)網(wǎng)絡(luò)沒有名字,對(duì)讀者來說這個(gè)結(jié)構(gòu)沒什么新穎的,但其作為第一個(gè)卷積神經(jīng)網(wǎng)絡(luò),值得致敬。其結(jié)構(gòu)由卷積層和全連接層組成,激活函數(shù)使用tanh函數(shù),損失函數(shù)使用的是均方誤差MSE,使用了反向傳播算法和隨機(jī)梯度下降。值得一提的是,在這篇論文中還出現(xiàn)了權(quán)重共享和特征圖像的概念。

LeNet是同作者LeCun在另一篇論文中提出的,用于手寫數(shù)字識(shí)別。其結(jié)構(gòu)圖如下:

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

AlexNet(2012)

AlexNet是第一個(gè)深度神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu)圖如下:

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

其創(chuàng)新之處有五處:

1. 使用ReLU作為激活函數(shù)。

2. 提出在全連接層使用Dropout避免過擬合。注:當(dāng)BN提出后,Dropout就被BN替代了。

3. 由于GPU顯存太小,使用了兩個(gè)GPU,做法是在通道上分組。這算不上創(chuàng)新,之所以在這里寫上這一點(diǎn),是因?yàn)樗荢huffleNet_v1使用分組卷積想法的來源。關(guān)于ShuffleNet_v1在公眾號(hào)CV技術(shù)指南的模型解讀中有詳細(xì)解讀。

4. 使用局部響應(yīng)歸一化(Local Response Normalization --LRN),在生物中存在側(cè)抑制現(xiàn)象,即被激活的神經(jīng)元會(huì)抑制周圍的神經(jīng)元。在這里的目的是讓局部響應(yīng)值大的變得相對(duì)更大,并抑制其它響應(yīng)值相對(duì)比較小的卷積核。例如,某特征在這一個(gè)卷積核中響應(yīng)值比較大,則在其它相鄰卷積核中響應(yīng)值會(huì)被抑制,這樣一來卷積核之間的相關(guān)性會(huì)變小。LRN結(jié)合ReLU,使得模型提高了一點(diǎn)多個(gè)百分點(diǎn)。

注:LRN后自Batch-Normalization出現(xiàn)后就再也沒用過了,我印象中只有FstCN 2015年(使用分解時(shí)空卷積的行為識(shí)別)中用了一次,因此讀者對(duì)這個(gè)可以不用去了解。

5. 使用重疊池化。作者認(rèn)為使用重疊池化會(huì)提升特征的豐富性,且相對(duì)來說會(huì)更難過擬合。注:使用重疊池化會(huì)出現(xiàn)棋盤格效應(yīng)。

NiN(2014)

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

創(chuàng)新之處有二:

1. 使用MLPconv,后來在其它模型中就演變成了1x1卷積。

2. 提出全局平均池化代替全連接層。

這樣做的好處有以下幾點(diǎn):

1. 相比于使用全連接層,參數(shù)量極大地減少,相對(duì)來說沒那么容易過擬合。

2. 使得feature map直接映射到類別信息,這樣更符合卷積網(wǎng)絡(luò)的結(jié)構(gòu)。

3. 全局平均池化綜合了空間所有的信息,使得對(duì)輸入的空間轉(zhuǎn)換更魯棒。

也有一個(gè)缺點(diǎn):必須固定輸入大小。

VGG(2014)

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

創(chuàng)新之處有二:

1. 使用了多個(gè)小尺寸的卷積核堆疊來代替一個(gè)大的卷積核,這樣參數(shù)更少,而感受野卻是一樣的。全部使用了3X3的尺寸,池化都是2x2,步長(zhǎng)都為2。

2. 去掉了LRN。作者發(fā)現(xiàn)它效果不明顯。

GoogLeNet(2014)

GoogLeNet也稱為Inception_V1, 其后續(xù)還有三個(gè)改進(jìn)版,合稱Inception系列,對(duì)這個(gè)系列的解讀在模型解讀部分有詳細(xì)解讀,這里只介紹新穎之處。

創(chuàng)新之處有二:

1. 提出Inception Module。大家發(fā)現(xiàn)網(wǎng)絡(luò)越深越寬的效果越好,然而這樣會(huì)帶來以下幾個(gè)問題:

1) 參數(shù)量,計(jì)算量越來越大,在有限內(nèi)存和算力的設(shè)備上,其應(yīng)用也就越難以落地。

2) 對(duì)于一些數(shù)據(jù)集較少的場(chǎng)景,太大的模型反而容易過擬合,但模型太小則泛化能力不夠。

3) 容易出現(xiàn)梯度消失的問題。

解決這些問題比較直觀的方法就是采用稀疏連接來代替全連接層,但很明顯,由于底層是通過矩陣計(jì)算的,稀疏連接在參數(shù)量上減少了,但并沒有減少計(jì)算量。因此設(shè)計(jì)了如下左圖的結(jié)構(gòu)。

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

使用上面這個(gè)結(jié)構(gòu)又會(huì)出現(xiàn)一個(gè)問題,由于使用了在通道上拼接的方式,導(dǎo)致通道數(shù)很大,因此使用NiN中1x1卷積的方式降低通道數(shù)。最終決定使用如右圖所示的結(jié)構(gòu)

2. 使用了輔助分類函數(shù),如下圖所示,有3個(gè)softmax輸出位置,有兩個(gè)是在中間位置,這樣方便在中間層輸出分類,同時(shí)通過加權(quán)(中間0.3)的方式加到最終的分類結(jié)果中。作者認(rèn)為這樣能給模型增加反向傳播的梯度信號(hào),緩解了梯度消失問題,在一定程度上也有正則化的效果。在推理階段,這兩個(gè)softmax將會(huì)去除。

注:后面的InceptionV2-V3論文中會(huì)發(fā)現(xiàn)這玩意沒用,但讀者可以在自己的方向上嘗試一下,也許會(huì)有用呢。

完整的結(jié)構(gòu)圖如下:

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

Inception_v2和Inception_v3

這兩者是出現(xiàn)在同一篇論文中,作者提出了很多改進(jìn)技術(shù),使用了其中一部分的稱為V2, 全部都使用的是V3。

創(chuàng)新之處有四:

1. 提出分解卷積。如將5x5卷積核分解為1x5和5x1的非對(duì)稱卷積堆疊。

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

最終還衍生出了下面這種混合式的模塊。(個(gè)人感覺沒必要這么干,意義不大)

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

2. 使用了批歸一化Batch-Normalization (BN), 關(guān)于BN,完整的介紹出現(xiàn)在另一篇論文中,公眾號(hào)CV技術(shù)指南中也有對(duì)其完整的解讀,感興趣的讀者可在模型解讀中的《Inception系列之Inception_v2》中看到。注:當(dāng)BN提出后,Dropout就被BN替代了。

3. 提出一種高效降低特征圖大小的方法。

在降低特征圖尺寸時(shí),若按下圖這兩種方式設(shè)計(jì),第一種會(huì)出現(xiàn)瓶頸,違背模型設(shè)計(jì)原則。(關(guān)于這些設(shè)計(jì)原則將會(huì)總結(jié)在《CNN結(jié)構(gòu)演變總結(jié)》的第三篇中),第二種方式則參數(shù)量巨大。

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

因此就出現(xiàn)了下面這種

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

4. 提出標(biāo)簽平滑化。如果模型在訓(xùn)練過程中學(xué)習(xí)使得全部概率值給ground truth標(biāo)簽,或者使得最大的Logit輸出值與其他的值差別盡可能地大,直觀來說就是模型預(yù)測(cè)的時(shí)候更自信,這樣將會(huì)出現(xiàn)過擬合,不能保證泛化能力。因此標(biāo)簽平滑化很有必要。

平滑化的方式是使得標(biāo)簽值小于1,而其它值大于0,如5個(gè)類,使得標(biāo)簽值為{0.05,0.05,0.8,0.05,0.05}。具體是由狄拉克函數(shù)函數(shù)實(shí)現(xiàn)的。感興趣的可看該論文的解讀。

完整的結(jié)構(gòu)如下:

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

Inception_v4, Inception_ResNet_v1和v2

在Inception系列的第四篇論文里,提出了三種結(jié)構(gòu),這三種結(jié)構(gòu)沒什么創(chuàng)新點(diǎn),作者在論文中也沒有介紹為什么這么設(shè)計(jì)。

如果一定要說有創(chuàng)新點(diǎn)的話,主要就是在上面Inception_v2-v3的基礎(chǔ)上,第一種Inception_v4在Inception模塊上改了一些參數(shù),提出了幾個(gè)不同參數(shù)的Inception block,與v2和v3沒有本質(zhì)上的改變。第二第三種結(jié)構(gòu)在Inception模塊中加入了殘差連接,同樣是沒有本質(zhì)上的改變,且比較少見有用這三種作為特征提取網(wǎng)絡(luò)的,因此這里不多介紹。感興趣的看該論文的解讀,里面有完整的結(jié)構(gòu)。

ResNet(2015)

一般而言,網(wǎng)絡(luò)越深越寬會(huì)有更好的特征提取能力,但當(dāng)網(wǎng)絡(luò)達(dá)到一定層數(shù)后,隨著層數(shù)的增加反而導(dǎo)致準(zhǔn)確率下降,網(wǎng)絡(luò)收斂速度更慢。

針對(duì)這個(gè)問題,ResNet的創(chuàng)新之處有二:

1. 提出shortcut connection, 右邊直接連接的部分稱為identity mapping。該方法靈感來源于Highway Networks。

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

注:剛開始認(rèn)為殘差連接可以緩解梯度消失問題,但在后續(xù)的論文中經(jīng)過實(shí)驗(yàn)證明它似乎并不能。

2. 提出瓶頸模塊( bottleneck block )。這個(gè)瓶頸模塊在MobileNet v2中有所應(yīng)用并調(diào)整。

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

使用瓶頸模塊構(gòu)建出了ResNet34, ResNet50, ResNet101, ResNet152等深層

神經(jīng)網(wǎng)絡(luò)。

WRN(2017)

使用identity mapping的殘差塊使我們可以訓(xùn)練一個(gè)非常深的網(wǎng)絡(luò),但與此同時(shí),殘差塊也是殘差網(wǎng)絡(luò)的一個(gè)缺點(diǎn)。當(dāng)梯度流通過整個(gè)網(wǎng)絡(luò)時(shí),網(wǎng)絡(luò)不會(huì)強(qiáng)迫梯度流過權(quán)重層(這會(huì)導(dǎo)致訓(xùn)練中學(xué)習(xí)不到什么)。所以很有可能少量的塊能夠?qū)W習(xí)有用的表達(dá),或者很多的塊分享非常少的信息,對(duì)最終結(jié)果影響很小。

創(chuàng)新之處有二:

1. 提出加寬殘差塊的方式,這種方式可以更加高效地提高殘差網(wǎng)絡(luò)性能,而不是增加網(wǎng)絡(luò)深度,使用這種方式構(gòu)建了wider residual networks (WRN)。

2. 提出在殘差塊中使用Dropout。前人的研究中,dropout被插入到了殘差網(wǎng)絡(luò)中的identity連接上,這導(dǎo)致性能下降。而WRN提出dropout插入到卷積層之間的方式使性能有所提升。

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

DenseNet(2018)

傳統(tǒng)的卷積網(wǎng)絡(luò)在一個(gè)前向過程中每層只有一個(gè)連接,ResNet增加了殘差連接從而增加了信息從一層到下一層的流動(dòng)。FractalNets重復(fù)組合幾個(gè)有不同卷積塊數(shù)量的并行層序列,增加名義上的深度,卻保持著網(wǎng)絡(luò)前向傳播短的路徑。相類似的操作還有Stochastic depth和Highway Networks等。

這些模型都顯示一個(gè)共有的特征,縮短前面層與后面層的路徑,其主要的目的都是為了增加不同層之間的信息流動(dòng)。

基于信息流動(dòng)的方式,DenseNet創(chuàng)新之處有一:

1. 傳統(tǒng)L層的網(wǎng)絡(luò)僅有L個(gè)連接,在DenseNet中使用了L(L+1)/2個(gè)連接。這樣做有幾個(gè)明顯的優(yōu)點(diǎn):避免了梯度消失問題,加強(qiáng)了特征傳播,實(shí)現(xiàn)特征復(fù)用(feature reuse),以及實(shí)質(zhì)上減少了參數(shù)量。

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

使用這個(gè)密集連接構(gòu)建了Dense Block

CNN結(jié)構(gòu)演變總結(jié)(一)經(jīng)典模型

總結(jié):本文對(duì)比較經(jīng)典的一些模型在結(jié)構(gòu)上的創(chuàng)新之處進(jìn)行了總結(jié),讓讀者對(duì)目前特征提取網(wǎng)絡(luò)有一個(gè)比較全面的了解,通過對(duì)創(chuàng)新之處的總結(jié)概括,相信讀者對(duì)于CNN這種特征提取網(wǎng)絡(luò)的作用機(jī)制有了清晰的認(rèn)識(shí)。

本文來源于公眾號(hào)CV技術(shù)指南的技術(shù)總結(jié)系列。

更多內(nèi)容請(qǐng)關(guān)注公眾號(hào)CV技術(shù)指南,專注于計(jì)算機(jī)視覺的技術(shù)總結(jié),最新技術(shù)跟蹤。

在公眾號(hào)CV技術(shù)指南 中回復(fù)“CNN模型”可獲得以上模型的詳細(xì)解讀pdf以及論文原文,注:少部分模型沒有解讀。

在下一篇將對(duì)目前的輕量化網(wǎng)絡(luò)進(jìn)行總結(jié),在下篇中讀者將了解到,目前降低神經(jīng)網(wǎng)絡(luò)計(jì)算量的方式有哪些,設(shè)計(jì)這樣的方式的原理何在。

在第三篇中我們將對(duì)經(jīng)典模型和輕量化模型中涉及到的一些方法進(jìn)行總結(jié),介紹原理作用,總結(jié)在這些模型論文中提到的網(wǎng)絡(luò)設(shè)計(jì)原則,讓讀者可以根據(jù)具體任務(wù)自主設(shè)計(jì)網(wǎng)絡(luò)或選擇合適的網(wǎng)絡(luò),避免設(shè)計(jì)時(shí)胡亂選擇參數(shù)或隨意選擇網(wǎng)絡(luò)。

聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)