經典分類網絡系列文章鏈接:
VGG全文翻譯移步:https://blog.csdn.net/weixin_34910922/article/details/107050556
2014年提出VGG-Net網絡。研究了卷積網絡深度對大尺度圖像識別精度的影響,更深的網絡能提高性能。之前的改進:更小的接受窗口、較小的步幅。ImageNet Challenge 2014定位和分類過程中分別獲得了第一名和第二名。
1、特性/貢獻
1、相比AlexNet及13年方法,使用了更小的感受窗口尺寸和更小的第一卷積層步長,將深度推到16-19加權層可以實現對現有技術配置的顯著改進;
2、相比AlexNet及13年方法,在整個圖像和多個尺度上對網絡進行密集地訓練和測試(之前是單個尺度剪裁);
3、最早的一批,給出不同深度卷積網絡結構性能對比實驗方式,卷積網絡結構設計優化方式(之後的sequenet、mobilenet、efiicent等,都對設計方式進行進一步的研究);
4、最早的一批,使用1*1卷積,same padiing、卷積分解,併爲其爲網絡帶來的內在影響進行了分析;
5、改變了在第一卷積層中使用相對較大的感受野的常規操作,開始在第一層使用小卷積核;
6、小卷積核、模型finetune訓練更有利於網絡提前收斂;
7、繼承、驗證了之前結論,深度有利於指標提升。
2、網絡配置
2.1、網絡結構
1、VGG網絡設計原則:主要優勢包括:網絡更深,使用更多的層,通常有16-19層;所有卷積層用同樣大小(3 x 3)的 卷積核或1x1卷積核(輸入的線性變化;)Max-poling執行在一個2x2窗口,2步長 。
2、兩層3*3卷積核組成感受野與7*7感受野相當。
1)64個3*3*3的核, 得到 224*224*64特徵圖;
2層64個3*3*64的核,得到224*224*64特徵圖,池化,步長2->112*112*64
2)128個3*3*64的核,得到112*112*128特徵圖,
2 層128個3*3*128的核,得到112*112*128特徵圖,池化,步長2,->56*56*128
3)256個3*3*128的核,得到56*56*256特徵圖;
2層,256個3*3*256的核,得到56*56*256特徵圖;
3層,256個3*3*256的核,得到56*56*256特徵圖,池化,步長2->28*28*256
4)512個3*3*256的核,得到28*28*512特徵圖;
2層,512個3*3*512的核,得到28*28*512特徵圖;
3層,12個3*3*512的核,得到28*28*512特徵圖;池化,步長2,-> 14*14*512
5)512個3*3*512的核,得到14*14*512特徵圖;
2層,512個3*3*512的核,得到14*14*512特徵圖;
3層,512個3*3*512的核,得到14*14*512特徵圖;池化,步長2;-> 7*7*512
6)4096個7*7*512的核,得到4069維向量爲輸入層;
構成4096*4096*1000的全連接層
2.2、網絡結構
VGG16的網絡結構非常規整,修改起來相對容易,遵循所有的ConvNet層配置都使用相同的規則,並且僅是深度不同的通用設計規則,選擇最優網絡結構(這裏主要是深度)。
這張圖在介紹VGG16時是用的,這張圖蘊含的信息非常多:
1、6個網絡的對比圖。從A到E,網絡越來越深。其中加入了一些層用來驗證效果;
2、每一列詳細講解了每個網絡的結構;
3、一種正確做實驗的方式,控制變量,逐步優化;
網絡設計過程:
網絡A:先提一個比較淺的網絡,這個網絡很容易就在ImageNet上收斂了;
網絡A-LRN:加一些AlexNet已經實驗說有效的東西(LRN),但好像沒用;
網絡B:加2層試試(A基礎上,僅增加深度),效果更好了;
網絡C:再加兩層1*1卷積(B基礎上,僅增加非線性),效果更好了;
網絡D:把1*1卷積核改成3*3(B基礎上,僅增加感受野),試一試。效果又變好了。好像是目前最好的了(2014年);
網絡E:再往上加了,又變好了!
可能作者也試驗了,不過效果可能就會出現深度網絡出現的一系列問題,梯度消失。再深可能效果更差了。ResNet將這一現象稱爲退化問題,並解決。
3、文章中的一些討論/結論
3.1、三個3×3卷積的堆疊替換單個7×7層,獲得了什麼?(感受野、卷積分解)
1、感受野不變。在整個網絡使用非常小的3×3感受野,與輸入的每個像素(步長爲1)進行卷積。兩個3×3卷積層堆疊(沒有空間池化)有5×5的有效感受野;三個這樣的層具有7×7的有效感受野。
2、結合了三個非線性修正層、增加了非線性,而不是單一的,這使得決策函數更具判別性;
3、減少參數的數量。假設三層3×3卷積堆疊的輸入和輸出有C個通道,堆疊卷積層的參數爲3*(3^2C^2)=27C^2個權重;
4、起到正則化作用。單個7×7卷積層將需要7^2C^2=49C^2個參數,即參數多81%。這可以看作是對7×7卷積濾波器進行正則化,迫使它們通過3×3濾波器(在它們之間注入非線性)進行分解。
3.2、1*1卷積核的使用
結合1×1卷積層(配置C,表1)是增加決策函數非線性而不影響卷積層感受野的一種方式。
3.3、開始輸入層的小卷積核的使用
ILSVRC-2013比賽時,在第一卷積層中使用相對較大的感受野(ResNet也沿用了這種結構)。本文整個網絡都使用3*3Conv,15年之後第一層大卷積就很少見了。
4、訓練技巧
4.1、多尺度訓練方式
相比AlexNet的隨機剪裁、隨機顏色增廣外,開啓了進行了多尺度訓練圖像中對輸入。這樣的對比試驗,在19年,mmdetection發表的論文中,仍進行了更深層次的實驗對比。
訓練圖像大小:S爲訓練尺度,原圖按最小邊等比例縮放(AlexNet中使用的方式)。之後採用下面兩種方式訓練:
第一種是修正對應單尺度訓練的S。用兩個固定尺度訓練的模型:S=256和S=384。給定ConvNet配置,先使用S=256來訓練網絡,之後用S=256預訓練的權重來進行初始化,加速S=384網絡的訓練,學習率使用10−3。
第二種是多尺度訓練。其中每個訓練圖像通過從一定範圍[Smin,Smax](使用Smin=256和Smax=512)隨機採樣S來單獨進行歸一化。由於圖像中的目標可能具有不同的大小,因此在訓練期間考慮到這一點是有益的。這也可以看作是通過尺度抖動進行訓練集增強,其中單個模型被訓練在一定尺度範圍內識別對象。爲了速度的原因,我們通過對具有相同配置的單尺度模型的所有層進行微調,訓練了多尺度模型,並用固定的S=384進行預訓練。
4.2、訓練技巧-加速收斂
參數相比AlexNet更多,網絡的深度更大,但網絡需要更小的epoch就可以收斂,原因:
1、更大的深度和更小的卷積濾波器尺寸引起的隱式正則化。統統使用了3*3的卷積核,相比AlexNet的5*5,7*7,11*11卷積小了很多;
2、某些層的初始化。作者首先訓練了網絡A,因爲A比較小,所以更容易收斂。訓練好A後,得到model去finetune 網絡C,可以一次類推進而得到網絡E。使用這種訓練方法,顯然可以加快收斂。
4.3、常規設置
目前仍在使用的一些設置:
批量大小設爲256,動量爲0.9。訓練通過權重衰減(L2懲罰乘子設定爲5⋅10−4)進行正則化,前兩個全連接層執行丟棄正則化(丟棄率設定爲0.5)。學習率初始設定爲10−2,然後當驗證集準確率停止改善時,減少10倍。學習率總共降低3次。
數據擴充,與AlexNet一致。水平翻轉、隨機剪裁和隨機RGB顏色偏移。
5、多種評價方式性能對比
5.1、單尺度評估
我們首先評估單個ConvNet模型在單尺度上的性能,其層結構配置如2.2節中描述。測試圖像大小設置如下:對於固定S的Q=S,對於抖動S∈[Smin,Smax],Q=0.5(Smin+Smax)。結果如表3所示。
表3:在單測試尺度的ConvNet性能
1、使用局部響應歸一化(A-LRN網絡)在沒有任何歸一化層的情況下,對模型A沒有改善。因此,我們在較深的架構(B-E)中不採用歸一化。
2、觀察到分類誤差隨着ConvNet深度的增加而減小:從A中的11層到E中的19層。值得注意的是,儘管深度相同,配置C(包含三個1×1卷積層)比在整個網絡層中使用3×3卷積的配置D更差。這表明,雖然額外的非線性確實有幫助(C優於B),但也可以通過使用具有非線性感受野(D比C好)的卷積濾波器來捕獲空間上下文。
當深度達到19層時,我們架構的錯誤率飽和,但更深的模型可能有益於較大的數據集。我們還將網絡B與具有5×5卷積層的淺層網絡進行了比較,淺層網絡可以通過用單個5×5卷積層替換B中每對3×3卷積層得到(其具有相同的感受野如第2.3節所述)。測量的淺層網絡top-1錯誤率比網絡B的top-1錯誤率(在中心裁剪圖像上)高7%,這證實了具有小濾波器的深層網絡優於具有較大濾波器的淺層網絡。
最後,訓練時的尺度抖動(S∈[256;512])得到了與固定最小邊(S=256或S=384)的圖像訓練相比更好的結果,即使在測試時使用單尺度。這證實了通過尺度抖動進行的訓練集增強確實有助於捕獲多尺度圖像統計。
5.2、多尺度評估
考慮到訓練和測試尺度之間的巨大差異會導致性能下降,用固定S訓練的模型在三個測試圖像尺度上進行了評估,接近於訓練一次:Q=S−32,S,S+32。同時,訓練時的尺度抖動允許網絡在測試時應用於更廣的尺度範圍,所以用變量S∈[Smin;Smax]訓練的模型在更大的尺寸範圍Q = {S_{min}, 0.5(S_{min} + S_{max}), S_{max}上進行評估。
表4中給出的結果表明,測試時的尺度抖動導致了更好的性能(與在單一尺度上相同模型的評估相比,如表3所示)。
表4:在多個測試尺度上的ConvNet性能
5.3、多裁剪圖像評估
在表5中,我們將稠密ConvNet評估與多裁剪圖像評估進行比較(細節參見第3.2節)。我們還通過平均其soft-max輸出來評估兩種評估技術的互補性。可以看出,使用多裁剪圖像表現比密集評估略好,而且這兩種方法確實是互補的,因爲它們的組合優於其中的每一種。如上所述,我們假設這是由於卷積邊界條件的不同處理。
表5:ConvNet評估技術比較。在所有的實驗中訓練尺度S從[256;512]採樣,三個測試適度Q考慮:{256, 384, 512}。
5.4、卷積網絡融合
結果如表6所示。在ILSVRC提交的時候,我們只訓練了單規模網絡,以及一個多尺度模型D(僅在全連接層進行微調而不是所有層)。由此產生的7個網絡組合具有7.3%的ILSVRC測試誤差。在提交之後,我們考慮了只有兩個表現最好的多尺度模型(配置D和E)的組合,它使用密集評估將測試誤差降低到7.0%,使用密集評估和多裁剪圖像評估將測試誤差降低到6.8%。作爲參考,我們表現最佳的單模型達到7.1%的誤差(模型E,表5)。
表6:多個卷積網絡融合結果: