Pytorch CIFAR-10分類(GoogLeNet)

4.定義網絡(GoogLeNet)

GoogLeNet在2014年由Google團隊提出(與VGG網絡同年,注意GoogLeNet中的L大寫是爲了致敬LeNet),斬獲當年ImageNet競賽中Classification Task (分類任務) 第一名。原論文名稱是《Going deeper with convolutions》,下面是網絡結構圖。

網絡結構

說說該網絡中的亮點:

(1)引入了Inception結構(融合不同尺度的特徵信息)

(2)使用1x1的卷積核進行降維以及映射處理 (雖然VGG網絡中也有,但該論文介紹的更詳細)

(3)添加兩個輔助分類器幫助訓練

(4)丟棄全連接層,使用平均池化層(大大減少模型參數,除去兩個輔助分類器,網絡大小隻有vgg的1/20)

接着我們來分析一下Inception結構:

Inception v1網絡是一個精心設計的22層卷積網絡,並提出了具有良好局部特徵結構Inception模塊,即對特徵並行地執行多個大小不同的卷積運算與池化,最後再拼接到一起。由於1×1、3×3和5×5的卷積運算對應不同的特徵圖區域,因此這樣做的好處是可以得到更好的圖像表徵信息。爲了讓四個分支的輸出能夠在深度方向進行拼接,必須保證四個分支輸出的特徵矩陣高度和寬度都相同)。

Inception模塊如圖3.13所示,使用了三個不同大小的卷積核進行卷積運算,同時還有一個最大值池化,然後將這4部分級聯起來(通道拼接),送入下一層。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZRW1mOOx-1587022811935)(attachment:image.png)]

分支1是卷積核大小爲1x1的卷積層,stride=1,

分支2是卷積核大小爲3x3的卷積層,stride=1,padding=1(保證輸出特徵矩陣的高和寬和輸入特徵矩陣相等),

分支3是卷積核大小爲5x5的卷積層,stride=1,padding=2(保證輸出特徵矩陣的高和寬和輸入特徵矩陣相等),

分支4是池化核大小爲3x3的最大池化下采樣,stride=1,padding=1(保證輸出特徵矩陣的高和寬和輸入特徵矩陣相等)。

在上述模塊的基礎上,爲進一步降低網絡參數量,Inception又增加了多個1×1的卷積模塊。如圖3.14所示,這種1×1的模塊可以先將特徵圖降維,再送給3×3和5×5大小的卷積核,由於通道數的降低,參數量也有了較大的減少。

Inception v1網絡一共有9個上述堆疊的模塊,共有22層,在最後的Inception模塊處使用了全局平均池化。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-faSnfaHJ-1587022822327)(attachment:image.png)]

爲了避免深層網絡訓練時帶來的梯度消失問題,作者還引入了兩個輔助的分類器,在第3個與第6個Inception模塊輸出後執行Softmax並計算損失,在訓練時和最後的損失一併回傳。
接着下來在看看輔助分類器結構,網絡中的兩個輔助分類器結構是一模一樣的,如下圖所示:

網絡結構

輔助分類器:

第一層是一個平均池化下采樣層,池化核大小爲5x5,stride=3

第二層是卷積層,卷積核大小爲1x1,stride=1,卷積核個數是128

第三層是全連接層,節點個數是1024

第四層是全連接層,節點個數是1000(對應分類的類別個數)

Inception v1的參數量是AlexNet的1/12,VGGNet的1/3,適合處理大規模數據,尤其是對於計算資源有限的平臺。

Inception v2

在Inception v1網絡的基礎上,隨後又出現了多個Inception版本。Inception v2進一步通過卷積分解與正則化實現更高效的計算,增加了BN層,同時利用兩個級聯的3×3卷積取代Inception v1版本中的5×5卷積,如圖3.15所示,這種方式既減少了卷積參數量,也增加了網絡的非線性能力。

在這裏插入圖片描述

此外除了這兩個版本,這幾年還分別出了Inception v3和Inception v4。

Inception v3在Inception v2的基礎上,使用了RMSProp優化器,在輔助的分類器部分增加了7×7的卷積,並且使用了標籤平滑技術。

Inception v4則是將Inception的思想與殘差網絡進行了結合,顯著提升了訓練速度與模型準確率,這裏對於模塊細節不再展開講述。至於殘差網絡這一里程碑式的結構,正是由下一節的網絡ResNet引出的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章