GoogleNet-InceptionNet(v1,v2,v3,v4)

  • 2012年,Alex Krizhevsky、Ilya Sutskever在多倫多大學(xué)Geoff Hinton的實(shí)驗(yàn)室設(shè)計(jì)出了一個(gè)深層的卷積神經(jīng)網(wǎng)絡(luò)AlexNet,奪得了2012年ImageNet LSVRC的冠軍,且準(zhǔn)確率遠(yuǎn)超第二名(top5錯(cuò)誤率為15.3%,第二名為26.2%),引起了很大的轟動(dòng)。AlexNet可以說(shuō)是具有歷史意義的一個(gè)網(wǎng)絡(luò)結(jié)構(gòu),在此之前,深度學(xué)習(xí)已經(jīng)沉寂了很長(zhǎng)時(shí)間,自2012年AlexNet誕生之后,后面的ImageNet冠軍都是用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來(lái)做的,并且層次越來(lái)越深,使得CNN成為在圖像識(shí)別分類的核心算法模型,帶來(lái)了深度學(xué)習(xí)的大爆發(fā)。
  • 隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,有不可避免的帶來(lái)過(guò)擬合和計(jì)算量增大的困擾,谷歌團(tuán)隊(duì)為了減少計(jì)算量和避免過(guò)擬合,提出了Inception模型,也叫作 GoogLeNet。并在2014年,ImageNet挑戰(zhàn)賽(ILSVRC14)中,GoogLeNet獲得了第一名。GoogLeNet模型結(jié)構(gòu)的特點(diǎn)是網(wǎng)絡(luò)層數(shù)更深了。隨著谷歌團(tuán)隊(duì)的研究,Inception歷經(jīng)了V1、V2、V3、V4等多個(gè)版本的發(fā)展,并不斷趨于完善,下面簡(jiǎn)要概述。

GoogleNet 模型

為什么增加神經(jīng)網(wǎng)絡(luò)的層數(shù),會(huì)帶來(lái)計(jì)算量大和過(guò)擬合的問(wèn)題?

  • 一般來(lái)說(shuō),提升網(wǎng)絡(luò)性能最直接的辦法就是增加網(wǎng)絡(luò)深度和寬度,深度指網(wǎng)絡(luò)層次數(shù)量、寬度指神經(jīng)元數(shù)量。但這種方式存在以下問(wèn)題:
    • (1)參數(shù)太多,如果訓(xùn)練數(shù)據(jù)集有限,很容易產(chǎn)生過(guò)擬合;
    • (2)網(wǎng)絡(luò)越大、參數(shù)越多,計(jì)算復(fù)雜度越大;
    • (3)網(wǎng)絡(luò)越深,容易出現(xiàn)梯度消失的問(wèn)題。
  • 因此Inception 以降低參數(shù)量為目的,設(shè)計(jì)了一個(gè)稀疏網(wǎng)絡(luò)結(jié)構(gòu),但是能夠產(chǎn)生稠密的數(shù)據(jù),既能增加神經(jīng)網(wǎng)絡(luò)表現(xiàn),又能保證計(jì)算資源使用效率的網(wǎng)絡(luò)結(jié)構(gòu)。

模型結(jié)構(gòu)

2019120501.jpg

模型結(jié)構(gòu)的特點(diǎn):

  • 首先將卷積核分組處理,也就是將多個(gè)小尺寸的卷積核和一個(gè)池化操作,其目的是降低其維度,計(jì)算起來(lái)更加容易。將多個(gè)卷積核和一個(gè)池化進(jìn)行堆疊(要處理成卷積、池化后的尺寸相同,然后將通道相加)。一方面增加了網(wǎng)絡(luò)的寬度,另一方面同時(shí)網(wǎng)絡(luò)中的卷積的大小不一樣,可以增加網(wǎng)絡(luò)對(duì)不同尺度的適應(yīng)性。

模型結(jié)構(gòu)的缺點(diǎn)

  • GoogleNet雖然降低了維度,計(jì)算更加容易了,但是缺點(diǎn)是每一層的卷積都是上一層的輸出所得來(lái)的,這就使最后一層的卷積所需要的的計(jì)算量變得非常大,因此谷歌對(duì)其進(jìn)行了改善,有了正式版的 Inception-V1模型。

Inception-V1

模型結(jié)構(gòu)

2019120503.jpg

參數(shù)詳情

2019120504.png
  • 注:上表中的“#3x3 reduce”,“#5x5 reduce”表示在3x3,5x5卷積操作之前使用了1x1卷積的數(shù)量。

模型結(jié)構(gòu)的特點(diǎn):

  • 第一:相對(duì)于 GoogleNet 模型 Inception-V1在非1×1的卷積核前增加了1×1的卷積操作,用來(lái)降低feature map通道的作用,這也就形成了Inception-V1的網(wǎng)絡(luò)結(jié)構(gòu)。
  • 第二:網(wǎng)絡(luò)最后采用了average pooling來(lái)代替全連接層,事實(shí)證明這樣可以提高準(zhǔn)確率0.6%。但是,實(shí)際在最后還是加了一個(gè)全連接層,主要是為了方便對(duì)輸出進(jìn)行靈活調(diào)整。
  • 第三:雖然移除了全連接,但是網(wǎng)絡(luò)中依然使用了Dropout。
  • 第四:為了避免梯度消失,網(wǎng)絡(luò)額外增加了2個(gè)輔助的softmax用于向前傳導(dǎo)梯度(輔助分類器)。輔助分類器是將中間某一層的輸出用作分類,并按一個(gè)較小的權(quán)重(0.3)加到最終分類結(jié)果中,這樣相當(dāng)于做了模型融合,同時(shí)給網(wǎng)絡(luò)增加了反向傳播的梯度信號(hào),也提供了額外的正則化,對(duì)于整個(gè)網(wǎng)絡(luò)的訓(xùn)練不僅提高了模型的準(zhǔn)確性還極大的減少了參數(shù)的數(shù)量。

1×1的卷積核的作用?

  • 1×1的卷積核和正常的卷積核完全是一樣的,只不過(guò)它不再感受一個(gè)局部區(qū)域,不考慮像素與像素之間的關(guān)系。1×1的卷積本身就是不同feature channel的線性疊加,從而整合了不同通道間的信息。從上面的圖,我們可以知道網(wǎng)絡(luò)結(jié)構(gòu)的參數(shù)和通道數(shù)目。
    • 原始結(jié)構(gòu):
      • 參數(shù):(1×1×192×64) + (3×3×192×128) + (5×5×192×32) = 153600
      • 通道數(shù):64+128+32+192 = 416
    • 加入1×1卷積后:
      • 參數(shù):1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32)=15872
      • 通道數(shù): 64+128+32+32=256
  • 1×1的卷積核可以實(shí)現(xiàn)通道數(shù)量的升維和降維,并且是低成本的特征變換。上面的計(jì)算對(duì)比,發(fā)現(xiàn)影響參數(shù)數(shù)目,主要是大尺寸的卷積核(上面的5×5),如果5×5的卷積核的通道數(shù)很大時(shí),可以很明顯的降低參數(shù)數(shù)目。

1×1的卷積核可以降低參數(shù)和改變通道數(shù)目,為何不大量采用1×1的卷積核

  • 我們一層可能會(huì)有多個(gè)卷積核,在同一個(gè)位置但在不同通道的卷積核輸出結(jié)果相關(guān)性極高。一個(gè)1×1的卷積核可以很自然的把這些相關(guān)性很高,在同一個(gè)空間位置,但不同通道的特征結(jié)合起來(lái)。而其它尺寸的卷積核(比如3×3,5×5)可以保證特征的多樣性,因此也可以適量使用。

  • 在inception module中,通常1×1的卷積比例(輸出通道占比)最高,3×3和5×5的卷積稍低。在整個(gè)網(wǎng)絡(luò)中,會(huì)有多個(gè)堆疊的inception module,希望靠后的inception module可以捕捉更高階的抽象特征,因此靠后的inception module中,大的卷積應(yīng)該占比變多。

