論文地址:《Very Deep Convolutional Networks for Large-Scale Image Recognition》
思維導圖:https://mubu.com/explore/5JnjDt1vIng
一、背景
LSVRC:大規(guī)模圖像識別挑戰(zhàn)賽
ImageNet Large Scale Visual Recognition Challenge 是李飛飛等人于2010年創(chuàng)辦的圖像識別挑戰(zhàn)賽,自2010起連續(xù)舉辦8年,極大地推動計算機視覺發(fā)展。比賽項目涵蓋:圖像分類(Classification)、目標定位(Object localization)、目標檢測(Object detection)、視頻目標檢測(Object detection from video)、場景分類(Scene classification)、場景解析(Scene parsing)。
VGG Net由牛津大學的視覺幾何組(V
isual G
eometry G
roup)參加2014年ILSVRC提出的網絡模型,它主要的貢獻是展示了卷積神經網絡的深度(depth)是算法優(yōu)良性能的關鍵部分。
二、Abstract
Q1:做了什么?
研究了“卷積網絡的深度”在大規(guī)模的圖像識別環(huán)境下對準確性的影響(即神經網絡的深度與其性能之間的關系)。
Q2:怎么做的?
使用一個非常小的卷積核對網絡深度進行評估,評估發(fā)現(xiàn)將網絡深度加至16層-19層,性能有了顯著提升。
Q3:做得怎么樣?
在ImageNet Challenge 2014競賽中,定位賽道獲得第一名,分類賽道獲得第二名。
三、Architecture
論文提出了多種規(guī)模的網絡架構(不同規(guī)模深度不盡相同),下圖為其中性能表現(xiàn)良好的網絡架構之一:VGG16結構圖。
1、輸入
- 規(guī)格:3@224x224(3個通道,寬高像素均為224);
- 唯一的預處理操作:計算出3個通道的平均值,在每個像素上減去平均值(處理后迭代更少,收斂更快);
2、卷積
- 大部分網絡架構使用非常小的3x3卷積核貫穿整個網絡;
- 部分網絡架構除了3x3卷積核之外還使用了1x1卷積核;
- 卷積層步長(stride)=1,3x3卷積核的填充(padding)=1;
- 所有隱藏卷積層都配備了ReLU非線性激活。
3、池化
- 整個網絡架構的池化總共由5個“MAX池化層”實現(xiàn);
- 池化操作在一系列卷積操作之后執(zhí)行;
- 池化窗口為2x2,步長=2。
4、分類器
所有卷積操作之后跟有3個全連接層(FC層):
- 前2個FC層:均為4096通道;
- 最后1個FC層:1000個通道;
- 全連接層之后是SoftMax分類器。
四、Dicussion
所有的ConvNet配置如圖所示,VGG結構全部都采用較小的卷積核(3x3,部分1x1):
1、3x3卷積核的作用(優(yōu)勢)
兩個3×3的卷積層串聯(lián)相當于1個5×5的卷積層(二者具有等效感受野5x5),3個串聯(lián)的3×3卷積層串聯(lián)的效果相當于一個7×7的卷積層;
下圖展示了為什么“兩個3x3卷積層”與“單個5x5卷積層”具有等效的5x5的感受野。
1)作用1:減少網絡層參數(shù)
- 對于兩個3x3卷積核,所用的參數(shù)總量為
(假設通過padding填充保證卷積層輸入輸出通道數(shù)不變);
- 對于單個5x5卷積核,參數(shù)量為
;
- 參數(shù)量減少了
。
2)作用2:增加更多的非線性變換
2個3x3卷積層擁有比1個5x5卷積層更多的非線性變換(前者可以使用兩次ReLU激活函數(shù),而后者只有一次),使得卷積神經網絡對特征的學習能力更強。
2、1x1卷積核的作用
1)作用1:降低運算量
不影響輸入輸出的維度情況下(即圖片寬高尺寸不變),降低了大量運算,同時改變了維度(通道數(shù));
2)作用2:提高非線性
卷積之后再緊跟ReLU進行非線性處理,提高決策函數(shù)的非線性。
五、Classification Framework
1、訓練
1)參數(shù)設置
- 使用了mini-batch的梯度下降法(帶有沖量),batch_size設為256,沖量設為0.9;
- 前兩個FC層使用了dropout(失活概率為0.5),用來緩解過擬合;
- 訓練通過權重衰減(L2懲罰乘子設定為
)進行正則化;
- 學習率初始化為0.01
- 當驗證集準確率穩(wěn)定時,學習率減少為原來
;
- 整個訓練過程,學習率總共降低3次,學習在37萬次迭代后停止(74個epochs)。
- 當驗證集準確率穩(wěn)定時,學習率減少為原來
2)預訓練
- 先訓練較淺的網絡A,A收斂之后呢,將A的網絡權重保存下來;
- 再復用A網絡的權重來初始化后面的幾個復雜模型
- 只對“前四個卷積層”、“后三層全連接層”復用A的網絡權重,其它的中間層都是隨機初始化;
- 隨機初始化,均值是0,方差是0.01,bias是0。
- 只對“前四個卷積層”、“后三層全連接層”復用A的網絡權重,其它的中間層都是隨機初始化;
3)多尺度訓練
Q1:什么是多尺度訓練(Multi-scale)?
詳見:https://www.cnblogs.com/xxxxxxxxx/p/11629657.html
通俗點講,就是將一張圖片先進行等比例縮放到不同尺寸(實現(xiàn)1張圖片變多張圖片),再在縮放后的圖片中隨機裁剪出指定尺寸區(qū)域得到更多的圖像。
就這樣,實現(xiàn)了訓練集的數(shù)據增強。
Q2:作用是什么?
數(shù)據增強,有利于預防過擬合。
Q3:步驟是什么?
- 步驟1:將原始圖像縮放到不同尺寸S;
- Q:S設為多大合適呢?(兩種解決方法A1、A2)
- S過小,裁剪到224x224的時候,就相當于幾乎覆蓋了整個圖片,這樣對原始圖片進行不同的隨機裁剪得到的圖片就基本上沒差別,就失去了增加數(shù)據集的意義;
- S過大,,裁剪到的圖片只含有目標的一小部分,也不是很好。
- A1:單尺度訓練(將S設為一個固定值)
- 論文評估了S=256和S=384兩種單尺度模型;
- A2:多尺度訓練(將S設為一個區(qū)間
)
- 論文隨機從[256,512]的區(qū)間范圍內進行抽樣,這樣原始圖片尺寸不一,有利于訓練,這個方法叫做尺度抖動(scale jittering),有利于訓練集增強。
- Q:S設為多大合適呢?(兩種解決方法A1、A2)
- 步驟2:從縮放后的圖片隨機裁剪224x224區(qū)域的圖片;
- 步驟3:對裁剪后的圖片進行水平翻轉和隨機RGB色差調整(改變訓練圖像中 RGB 通道的強度);
2、測試
測試階段與訓練階段主要有兩點不同:
- 對于測試集同樣采用Multi-scale,將圖像縮放到尺寸Q,但是Q可以≠訓練尺度S;
- 將“FC全連接層”轉換為“等效卷積層”
- 第一個FC層轉為“7x7卷積層”;后兩個FC層均轉為“1x1卷積層”;
- 為什么要可以進行轉換?
- 轉換的作用是什么?
- ①可以實現(xiàn)與FC層同樣的效果(即可以獲得與FC層相同的輸入輸出);
- ②去除了FC層必須要求“輸入圖像尺寸固定”的限制條件(詳見:https://blog.csdn.net/qq_31347869/article/details/89484343
六、Classification Experiments
1、Single Scale Evaluation
- 若S采用單尺度,設Q=S;若S采用多尺度,設
;
- 通過“A-LRN”證明,網絡中加入LRN沒什么用;
- 通過比較A-E的“top-1 val.error”和“top-5 val.error”發(fā)現(xiàn),網絡深度越深,訓練性能越好,且深度達19層時,性能趨于飽和;
- 通過比較D和C,證明3x3卷積效果優(yōu)于1x1卷積;
- 通過將“B”和“帶有5x5卷積的淺層網絡”,發(fā)現(xiàn)兩個3x3卷積效果優(yōu)于單個5x5卷積(即使二者具有等效的感受野);
- 通過比較單尺度S和多尺度S,發(fā)現(xiàn)尺度抖動有利于訓練集數(shù)據增強。
2、Multi-Scale Evaluation
- 保持S為單尺度(
),查看多尺度Q的性能(
);
- 令S為多尺度(
),查看多尺度Q的性能(
);
- 證明測試時的尺度抖動導致了更好的性能。
3、Multi-Crop Evaluation
- 將“稠密
評估”與“多裁剪圖像評估”進行比較;
- 通過平均其soft-max輸出來評估兩種評估技術的互補性;
- 證明了使用多裁剪圖像表現(xiàn)比密集評估略好,而且這兩種方法確實是互補的(因為它們的組合優(yōu)于其中的每一種)。
4、Convnet Fusion
- 查看多個卷積網絡融合結果;
- ILSVRC提交的是單規(guī)模網絡;post-提交的是多規(guī)模網絡;
- 表現(xiàn)最好的多尺度模型(配置D和E)的組合,它使用密集評估將測試誤差降低到7.0%,使用密集評估和多裁剪圖像評估將測試誤差降低到6.8%。
七、我的總結
VGGNet網絡特點:
- 層數(shù)深(VGG擁有5段卷積,每段卷積內包含2-3個卷積層),同時每段尾部配有最大池化層,適用于大型數(shù)據集;
- 網絡簡潔,使用了同樣大小的卷積核尺寸(3x3)和最大池化尺寸(2x2)貫穿整個網絡架構;
- 采用“幾個小濾波器(3x3)卷積層的串聯(lián)組合”替代“一個大濾波器(5x5或7x7)卷積層”,效果更好;
- 訓練和測試階段都對數(shù)據集進行了Multi-scale將圖片縮放并采樣,實現(xiàn)了數(shù)據增強;
- 測試階段將全連接層轉換為等效卷積層,去除了FC層對輸入圖像尺寸的限制;
- 采用多GPU并行訓練,每個GPU處理部分數(shù)據。