VGG(2014),3x3卷積的勝利

博客:blog.shinelee.me | 博客園 | CSDNgit

寫在前面

VGG(2014)網絡出自paper《Very Deep Convolutional Networks for Large-Scale Image Recognition》,爲ILSVRC2014 localization冠軍和classification亞軍方法(冠軍爲GoogLeNet),首次提交arXiv時間爲2014年9月,後發表在ICLR2015,截止20191011引用量達27612。由於出自牛津大學Visual Geometry Group,因此網絡被命名爲VGG,根據層數不一樣,又分爲VGG1六、VGG19等。github

VGG citations

論文的主要貢獻:網絡

  • 探究了網絡深度對性能的影響,經過疊加捲積層來增長深度,性能變好——「Our results yet again confirm the importance of depth in visual representations」。
  • 只使用\(3\times 3\)的卷積核,經過多個\(3 \times 3\)卷積層疊加來得到與大卷積核相同的感覺野,同時引入更多的非線性,減小了參數。如有\(C\)個channel,3個\(3\times 3\)的卷積層參數量爲\(3(3^2C^2)=27C^2\),1個\(7\times 7\)卷積層的參數量爲\(7^2C^2=49C^2\),二者的感覺野相同。

網絡結構

文中列舉了配置不一樣的5個網絡,分別命名爲A、A-LRN、B、C、D、E,網絡結構及參數量以下圖所示,性能

VGG configurations

這些網絡配置的特色是:學習

  • A-LRN與A相比,僅在第一個卷積層後加入LRN層,A和A-LRN含可學習參數的層數均爲11層
  • B比A多了2個\(3 \times 3\)卷積層,爲13層
  • C比B多了3個\(1\times 1\)卷積層,爲16層
  • D將C的3個\(1\times 1\)卷積層替換爲\(3\times 3\)卷積層,仍爲16層
  • E在D的基礎上又增長了3個\(3\times 3\)卷積層,爲19層
  • 每次maxpool後,feature map尺寸減半,緊隨其後的卷積層會將feature map的數量加倍,64→128→256→512

B網絡有個特色,每2個\(3\times 3\)卷積層一組,再接maxpool。實際上,在實驗中還配置了另外一個網絡——將B的「each pair of \(3\times 3\) conv」替換爲1個\(5\times 5\)卷積層,其性能要比B差7%,因此paper認爲小卷積核深網絡要比大卷積核淺網絡好測試

paper中的實驗均在上述網絡中進行,下面具體看一下。spa

multi-scale training and testing

在訓練階段,VGG的輸入固定爲\(224\times 224\),對尺寸不一樣的圖像須要先scale再crop到\(224\times 224\),理論上只須要將圖像最短的邊scale到大於等於224便可進行crop,paper中設置了2種scale方式,第一種scale到256或384,第二種隨機scale到\([256, 512]\)之間——384剛好位於256和512的中間,作了對比實驗。.net

測試階段,再也不進行crop操做,而是採用了Overfeat中的一個技巧,將網絡最後的3個全鏈接層在實現上轉化成卷積層,以適應不一樣尺寸的輸入,這個技巧在paper中稱之爲dense全鏈接層的運算方式是輸入向量與權重矩陣相乘,當權重矩陣的尺寸肯定了,輸入向量的長度就不可改變了,而卷積的運算方式是權重在輸入上滑動內積,因此只須要輸入的尺寸大於kernel的窗口便可。具體地,若是輸入剛好爲\(224\times 224\),經歷過5次maxpool後,feature map尺寸變爲\(7 \times 7\),當輸入尺寸大於224時,這個feature map將大於等於\(7\times 7\)。將3個全鏈接層依次轉化爲\(7\times 7\)卷積和2個\(1\times 1\)卷積,這種轉化並不改變權重,只是實現方式上的變化,此時整個網絡爲全卷積網絡。若是輸入圖像大於\(224\times 224\),網絡最後輸出的class score map將大於\(1000 \times 1\),爲了獲得固定長度爲1000的class score vetor,只需將其進行spatially average(sum-pooled),而後再softmax。更多能夠參見Converting Fully-Connected Layers to Convolutional Layers的解釋。orm

預測階段的multi scale,即將輸入圖像作不一樣scale,分別輸入網絡,對預測結果取平均。

下圖分別爲single scale和mutiple scale測試的結果,測試庫爲ILSVRC-2012 dataset,

single test scale

multiple test scales

上面的對比實驗,可得出如下結論:

  • 隨着深度增長,性能變好
  • 與A相比,A-LRN性能沒有改善,LRN用途不大
  • 不管是training仍是testing,multiple scale均能改善性能,二者結合使用效果更佳
  • 在當前數據集和網絡結構配置上,VGG16(D)和VGG19(E)性能基本同樣,接近飽和

對於multi scale對性能的改善,想來也是合理的,由於圖像中目標的尺寸並不肯定,有大有小,在訓練階段經過scale jittering來增廣數據,可以讓網絡在必定程度上cover這種變化,而在預測階段,multi scale能夠當作在輸入數據上作的集成學習,亦是提高性能的常規操做。

其餘有意思的點

論文中還有一些其餘有意思的點,簡單總結以下,

  • 爲了網絡能正常收斂,權重的初始化很重要,原來是先訓練淺層網絡A,而後用A的權重初始化後面深層網絡前4個卷積層和最後3個全鏈接層,其餘層從高斯分佈中隨機初始化。在paper submission後發現,直接採用Understanding the difficulty of training deep feedforward neural networks中的初始化方法就能夠,即Xavier方法
  • paper中評論,由於A-LRN中的Local Response Normalisation(LRN)沒有效果,還增長了內存使用和計算量,因此後面的BCDE網絡就不用了(微笑)。
  • 在ILSVRC-2014 challenge中,VGG提交的是7模型融合結果,提交後他們測試2模型的融合結果要更好,top1 val好1%,top5 val好0.5%,不過是在multi-scale traing、multi-crop和dense一塊兒加成下取得的結果。
  • VGG (1 net, multi-crop & dense eval) 單網絡比GoogLeNet單網絡的性能要好約1%。
  • 2014年,ImageNet競賽Top5錯誤率首次進入0~10%區間。

以上。

參考

相關文章
相關標籤/搜索