久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

ResNet, AlexNet, VGG, Inception: 理解各種各樣的CNN架構(gòu)

 啊司com 2017-12-27

作者:葉   虎 

編輯:王抒偉


本文翻譯自ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks
http://cv-tricks.com/cnn/understand-resnet-alexnet-vgg-inception/

原作者保留版權(quán)。


卷積神經(jīng)網(wǎng)絡(luò)(CNN)在視覺識(shí)別任務(wù)上的表現(xiàn)令人稱奇,。好的CNN網(wǎng)絡(luò)是帶有上百萬參數(shù)和許多隱含層的“龐然怪物”,。事實(shí)上,一個(gè)不好的經(jīng)驗(yàn)規(guī)則是:網(wǎng)絡(luò)越深,,效果越好,。


AlexNet,VGG,,Inception和ResNet是最近一些流行的CNN網(wǎng)絡(luò),。


為什么這些網(wǎng)絡(luò)表現(xiàn)如此之好?它們是如何設(shè)計(jì)出來的,?為什么它們?cè)O(shè)計(jì)成那樣的結(jié)構(gòu),?回答這些問題并不簡(jiǎn)單,但是這里我們?cè)囍ヌ接懮厦娴囊恍﹩栴},。


網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)是一個(gè)復(fù)雜的過程,,需要花點(diǎn)時(shí)間去學(xué)習(xí),甚至更長(zhǎng)時(shí)間去自己動(dòng)手實(shí)驗(yàn),。首先,,我們先來討論一個(gè)基本問題。

為什么CNN模型戰(zhàn)勝了傳統(tǒng)的計(jì)算機(jī)視覺方法,?
1



圖像分類指的是給定一個(gè)圖片將其分類成預(yù)先定義好的幾個(gè)類別之一,。圖像分類的傳統(tǒng)流程涉及兩個(gè)模塊:特征提取和分類

特征提取 指的是從原始像素點(diǎn)中提取更高級(jí)的特征,這些特征能捕捉到各個(gè)類別間的區(qū)別,。這種特征提取是使用無監(jiān)督方式,,從像素點(diǎn)中提取信息時(shí)沒有用到圖像的類別標(biāo)簽。


常用的傳統(tǒng)特征包括GIST, HOG, SIFT, LBP等,。特征提取之后,,使用圖像的這些特征與其對(duì)應(yīng)的類別標(biāo)簽訓(xùn)練一個(gè)分類模型,。常用的分類模型有SVM,LR,,隨機(jī)森林及決策樹等,。


上面流程的一大問題是

特征提取不能根據(jù)圖像和其標(biāo)簽進(jìn)行調(diào)整。如果選擇的特征缺乏一定的代表性來區(qū)分各個(gè)類別,,模型的準(zhǔn)確性就大打折扣,,無論你采用什么樣的分類策略。


采用傳統(tǒng)的流程,,目前的一個(gè)比較好的方法是使用多種特征提取器,,然后組合它們得到一種更好的特征。


但是這需要很多啟發(fā)式規(guī)則和人力來根據(jù)領(lǐng)域不同來調(diào)整參數(shù)使得達(dá)到一個(gè)很好的準(zhǔn)確度,,這里說的是要接近人類水平,。


這也就是為什么采用傳統(tǒng)的計(jì)算機(jī)視覺技術(shù)需要花費(fèi)多年時(shí)間才能打造一個(gè)好的計(jì)算機(jī)視覺系統(tǒng)(如OCR,人臉驗(yàn)證,,圖像識(shí)別,,物體檢測(cè)等),這些系統(tǒng)在實(shí)際應(yīng)用中可以處理各種各樣的數(shù)據(jù),。


有一次,,我們用了6周時(shí)間為一家公司打造了一個(gè)CNN模型,其效果更好,,采用傳統(tǒng)的計(jì)算機(jī)視覺技術(shù)要達(dá)到這樣的效果要花費(fèi)一年時(shí)間,。


傳統(tǒng)流程的另外一個(gè)問題是

它與人類學(xué)習(xí)識(shí)別物體的過程是完全不一樣的。自從出生之初,,一個(gè)孩子就可以感知周圍環(huán)境,,隨著他的成長(zhǎng),他接觸更多的數(shù)據(jù),,從而學(xué)會(huì)了識(shí)別物體,。


這是深度學(xué)習(xí)背后的哲學(xué),其中并沒有建立硬編碼的特征提取器,。它將特征提取和分類兩個(gè)模塊集成一個(gè)系統(tǒng),,通過識(shí)別圖像的特征來進(jìn)行提取并基于有標(biāo)簽數(shù)據(jù)進(jìn)行分類。


這樣的集成系統(tǒng)就是多層感知機(jī),,即有多層神經(jīng)元密集連接而成的神經(jīng)網(wǎng)絡(luò),。


一個(gè)經(jīng)典的深度網(wǎng)絡(luò)包含很多參數(shù),由于缺乏足夠的訓(xùn)練樣本,,基本不可能訓(xùn)練出一個(gè)不過擬合的模型,。


但是對(duì)于CNN模型,從頭開始訓(xùn)練一個(gè)網(wǎng)絡(luò)時(shí)你可以使用一個(gè)很大的數(shù)據(jù)集如ImageNet,。這背后的原因是CNN模型的兩個(gè)特點(diǎn):神經(jīng)元間的權(quán)重共享和卷積層之間的稀疏連接,。


這可以從下圖中看到。在卷積層,,某一個(gè)層的神經(jīng)元只是和輸入層中的神經(jīng)元局部連接,,而且卷積核的參數(shù)是在整個(gè)2-D特征圖上是共享的





為了理解CNN背后的設(shè)計(jì)哲學(xué),你可能會(huì)問:其目標(biāo)是什么,?
2


(1)準(zhǔn)確度

如果你在搭建一個(gè)智能系統(tǒng),,最重要的當(dāng)然是要盡可能地準(zhǔn)確。公平地來說,,準(zhǔn)確度不僅取決于網(wǎng)路,,也取決于訓(xùn)練樣本數(shù)量。因此,,CNN模型一般在一個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集ImageNet上做對(duì)比,。


ImageNet項(xiàng)目仍然在繼續(xù)改進(jìn),目前已經(jīng)有包含21841類的14,197,122個(gè)圖片,。自從2010年,,每年都會(huì)舉行ImageNet圖像識(shí)別競(jìng)賽,比賽會(huì)提供從ImageNet數(shù)據(jù)集中抽取的屬于1000類的120萬張圖片,。


每個(gè)網(wǎng)絡(luò)架構(gòu)都是在這120萬張圖片上測(cè)試其在1000類上的準(zhǔn)確度,。


(2)計(jì)算量


大部分的CNN模型都需要很大的內(nèi)存和計(jì)算量,特別是在訓(xùn)練過程,。因此,,計(jì)算量會(huì)成為一個(gè)重要的關(guān)注點(diǎn)。同樣地,,如果你想部署在移動(dòng)端,,訓(xùn)練得到的最終模型大小也需要特別考慮。


你可以想象到,,為了得到更好的準(zhǔn)確度你需要一個(gè)計(jì)算更密集的網(wǎng)絡(luò),。因此,準(zhǔn)確度和計(jì)算量需要折中考慮,。


除了上面兩個(gè)因素,,還有其他需要考慮的因素,如訓(xùn)練的容易度,,模型的泛化能力等,。下面按照提出時(shí)間介紹一些最流行的CNN架構(gòu),可以看到它們準(zhǔn)確度越來越高,。


AlexNet

3

[AlexNet]

http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

 是一個(gè)較早應(yīng)用在ImageNet上的深度網(wǎng)絡(luò),,其準(zhǔn)確度相比傳統(tǒng)方法有一個(gè)很大的提升。它首先是5個(gè)卷積層,,然后緊跟著是3個(gè)全連接層,,如下圖所示:

Alex Krizhevs提出的AlexNet采用了ReLU激活函數(shù),,而不像傳統(tǒng)神經(jīng)網(wǎng)絡(luò)早期所采用的Tanh或Sigmoid激活函數(shù),ReLU數(shù)學(xué)表達(dá)為:


f(x)=max(0, x)


ReLU相比Sigmoid的優(yōu)勢(shì)是其訓(xùn)練速度更快,,因?yàn)镾igmoid的導(dǎo)數(shù)在穩(wěn)定區(qū)會(huì)非常小,,從而權(quán)重基本上不再更新。這就是梯度消失問題,。因此AlexNet在卷積層和全連接層后面都使用了ReLU,。


AlexNet的另外一個(gè)特點(diǎn)是其通過在每個(gè)全連接層后面加上Dropout層減少了模型的過擬合問題。Dropout層以一定的概率隨機(jī)地關(guān)閉當(dāng)前層中神經(jīng)元激活值,,如下圖所示:



為什么Dropout有效,?


Dropout背后理念和集成模型很相似。在Drpout層,,不同的神經(jīng)元組合被關(guān)閉,,這代表了一種不同的結(jié)構(gòu),所有這些不同的結(jié)構(gòu)使用一個(gè)的子數(shù)據(jù)集并行地帶權(quán)重訓(xùn)練,,而權(quán)重總和為1,。


如果Dropout層有 n 個(gè)神經(jīng)元,那么會(huì)形成2^n個(gè)不同的子結(jié)構(gòu),。在預(yù)測(cè)時(shí),,相當(dāng)于集成這些模型并取均值。這種結(jié)構(gòu)化的模型正則化技術(shù)有利于避免過擬合,。


Dropout有效的另外一個(gè)視點(diǎn)是:由于神經(jīng)元是隨機(jī)選擇的,,所以可以減少神經(jīng)元之間的相互依賴,從而確保提取出相互獨(dú)立的重要特征,。


VGG16
4


[VGG16]

(https:///abs/1409.1556)


是牛津大學(xué)VGG組提出的,。VGG16相比AlexNet的一個(gè)改進(jìn)是采用連續(xù)的幾個(gè)3x3的卷積核代替AlexNet中的較大卷積核(11x11,5x5),。


對(duì)于給定的感受野(與輸出有關(guān)的輸入圖片的局部大?。捎枚逊e的小卷積核是優(yōu)于采用大的卷積核,,因?yàn)槎鄬臃蔷€性層可以增加網(wǎng)絡(luò)深度來保證學(xué)習(xí)更復(fù)雜的模式,,而且代價(jià)還比較小(參數(shù)更少),。

比如,,3個(gè)步長(zhǎng)為1的 3x3 卷積核連續(xù)作用在一個(gè)大小為7的感受野,其參數(shù)總量為 3*(9C^2),, 如果直接使用7x7卷積核,,其參數(shù)總量為  49C^2,這里  C 指的是輸入和輸出的通道數(shù)。


而且3x3卷積核有利于更好地保持圖像性質(zhì),。VGG網(wǎng)絡(luò)的架構(gòu)如下表所示:



可以看到VGG-D,,其使用了一種塊結(jié)構(gòu):多次重復(fù)使用同一大小的卷積核來提取更復(fù)雜和更具有表達(dá)性的特征。這種塊結(jié)構(gòu)( blocks/modules)在VGG之后被廣泛采用,。


VGG卷積層之后是3個(gè)全連接層,。網(wǎng)絡(luò)的通道數(shù)從較小的64開始,然后每經(jīng)過一個(gè)下采樣或者池化層成倍地增加,,當(dāng)然特征圖大小成倍地減小。最終其在ImageNet上的Top-5準(zhǔn)確度為92.3%,。


GoogLeNet / Inception
5


盡管VGG可以在ImageNet上表現(xiàn)很好,,但是將其部署在一個(gè)適度大小的GPU上是困難的,因?yàn)樾枰猇GG在內(nèi)存和時(shí)間上的計(jì)算要求很高,。由于卷積層的通道數(shù)過大,,VGG并不高效。


比如,,一個(gè)3x3的卷積核,,如果其輸入和輸出的通道數(shù)均為512,那么需要的計(jì)算量為9x512x512,。

在卷積操作中,,輸出特征圖上某一個(gè)位置,其是與所有的輸入特征圖是相連的,,這是一種密集連接結(jié)構(gòu),。[GoogLeNet]

https:///pdf/1409.4842v1.pdf