Inception-V2

  • GoogLeNet設(shè)計(jì)的初衷就是要又準(zhǔn)又快,而如果只是單純的堆疊網(wǎng)絡(luò)雖然可以提高準(zhǔn)確率,但是會(huì)導(dǎo)致計(jì)算效率有明顯的下降,所以如何在不增加過(guò)多計(jì)算量的同時(shí)提高網(wǎng)絡(luò)的表達(dá)能力就成為了一個(gè)問(wèn)題。Inception V2版本的解決方案就是修改Inception的內(nèi)部計(jì)算邏輯,提出了比較特殊的“卷積”計(jì)算結(jié)構(gòu)。
  • Inception-V2 論文地址

參數(shù)詳情

2019120506.jpg

模型結(jié)構(gòu)特點(diǎn)

  • 第一:Inception V2吸收了VGGNet的優(yōu)點(diǎn),利用多個(gè)小尺度卷積代替一個(gè)大尺度卷積,節(jié)省計(jì)算量。
  • 第二:引入BN(Batch Normalization)避免梯度消失(inception V1中使用多個(gè)中間層loss,避免梯度消失)。
    • BN是一種非常有效的正則化方法,可以讓大型卷積網(wǎng)絡(luò)的訓(xùn)練速度加快,同時(shí)分類準(zhǔn)確率也可以得到提高。
    • BN可以降低網(wǎng)絡(luò)對(duì)初始化權(quán)重的不敏感。
    • BN在用于神經(jīng)網(wǎng)絡(luò)某層時(shí),會(huì)對(duì)每一個(gè)mini-batch數(shù)據(jù)的內(nèi)部進(jìn)行標(biāo)準(zhǔn)化處理,使得輸出為N(0,1)的正態(tài)分布,減少了內(nèi)部神經(jīng)元分布的改變。
    • BN的論文中提出,傳統(tǒng)的深度網(wǎng)絡(luò)再訓(xùn)練時(shí),每一層的輸入的分布都在變化,導(dǎo)致訓(xùn)練變得困難,我們只能使用一個(gè)很小的學(xué)習(xí)速率解決這個(gè)問(wèn)題。而對(duì)每一層使用BN之后,我們就可以有效的解決這個(gè)問(wèn)題,學(xué)習(xí)速率可以增大很多倍,達(dá)到之前的準(zhǔn)確率所需要的迭代次數(shù)只有1/4,訓(xùn)練時(shí)間大大縮短。而且還可以繼續(xù)訓(xùn)練,最終超過(guò)Inception V1。
    • BN使訓(xùn)練更快,可以減少數(shù)據(jù)增強(qiáng)過(guò)程中對(duì)數(shù)據(jù)的光學(xué)畸形,每個(gè)樣本被訓(xùn)練的次數(shù)更少,因此更真實(shí)的樣本對(duì)訓(xùn)練更有幫助。
  • 第三:去除Dropout并減輕L2正則化,因?yàn)锽N已經(jīng)起到正則化的作用。
  • 第四:去除 LRN(Local Response Normalization)即局部響應(yīng)歸一化,LRN函數(shù)最早的出處AlexNet,其類似Dropout的功能,其防止數(shù)據(jù)過(guò)擬合而提出的一種處理方法。關(guān)于LRN在AlexNet中,再詳細(xì)介紹。
  • 在使用這些措施之后,Inception V2再達(dá)到Inception V1的準(zhǔn)確率時(shí)快了14倍,并且模型在收斂時(shí)準(zhǔn)確率的上限更高。

卷積分解(Factorizing Convolutions)

  • 大尺寸的卷積核可以帶來(lái)更大的感受野,但也意味著會(huì)產(chǎn)生更多的參數(shù)。GoogLeNet團(tuán)隊(duì)提出可以用2個(gè)連續(xù)的3x3卷積層組成的小網(wǎng)絡(luò)來(lái)代替單個(gè)的5x5卷積層,即在保持感受野范圍的同時(shí)又減少了參數(shù)量。如此可以有效地只使用約(3x3 + 3x3)/(5x5)=72%的計(jì)算開(kāi)銷。
  • 一個(gè)5×5的卷積核可以由兩個(gè)3×3的卷積核的表示。如下圖:


    2019120507.png
  • 我們可以在inception v1中所用的 inception_block 升級(jí)為了如下一種新的形式。


    2019120508.jpg

Inception-V3

參數(shù)詳情

2019120515.png
  • 注:上表中的Figure 5指沒(méi)有進(jìn)化的Inception,F(xiàn)igure 6是指小卷積版的Inception(用3x3卷積核代替5x5卷積核),F(xiàn)igure 7是指不對(duì)稱版的Inception(用1xn、nx1卷積核代替nxn卷積核).

模型結(jié)構(gòu)特點(diǎn)

  • 第一:將對(duì)稱的conv計(jì)算分解為非對(duì)稱的conv計(jì)算
    • 引入了Factorization into small convolution的思想,將一個(gè)較大的二維卷積拆成兩個(gè)較小的一維卷積.將7×7分解成兩個(gè)一維的卷積(1×7,7×1),3×3也是一樣(1×3,3×1),這樣的好處,既可以加速計(jì)算,又可以將1個(gè)卷積拆成2個(gè)卷積,使得網(wǎng)絡(luò)深度進(jìn)一步增加,增加了網(wǎng)絡(luò)的非線性(每增加一層都要進(jìn)行ReLU)。這種非對(duì)稱的卷積結(jié)構(gòu)拆分,其結(jié)果比拆成幾個(gè)相同的小卷積效果更明顯,可以處理更多、更豐富的空間特征,增加特征多樣性。如下圖


      2019120509.jpg
  • 第二:優(yōu)化了Inception Module的結(jié)構(gòu)
    • 現(xiàn)在Inception Module有35×35、17×17、8×8三種結(jié)構(gòu),如下圖所示。這些Inception Module 只在網(wǎng)絡(luò)的后部出現(xiàn),前部還是普通的卷積層。并且Inception V3除了在Inception Module中使用了分支,還在分支中使用了分支(8×8的結(jié)構(gòu)中),可以說(shuō)是Network in Network in Network。


      2019120510.jpg
2019120511.jpg
  • 第三:增加的分類層的作用分析
    • 在inception v1中,作者為了減少深度模型中反向傳播時(shí)梯度消失的問(wèn)題,而提出了在模型的中間與較底部增加了兩個(gè)extra 分類loss層的方案。在inception v2中,作者同樣使用了extra 分類 loss層。不過(guò)他們反思了之前說(shuō)過(guò)的話,覺(jué)著不大對(duì)了,果斷以今日之我否定了昨日之我。他們現(xiàn)在(當(dāng)時(shí)是2015年)覺(jué)著extra 分類 loss的真正意義在于對(duì)訓(xùn)練參數(shù)進(jìn)行regularization。為此他們?cè)囍谶@些extra 分類 loss的FC層里添加了BN或者dropout層,果然發(fā)現(xiàn)分類結(jié)果好了些,于是就興沖沖地發(fā)布了這一‘重大’最新發(fā)現(xiàn)。


      2019120512.jpg
  • 第四:更高效的下采樣方案
    • 深度CNN網(wǎng)絡(luò)中一般會(huì)不斷使用Pool層來(lái)減少feature maps size。這必然意味著傳遞信息的不斷丟失。一般為了減少信息的過(guò)度丟失,在加入Pool層減少feature maps size的同時(shí)都會(huì)同比例擴(kuò)大它的channels數(shù)目(此一思想與做法可在VGG網(wǎng)絡(luò)中明顯看到,亦已被所有的CNN網(wǎng)絡(luò)設(shè)計(jì)所遵循)。

    • 真正實(shí)行可以有兩個(gè)辦法。

      • 左圖。第一種是先做Pooling減少feature map size,然后再使用1x1 conv對(duì)其channels數(shù)目放大,不過(guò)顯然首先使用Pooling的話會(huì)造成信息硬性丟失的不可避免。即違反了神經(jīng)網(wǎng)絡(luò)一般設(shè)計(jì)原則的代表性瓶頸。關(guān)于此原則原文是這樣表述的【Avoid representational bottlenecks, especially early in the network. Feed-forward networks can be represented by an acyclic graph from the input layer(s) to the classifier or regressor. This defines a clear direction for the information flow. For any cut separating the inputs from the outputs, one can access the amount of information passing though the cut. One should avoid bottlenecks with extreme compression. In general the representation size should gently decrease from the inputs to the outputs before reaching the final representation used for the task at hand. Theoretically, information content can not be assessed merely by the dimensionality of the representation as it discards important factors like correlation structure; the dimensional ity merely provides a rough estimate of information content.】
      • 右圖。第二種將channels數(shù)目擴(kuò)大(一般使用1x1 conv),然后再使用pool層來(lái)減少feature map size,不過(guò)其中1x1 conv的計(jì)算顯然會(huì)有非常大的計(jì)算開(kāi)銷。


        2019062213.png
    • Goole團(tuán)隊(duì)的方法。即分別使用pool與conv直接減少feature map size,然后再將兩者算出的feature maps組合起來(lái)。下圖所示:


      2019120514.jpg

Inception-V4

殘差連接(Residual Connection)

  • Residual connection 已被證明了利用信號(hào)的加和合并既可用于圖像識(shí)別,又可用于對(duì)象檢測(cè)。作者認(rèn)為,殘差連接本質(zhì)上是訓(xùn)練非常深的卷積模型所必需的。


    2019120516.jpg

模型結(jié)構(gòu)

  • Inception V4主要利用殘差連接(Residual Connection)來(lái)改進(jìn)V3結(jié)構(gòu),得到Inception-ResNet-v1,Inception-ResNet-v2,Inception-v4網(wǎng)絡(luò)。
  • 在inception網(wǎng)絡(luò)設(shè)計(jì)中,最開(kāi)始的幾層總是不建議使用inception等模塊來(lái)節(jié)省計(jì)算以抽取信息的,因此它們多是只采用簡(jiǎn)單的conv層或者相對(duì)簡(jiǎn)單的inception模塊。見(jiàn)下圖


    2019120517.jpg
  • Inception-v4網(wǎng)絡(luò)的總體架構(gòu),見(jiàn)下圖


    2019120518.jpg
  • 細(xì)節(jié),見(jiàn)下圖Figures 3, 4, 5, 6, 7 and 8。


    2019120519.jpg
2019120520.jpg
2019120521.jpg
2019120522.jpg
2019120523.jpg
  • 在論文中,還有一些利用residual修改的Inception-ResNet-v1 ,Inception-ResNet-v2 ,這里就不在啰嗦了,可以閱讀原論文。

總結(jié)

  • Inception V1——構(gòu)建了1x1、3x3、5x5的 conv 和3x3的 pooling 的分支網(wǎng)絡(luò)module,同時(shí)使用MLPConv和全局平均池化,擴(kuò)寬卷積層網(wǎng)絡(luò)寬度,增加了網(wǎng)絡(luò)對(duì)尺度的適應(yīng)性;
  • Inception V2——提出了Batch Normalization,代替Dropout和LRN,其正則化的效果讓大型卷積網(wǎng)絡(luò)的訓(xùn)練速度加快很多倍,同時(shí)收斂后的分類準(zhǔn)確率也可以得到大幅提高,同時(shí)借鑒VGGNet使用兩個(gè)3x3的卷積核代替5x5的卷積核,在降低參數(shù)量同時(shí)提高網(wǎng)絡(luò)學(xué)習(xí)能力;
  • Inception V3——引入了 Factorization,將一個(gè)較大的二維卷積拆成兩個(gè)較小的一維卷積,比如將3x3卷積拆成1x3卷積和3x1卷積,一方面節(jié)約了大量參數(shù),加速運(yùn)算并減輕了過(guò)擬合,同時(shí)增加了一層非線性擴(kuò)展模型表達(dá)能力,除了在 Inception Module 中使用分支,還在分支中使用了分支(Network In Network In Network);
  • Inception V4——研究了 Inception Module 結(jié)合 Residual Connection,結(jié)合 ResNet 可以極大地加速訓(xùn)練,同時(shí)極大提升性能,在構(gòu)建 Inception-ResNet 網(wǎng)絡(luò)同時(shí),還設(shè)計(jì)了一個(gè)更深更優(yōu)化的 Inception v4 模型,能達(dá)到相媲美的性能。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容