經典 CNN 模型整理 (04) - GoogLeNet (Inception)
本篇為 GoogLeNet (Inception) 的重點整理筆記
Oct 21, 2020
本系列將整理一些經典 CNN 模型的重點,目的是讓讀者和自己可以在最短的時間內回想起被遺忘的記憶,比較不熟悉的朋友也可以用重點去搭配論文幫助消化!
上一篇:VGGNet
<Going deeper with convolutions> Szegedy et al., 2014.
此模型在 2014 年 ImageNet 競賽拿到分類項目冠軍,其模型比 VGG-19 深(有 22 層)但參數量又比其小數十倍。
要提升深度學習準確率最直接的方法是增加模型尺寸,但也帶來兩個缺點-更容易過擬合及計算需求的增加。基本的解法是使用稀疏矩陣取代全連階層,但由於現今的運算多針對密集矩陣做優化故效果有限,因此優化方向朝向將稀疏矩陣聚類為相對密集子矩陣,為此 Google 團隊在本篇中提出了 Inception 架構【如圖一】,整理其重點如下:
- 多尺寸-使用 1 x 1、 3 x 3 卷積、 5 x 5 卷積、 3 x 3 池化【如圖一(a)】。
- 使用 1 x 1 卷積核-主要目的是作為降維模組來免去運算瓶頸,其運作方法為以單通道圖像為單位做 1 x 1 卷積再以通道方向相加【如圖二】,輸入影像的通道數決定 1 x 1 卷積的通道數,而 1 x 1 卷積的數量則決定輸出影像的通道數(維度),論文裡就接在 3 x 3 卷積和 5 x 5 卷積前面來降低運算量【如圖一(b)】,順帶一提所有卷積核後都有使用 ReLU。
- Global Average Pooling-(在本篇論文中叫 Average Pooling)出自<Network In Network>,就是把每個 H x W x D 特徵圖中每張 H x W 取平均轉為 1 x 1 x D【如圖三】,用其取代全連階層,能減少參數抗過擬合,但仍然使用 dropout ,後面也還是有全連階層方便調整輸出。
- 輔助分類器(Auxiliary Classifiers)-由於網路架構較深,在相對較淺的位置已經能有不錯的結果了,故訓練時在 Inception(4a)和(4d)處加上分類器【如圖四】,並乘上 0.3 使其影響小於最後分類器,在推論階段則不使用,順帶一提這也是一種深監督的方法。
感謝觀看,有任何問題歡迎留言討論或連繫我,祝有個愉快的一天😉