GoogLeNet Inception V1:Going deeper with convolutions論文筆記

論文地址:Going deeper with convolutions

前言

在ILSVRC2014上最耀眼的除了VGG,那就非GoogLeNet莫屬了,它與VGG類似的地方就是,關注於模型的深度,使模型傾向於deeper,與VGG不同的是,它的嘗試更加新穎。從2014年至今,GoogLeNet經歷了Inception v1到v4,以及Inception-ResNet的發展,也證明了Inception最初思想的潛力。今天我們就來看看GoogLeNet Inception V1的框架和效果。

思想

GoogLeNet的思想動機也是增加模型的規模:深度,和寬度。同樣的是,更大的模型意味着更多的參數,計算資源的消耗增加,模型也更容易過擬合,因此並不能盲目的增加模型的規模。

改進

深度,必須增加。那麼爲了較少模型複雜度,就只能在模型的寬度上做文章。VGG的做法是將每一層的濾波器尺寸都換成3×3 來減少模型的寬度,也證明具有很好的效果。Inception的做法就是將卷積層的完全連接變成稀疏連接,而且受到生物神經學的啓發,利用多個大小不一致的濾波器,在多個尺度上來提取特徵,然後再連接到一個共同的輸出,這樣一方面在不增加參數量的前提下增加了網絡的寬度,另一方面也增加了網絡對多個尺度的適應性。通過對Inception進行堆疊,構成了一個含有22個權重層的GoogLeNet。

框架結構

對於每一個Inception模塊,包含有1×13×35×5 的三個濾波器,以及一個並行的最大池化層,最後在將輸出連接成一個輸出向量。模塊構成如下:
這裏寫圖片描述
隨着層數的加深,feature map中特徵的空間集中度會下降,因此需要更多的3×35×5 的濾波器,而這樣會導致參數量變得非常大。
因而作者提出了一種新的結構,在3×35×5 的濾波器前使用1×1 的濾波器來進行降維,例如,假設原始結構爲1×1×192×64+3×3×192×128+5×5×192×32(height×width×input×output),而在3×3和5×5卷積層前分別加入了通道數爲96和16的1×1卷積層,這樣卷積核參數就變成了1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),這樣就將模型參數減少到原來的三分之一左右。同樣的爲了減少維度,在pooling層之後也使用1×1 的濾波器來進行降維。並且除了降維的功能,1×1 的濾波器還可以用來進行修正線性激活。因此改進後的Inception模塊如下:
這裏寫圖片描述
整個GoogLeNet的框架如下:
這裏寫圖片描述
模型的參數如下:
這裏寫圖片描述
我們發現在Inception4(a)和Inception4(d)中,使用了輔助分類器,作者希望利用中間層的特徵來增加底層的判別性,利用輔助分類器來增加反向傳播的信號,來增加額外的正則化(輔助分類器在測試階段並不使用)。

對於整個GoogLeNet模型,雖然總共有22層,但是參數數量卻只是8層的AlexNet的十二分之一。

實驗結果

分類任務上與state of the art的比較
這裏寫圖片描述
GoogLeNet 不同版本的性能:
這裏寫圖片描述
檢測任務上與state of the art的比較:
這裏寫圖片描述
單模型檢測的性能:
這裏寫圖片描述

總結

本文在模型結構上進行了非常大膽新穎的嘗試,在提高模型層次的基礎上,使用稀疏結構來減少模型複雜度,以提高模型的性能。結果也證明了這個方法是非常具有研究價值的。

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