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

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

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

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

2、Multi-Scale Evaluation
- 保持S為單尺度(\(S=256 or S=384\)),查看多尺度Q的性能(\(Q=\{S-32, S, S+32\}\));
- 令S為多尺度(\(S\in[S_{min}, S_{max}]\)),查看多尺度Q的性能(\(Q=\{ S_{min}, 0.5(S_{min}+S_{max}, S_{max}) \}\));
- 證明測驗時的尺度抖動導致了更好的性能,

3、Multi-Crop Evaluation
- 將“稠密\(ConvNet\)(即未進行多裁剪)評估”與“多裁剪影像評估”進行比較;
- 通過平均其soft-max輸出來評估兩種評估技術的互補性;
- 證明了使用多裁剪影像表現比密集評估略好,而且這兩種方法確實是互補的(因為它們的組合優于其中的每一種),

4、ConvNet Fusion
- 查看多個卷積網路融合結果;
- ILSVRC提交的是單規模網路;post-提交的是多規模網路;
- 表現最好的多尺度模型(配置D和E)的組合,它使用密集評估將測驗誤差降低到7.0%,使用密集評估和多裁剪影像評估將測驗誤差降低到6.8%,

七、我的總結
VGGNet網路特點:
- 層數深(VGG擁有5段卷積,每段卷積內包含2-3個卷積層),同時每段尾部配有最大池化層,適用于大型資料集;
- 網路簡潔,使用了同樣大小的卷積核尺寸(3x3)和最大池化尺寸(2x2)貫穿整個網路架構;
- 采用“幾個小濾波器(3x3)卷積層的串聯組合”替代“一個大濾波器(5x5或7x7)卷積層”,效果更好;
- 訓練和測驗階段都對資料集進行了Multi-scale將圖片縮放并采樣,實作了資料增強;
- 測驗階段將全連接層轉換為等效卷積層,去除了FC層對輸入影像尺寸的限制;
- 采用多GPU并行訓練,每個GPU處理部分資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296281.html
標籤:其他
