論文地址:《Very Deep Convolutional Networks for Large-Scale Image Recognition》
思維導(dǎo)圖:https://mubu.com/explore/5JnjDt1vIng
一、背景
LSVRC:大規(guī)模圖像識(shí)別挑戰(zhàn)賽
ImageNet Large Scale Visual Recognition Challenge 是李飛飛等人于2010年創(chuàng)辦的圖像識(shí)別挑戰(zhàn)賽,自2010起連續(xù)舉辦8年,極大地推動(dòng)計(jì)算機(jī)視覺發(fā)展。比賽項(xiàng)目涵蓋:圖像分類(Classification)、目標(biāo)定位(Object localization)、目標(biāo)檢測(Object detection)、視頻目標(biāo)檢測(Object detection from video)、場景分類(Scene classification)、場景解析(Scene parsing)。
VGG Net由牛津大學(xué)的視覺幾何組(Visual Geometry Group)參加2014年ILSVRC提出的網(wǎng)絡(luò)模型,它主要的貢獻(xiàn)是展示了卷積神經(jīng)網(wǎng)絡(luò)的深度(depth)是算法優(yōu)良性能的關(guān)鍵部分。
二、Abstract
Q1:做了什么?
研究了“卷積網(wǎng)絡(luò)的深度”在大規(guī)模的圖像識(shí)別環(huán)境下對準(zhǔn)確性的影響(即神經(jīng)網(wǎng)絡(luò)的深度與其性能之間的關(guān)系)。
Q2:怎么做的?
使用一個(gè)非常小的卷積核對網(wǎng)絡(luò)深度進(jìn)行評(píng)估,評(píng)估發(fā)現(xiàn)將網(wǎng)絡(luò)深度加至16層-19層,性能有了顯著提升。
Q3:做得怎么樣?
在ImageNet Challenge 2014競賽中,定位賽道獲得第一名,分類賽道獲得第二名。
三、Architecture
論文提出了多種規(guī)模的網(wǎng)絡(luò)架構(gòu)(不同規(guī)模深度不盡相同),下圖為其中性能表現(xiàn)良好的網(wǎng)絡(luò)架構(gòu)之一:VGG16結(jié)構(gòu)圖。

1、輸入
- 規(guī)格:3@224x224(3個(gè)通道,寬高像素均為224);
- 唯一的預(yù)處理操作:計(jì)算出3個(gè)通道的平均值,在每個(gè)像素上減去平均值(處理后迭代更少,收斂更快);
2、卷積
- 大部分網(wǎng)絡(luò)架構(gòu)使用非常小的3x3卷積核貫穿整個(gè)網(wǎng)絡(luò);
- 部分網(wǎng)絡(luò)架構(gòu)除了3x3卷積核之外還使用了1x1卷積核;
- 卷積層步長(stride)=1,3x3卷積核的填充(padding)=1;
- 所有隱藏卷積層都配備了ReLU非線性激活。
3、池化
- 整個(gè)網(wǎng)絡(luò)架構(gòu)的池化總共由5個(gè)“MAX池化層”實(shí)現(xiàn);
- 池化操作在一系列卷積操作之后執(zhí)行;
- 池化窗口為2x2,步長=2。
4、分類器
所有卷積操作之后跟有3個(gè)全連接層(FC層):
- 前2個(gè)FC層:均為4096通道;
- 最后1個(gè)FC層:1000個(gè)通道;
- 全連接層之后是SoftMax分類器。
四、Dicussion
所有的ConvNet配置如圖所示,VGG結(jié)構(gòu)全部都采用較小的卷積核(3x3,部分1x1):

1、3x3卷積核的作用(優(yōu)勢)
兩個(gè)3×3的卷積層串聯(lián)相當(dāng)于1個(gè)5×5的卷積層(二者具有等效感受野5x5),3個(gè)串聯(lián)的3×3卷積層串聯(lián)的效果相當(dāng)于一個(gè)7×7的卷積層;
下圖展示了為什么“兩個(gè)3x3卷積層”與“單個(gè)5x5卷積層”具有等效的5x5的感受野。