基于這樣的理念:在深度網(wǎng)路中大部分的激活值是不必要的(為0),或者由于相關(guān)性是冗余,。因此,,最高效的深度網(wǎng)路架構(gòu)應(yīng)該是激活值之間是稀疏連接的,這意味著512個(gè)輸出特征圖是沒有必要與所有的512輸入特征圖相連,。


存在一些技術(shù)可以對(duì)網(wǎng)絡(luò)進(jìn)行剪枝來得到稀疏權(quán)重或者連接,。但是稀疏卷積核的乘法在BLAS和CuBlas中并沒有優(yōu)化,這反而造成稀疏連接結(jié)構(gòu)比密集結(jié)構(gòu)更慢,。


據(jù)此,,GoogLeNet設(shè)計(jì)了一種稱為inception的模塊,這個(gè)模塊使用密集結(jié)構(gòu)來近似一個(gè)稀疏的CNN,,如下圖所示,。


前面說過,只有很少一部分神經(jīng)元是真正有效的,,所以一種特定大小的卷積核數(shù)量設(shè)置得非常小,。同時(shí),GoogLeNet使用了不同大小的卷積核來抓取不同大小的感受野。



Inception模塊的另外一個(gè)特點(diǎn)是使用了一中瓶頸層(實(shí)際上就是1x1卷積)來降低計(jì)算量:


> 這里假定Inception模塊的輸入為192個(gè)通道,,它使用128個(gè)3x3卷積核和32個(gè)5x5卷積核,。5x5卷積的計(jì)算量為25x32x192,但是隨著網(wǎng)絡(luò)變深,,網(wǎng)絡(luò)的通道數(shù)和卷積核數(shù)會(huì)增加,,此時(shí)計(jì)算量就暴漲了。為了避免這個(gè)問題,,在使用較大卷積核之前,,先去降低輸入的通道數(shù)。


所以,,Inception模塊中,,輸入首先送入只有16個(gè)卷積核的1x1層卷積層,然后再送給5x5卷積層,。這樣整體計(jì)算量會(huì)減少為16x192+25x32x16,。這種設(shè)計(jì)允許網(wǎng)絡(luò)可以使用更大的通道數(shù),。


(譯者注:之所以稱1x1卷積層為瓶頸層,你可以想象一下一個(gè)1x1卷積層擁有最少的通道數(shù),這在Inception模塊中就像一個(gè)瓶子的最窄處)


GoogLeNet的另外一個(gè)特殊設(shè)計(jì)是最后的卷積層后使用全局均值池化層替換了全連接層,,所謂全局池化就是在整個(gè)2D特征圖上取均值,。


這大大減少了模型的總參數(shù)量,。要知道在AlexNet中,,全連接層參數(shù)占整個(gè)網(wǎng)絡(luò)總參數(shù)的90%。使用一個(gè)更深更大的網(wǎng)絡(luò)使得GoogLeNet移除全連接層之后還不影響準(zhǔn)確度,。其在ImageNet上的top-5準(zhǔn)確度為93.3%,,但是速度還比VGG還快。


ResNet
   6

從前面可以看到,,隨著網(wǎng)絡(luò)深度增加,,網(wǎng)絡(luò)的準(zhǔn)確度應(yīng)該同步增加,當(dāng)然要注意過擬合問題,。但是網(wǎng)絡(luò)深度增加的一個(gè)問題在于這些增加的層是參數(shù)更新的信號(hào),,因?yàn)樘荻仁菑暮笙蚯皞鞑サ模黾泳W(wǎng)絡(luò)深度后,,比較靠前的層梯度會(huì)很小,。


這意味著這些層基本上學(xué)習(xí)停滯了,這就是梯度消失問題,。深度網(wǎng)絡(luò)的第二個(gè)問題在于訓(xùn)練,,當(dāng)網(wǎng)絡(luò)更深時(shí)意味著參數(shù)空間更大,優(yōu)化問題變得更難,,因此簡(jiǎn)單地去增加網(wǎng)絡(luò)深度反而出現(xiàn)更高的訓(xùn)練誤差,。


殘差網(wǎng)絡(luò) [ResNet]

https:///abs/1512.03385


設(shè)計(jì)一種殘差模塊讓我們可以訓(xùn)練更深的網(wǎng)絡(luò)


