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

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

GoogleNet 模型

為什么增加神經網絡的層數,會帶來計算量大和過擬合的問題?

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

模型結構

2019120501.jpg

模型結構的特點:

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

模型結構的缺點

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

Inception-V1

模型結構

2019120503.jpg

參數詳情

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

模型結構的特點:

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

1×1的卷積核的作用?

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

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

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

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

Inception-V2

  • GoogLeNet設計的初衷就是要又準又快,而如果只是單純的堆疊網絡雖然可以提高準確率,但是會導致計算效率有明顯的下降,所以如何在不增加過多計算量的同時提高網絡的表達能力就成為了一個問題。Inception V2版本的解決方案就是修改Inception的內部計算邏輯,提出了比較特殊的“卷積”計算結構。
  • Inception-V2 論文地址

參數詳情

2019120506.jpg

模型結構特點

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

卷積分解(Factorizing Convolutions)

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


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


    2019120508.jpg

Inception-V3

參數詳情

2019120515.png
  • 注:上表中的Figure 5指沒有進化的Inception,Figure 6是指小卷積版的Inception(用3x3卷積核代替5x5卷積核),Figure 7是指不對稱版的Inception(用1xn、nx1卷積核代替nxn卷積核).

模型結構特點

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


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


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


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

    • 真正實行可以有兩個辦法。

      • 左圖。第一種是先做Pooling減少feature map size,然后再使用1x1 conv對其channels數目放大,不過顯然首先使用Pooling的話會造成信息硬性丟失的不可避免。即違反了神經網絡一般設計原則的代表性瓶頸。關于此原則原文是這樣表述的【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數目擴大(一般使用1x1 conv),然后再使用pool層來減少feature map size,不過其中1x1 conv的計算顯然會有非常大的計算開銷。


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


      2019120514.jpg

Inception-V4

殘差連接(Residual Connection)

  • Residual connection 已被證明了利用信號的加和合并既可用于圖像識別,又可用于對象檢測。作者認為,殘差連接本質上是訓練非常深的卷積模型所必需的。


    2019120516.jpg

模型結構

  • Inception V4主要利用殘差連接(Residual Connection)來改進V3結構,得到Inception-ResNet-v1,Inception-ResNet-v2,Inception-v4網絡。
  • 在inception網絡設計中,最開始的幾層總是不建議使用inception等模塊來節省計算以抽取信息的,因此它們多是只采用簡單的conv層或者相對簡單的inception模塊。見下圖


    2019120517.jpg
  • Inception-v4網絡的總體架構,見下圖


    2019120518.jpg
  • 細節,見下圖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 ,這里就不在啰嗦了,可以閱讀原論文。

總結

  • Inception V1——構建了1x1、3x3、5x5的 conv 和3x3的 pooling 的分支網絡module,同時使用MLPConv和全局平均池化,擴寬卷積層網絡寬度,增加了網絡對尺度的適應性;
  • Inception V2——提出了Batch Normalization,代替Dropout和LRN,其正則化的效果讓大型卷積網絡的訓練速度加快很多倍,同時收斂后的分類準確率也可以得到大幅提高,同時借鑒VGGNet使用兩個3x3的卷積核代替5x5的卷積核,在降低參數量同時提高網絡學習能力;
  • Inception V3——引入了 Factorization,將一個較大的二維卷積拆成兩個較小的一維卷積,比如將3x3卷積拆成1x3卷積和3x1卷積,一方面節約了大量參數,加速運算并減輕了過擬合,同時增加了一層非線性擴展模型表達能力,除了在 Inception Module 中使用分支,還在分支中使用了分支(Network In Network In Network);
  • Inception V4——研究了 Inception Module 結合 Residual Connection,結合 ResNet 可以極大地加速訓練,同時極大提升性能,在構建 Inception-ResNet 網絡同時,還設計了一個更深更優化的 Inception v4 模型,能達到相媲美的性能。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容