1)作用1:減少網(wǎng)絡(luò)層參數(shù)
- 對于兩個(gè)3x3卷積核,所用的參數(shù)總量為
(假設(shè)通過padding填充保證卷積層輸入輸出通道數(shù)不變);
- 對于單個(gè)5x5卷積核,參數(shù)量為
;
- 參數(shù)量減少了
。
2)作用2:增加更多的非線性變換
2個(gè)3x3卷積層擁有比1個(gè)5x5卷積層更多的非線性變換(前者可以使用兩次ReLU激活函數(shù),而后者只有一次),使得卷積神經(jīng)網(wǎng)絡(luò)對特征的學(xué)習(xí)能力更強(qiáng)。
2、1x1卷積核的作用
1)作用1:降低運(yùn)算量
不影響輸入輸出的維度情況下(即圖片寬高尺寸不變),降低了大量運(yùn)算,同時(shí)改變了維度(通道數(shù));
2)作用2:提高非線性
卷積之后再緊跟ReLU進(jìn)行非線性處理,提高決策函數(shù)的非線性。
五、Classification Framework
1、訓(xùn)練
1)參數(shù)設(shè)置
- 使用了mini-batch的梯度下降法(帶有沖量),batch_size設(shè)為256,沖量設(shè)為0.9;
- 前兩個(gè)FC層使用了dropout(失活概率為0.5),用來緩解過擬合;
- 訓(xùn)練通過權(quán)重衰減(L2懲罰乘子設(shè)定為
)進(jìn)行正則化;
- 學(xué)習(xí)率初始化為0.01
- 當(dāng)驗(yàn)證集準(zhǔn)確率穩(wěn)定時(shí),學(xué)習(xí)率減少為原來
;
- 整個(gè)訓(xùn)練過程,學(xué)習(xí)率總共降低3次,學(xué)習(xí)在37萬次迭代后停止(74個(gè)epochs)。
- 當(dāng)驗(yàn)證集準(zhǔn)確率穩(wěn)定時(shí),學(xué)習(xí)率減少為原來
2)預(yù)訓(xùn)練
- 先訓(xùn)練較淺的網(wǎng)絡(luò)A,A收斂之后呢,將A的網(wǎng)絡(luò)權(quán)重保存下來;
- 再復(fù)用A網(wǎng)絡(luò)的權(quán)重來初始化后面的幾個(gè)復(fù)雜模型
- 只對“前四個(gè)卷積層”、“后三層全連接層”復(fù)用A的網(wǎng)絡(luò)權(quán)重,其它的中間層都是隨機(jī)初始化;
- 隨機(jī)初始化,均值是0,方差是0.01,bias是0。
- 只對“前四個(gè)卷積層”、“后三層全連接層”復(fù)用A的網(wǎng)絡(luò)權(quán)重,其它的中間層都是隨機(jī)初始化;
3)多尺度訓(xùn)練
Q1:什么是多尺度訓(xùn)練(Multi-scale)?
詳見:https://www.cnblogs.com/xxxxxxxxx/p/11629657.html
通俗點(diǎn)講,就是將一張圖片先進(jìn)行等比例縮放到不同尺寸(實(shí)現(xiàn)1張圖片變多張圖片),再在縮放后的圖片中隨機(jī)裁剪出指定尺寸區(qū)域得到更多的圖像。
就這樣,實(shí)現(xiàn)了訓(xùn)練集的數(shù)據(jù)增強(qiáng)。
Q2:作用是什么?
數(shù)據(jù)增強(qiáng),有利于預(yù)防過擬合。
Q3:步驟是什么?
- 步驟1:將原始圖像縮放到不同尺寸S;
- Q:S設(shè)為多大合適呢?(兩種解決方法A1、A2)
- S過小,裁剪到224x224的時(shí)候,就相當(dāng)于幾乎覆蓋了整個(gè)圖片,這樣對原始圖片進(jìn)行不同的隨機(jī)裁剪得到的圖片就基本上沒差別,就失去了增加數(shù)據(jù)集的意義;
- S過大,,裁剪到的圖片只含有目標(biāo)的一小部分,也不是很好。
- A1:單尺度訓(xùn)練(將S設(shè)為一個(gè)固定值)
- 論文評(píng)估了S=256和S=384兩種單尺度模型;
- A2:多尺度訓(xùn)練(將S設(shè)為一個(gè)區(qū)間
)
- 論文隨機(jī)從[256,512]的區(qū)間范圍內(nèi)進(jìn)行抽樣,這樣原始圖片尺寸不一,有利于訓(xùn)練,這個(gè)方法叫做尺度抖動(dòng)(scale jittering),有利于訓(xùn)練集增強(qiáng)。
- Q:S設(shè)為多大合適呢?(兩種解決方法A1、A2)
- 步驟2:從縮放后的圖片隨機(jī)裁剪224x224區(qū)域的圖片;
- 步驟3:對裁剪后的圖片進(jìn)行水平翻轉(zhuǎn)和隨機(jī)RGB色差調(diào)整(改變訓(xùn)練圖像中 RGB 通道的強(qiáng)度);
2、測試
測試階段與訓(xùn)練階段主要有兩點(diǎn)不同:
- 對于測試集同樣采用Multi-scale,將圖像縮放到尺寸Q,但是Q可以≠訓(xùn)練尺度S;
- 將“FC全連接層”轉(zhuǎn)換為“等效卷積層”
- 第一個(gè)FC層轉(zhuǎn)為“7x7卷積層”;后兩個(gè)FC層均轉(zhuǎn)為“1x1卷積層”;
- 為什么要可以進(jìn)行轉(zhuǎn)換?
- 轉(zhuǎn)換的作用是什么?
- ①可以實(shí)現(xiàn)與FC層同樣的效果(即可以獲得與FC層相同的輸入輸出);
- ②去除了FC層必須要求“輸入圖像尺寸固定”的限制條件(詳見:https://blog.csdn.net/qq_31347869/article/details/89484343
六、Classification Experiments
1、Single Scale Evaluation
- 若S采用單尺度,設(shè)Q=S;若S采用多尺度,設(shè)
;
- 通過“A-LRN”證明,網(wǎng)絡(luò)中加入LRN沒什么用;
- 通過比較A-E的“top-1 val.error”和“top-5 val.error”發(fā)現(xiàn),網(wǎng)絡(luò)深度越深,訓(xùn)練性能越好,且深度達(dá)19層時(shí),性能趨于飽和;
- 通過比較D和C,證明3x3卷積效果優(yōu)于1x1卷積;
- 通過將“B”和“帶有5x5卷積的淺層網(wǎng)絡(luò)”,發(fā)現(xiàn)兩個(gè)3x3卷積效果優(yōu)于單個(gè)5x5卷積(即使二者具有等效的感受野);
- 通過比較單尺度S和多尺度S,發(fā)現(xiàn)尺度抖動(dòng)有利于訓(xùn)練集數(shù)據(jù)增強(qiáng)。

2、Multi-Scale Evaluation
- 保持S為單尺度(
),查看多尺度Q的性能(
);
- 令S為多尺度(
),查看多尺度Q的性能(
);
- 證明測試時(shí)的尺度抖動(dòng)導(dǎo)致了更好的性能。

3、Multi-Crop Evaluation
- 將“稠密
評(píng)估”與“多裁剪圖像評(píng)估”進(jìn)行比較;
- 通過平均其soft-max輸出來評(píng)估兩種評(píng)估技術(shù)的互補(bǔ)性;
- 證明了使用多裁剪圖像表現(xiàn)比密集評(píng)估略好,而且這兩種方法確實(shí)是互補(bǔ)的(因?yàn)樗鼈兊慕M合優(yōu)于其中的每一種)。

4、Convnet Fusion
- 查看多個(gè)卷積網(wǎng)絡(luò)融合結(jié)果;
- ILSVRC提交的是單規(guī)模網(wǎng)絡(luò);post-提交的是多規(guī)模網(wǎng)絡(luò);
- 表現(xiàn)最好的多尺度模型(配置D和E)的組合,它使用密集評(píng)估將測試誤差降低到7.0%,使用密集評(píng)估和多裁剪圖像評(píng)估將測試誤差降低到6.8%。

七、我的總結(jié)
VGGNet網(wǎng)絡(luò)特點(diǎn):
- 層數(shù)深(VGG擁有5段卷積,每段卷積內(nèi)包含2-3個(gè)卷積層),同時(shí)每段尾部配有最大池化層,適用于大型數(shù)據(jù)集;
- 網(wǎng)絡(luò)簡潔,使用了同樣大小的卷積核尺寸(3x3)和最大池化尺寸(2x2)貫穿整個(gè)網(wǎng)絡(luò)架構(gòu);
- 采用“幾個(gè)小濾波器(3x3)卷積層的串聯(lián)組合”替代“一個(gè)大濾波器(5x5或7x7)卷積層”,效果更好;
- 訓(xùn)練和測試階段都對數(shù)據(jù)集進(jìn)行了Multi-scale將圖片縮放并采樣,實(shí)現(xiàn)了數(shù)據(jù)增強(qiáng);
- 測試階段將全連接層轉(zhuǎn)換為等效卷積層,去除了FC層對輸入圖像尺寸的限制;
- 采用多GPU并行訓(xùn)練,每個(gè)GPU處理部分?jǐn)?shù)據(jù)。