深度網(wǎng)絡(luò)的訓(xùn)練問題稱為退化問題,,殘差單元可以解決退化問題的背后邏輯在于此:想象一個(gè)網(wǎng)絡(luò)A,其訓(xùn)練誤差為x,。


現(xiàn)在通過在A上面堆積更多的層來構(gòu)建網(wǎng)絡(luò)B,,這些新增的層什么也不做,僅僅復(fù)制前面A的輸出,。這些新增的層稱為C,。


這意味著網(wǎng)絡(luò)B應(yīng)該和A的訓(xùn)練誤差一樣。那么,,如果訓(xùn)練網(wǎng)絡(luò)B其訓(xùn)練誤差應(yīng)該不會(huì)差于A,。但是實(shí)際上卻是更差,唯一的原因是讓增加的層C學(xué)習(xí)恒等映射并不容易,。


為了解決這個(gè)退化問題,,殘差模塊在輸入和輸出之間建立了一個(gè)直接連接,這樣新增的層C僅僅需要在原來的輸入層基礎(chǔ)上學(xué)習(xí)新的特征,,即學(xué)習(xí)殘差,會(huì)比較容易,。


與GoogLeNet類似,,ResNet也最后使用了全局均值池化層。利用殘差模塊,,可以訓(xùn)練152層的殘差網(wǎng)絡(luò),。其準(zhǔn)確度比VGG和GoogLeNet要高,但是計(jì)算效率也比VGG高,。152層的ResNet其top-5準(zhǔn)確度為95.51%,。


ResNet主要使用3x3卷積,這點(diǎn)與VGG類似,。在VGG基礎(chǔ)上,,短路連接插入進(jìn)入形成殘差網(wǎng)絡(luò)。如下圖所示:

殘差網(wǎng)絡(luò)實(shí)驗(yàn)結(jié)果表明:34層的普通網(wǎng)絡(luò)比18層網(wǎng)路訓(xùn)練誤差還打,,這就是前面所說的退化問題,。但是34層的殘差網(wǎng)絡(luò)比18層殘差網(wǎng)絡(luò)訓(xùn)練誤差要好。


總結(jié)
   7

隨著越來越復(fù)雜的架構(gòu)的提出,,一些網(wǎng)絡(luò)可能就流行幾年就走下神壇,,但是其背后的設(shè)計(jì)哲學(xué)卻是值得學(xué)習(xí)的。這篇文章對(duì)近幾年比較流行的CNN架構(gòu)的設(shè)計(jì)原則做了一個(gè)總結(jié),。


譯者注:可以看到,,網(wǎng)絡(luò)的深度越來越大,以保證得到更好的準(zhǔn)確度,。網(wǎng)絡(luò)結(jié)構(gòu)傾向采用較少的卷積核,,如1x1和3x3卷積核,這說明CNN設(shè)計(jì)要考慮計(jì)算效率了。


一個(gè)明顯的趨勢(shì)是采用模塊結(jié)構(gòu),,這在GoogLeNet和ResNet中可以看到,,這是一種很好的設(shè)計(jì)典范,采用模塊化結(jié)構(gòu)可以減少我們網(wǎng)絡(luò)的設(shè)計(jì)空間,,另外一個(gè)點(diǎn)是模塊里面使用瓶頸層可以降低計(jì)算量,,這也是一個(gè)優(yōu)勢(shì)。


這篇文章沒有提到的是最近的一些移動(dòng)端的輕量級(jí)CNN模型,,如MobileNet,,SqueezeNet,ShuffleNet等,,這些網(wǎng)絡(luò)大小非常小,,而且計(jì)算很高效,可以滿足移動(dòng)端需求,,是在準(zhǔn)確度和速度之間做了平衡,。




參考文獻(xiàn)
   8



http://cv-tricks.com/cnn/understand-resnet-alexnet-vgg-inception/







機(jī)器學(xué)習(xí)算法全棧工程師


                            一個(gè)用心的公眾號(hào)


長(zhǎng)按,識(shí)別,,加關(guān)注

進(jìn)群,,學(xué)習(xí),得幫助

你的關(guān)注,,我們的熱度,,

我們一定給你學(xué)習(xí)最大的幫助






公眾號(hào)商務(wù)合作請(qǐng)聯(lián)系  ???

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多