博客: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
論文的主要貢獻:網絡
文中列舉了配置不一樣的5個網絡,分別命名爲A、A-LRN、B、C、D、E,網絡結構及參數量以下圖所示,性能
這些網絡配置的特色是:學習
B網絡有個特色,每2個\(3\times 3\)卷積層一組,再接maxpool。實際上,在實驗中還配置了另外一個網絡——將B的「each pair of \(3\times 3\) conv」替換爲1個\(5\times 5\)卷積層,其性能要比B差7%,因此paper認爲小卷積核深網絡要比大卷積核淺網絡好。測試
paper中的實驗均在上述網絡中進行,下面具體看一下。spa
在訓練階段,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,
上面的對比實驗,可得出如下結論:
對於multi scale對性能的改善,想來也是合理的,由於圖像中目標的尺寸並不肯定,有大有小,在訓練階段經過scale jittering來增廣數據,可以讓網絡在必定程度上cover這種變化,而在預測階段,multi scale能夠當作在輸入數據上作的集成學習,亦是提高性能的常規操做。
論文中還有一些其餘有意思的點,簡單總結以下,
以上。