VGG Net 論文細讀

就良同學發表於2021-08-12

論文地址:《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結構圖。

image

1、輸入

  1. 規格:3@224x224(3個通道,寬高畫素均為224);
  2. 唯一的預處理操作:計算出3個通道的平均值,在每個畫素上減去平均值(處理後迭代更少,收斂更快);

2、卷積

  1. 大部分網路架構使用非常小的3x3卷積核貫穿整個網路;
  2. 部分網路架構除了3x3卷積核之外還使用了1x1卷積核;
  3. 卷積層步長(stride)=1,3x3卷積核的填充(padding)=1;
  4. 所有隱藏卷積層都配備了ReLU非線性啟用。

3、池化

  1. 整個網路架構的池化總共由5個“MAX池化層”實現;
  2. 池化操作在一系列卷積操作之後執行;
  3. 池化視窗為2x2,步長=2。

4、分類器

所有卷積操作之後跟有3個全連線層(FC層):

  1. 前2個FC層:均為4096通道;
  2. 最後1個FC層:1000個通道;
  3. 全連線層之後是SoftMax分類器。

四、Dicussion

所有的ConvNet配置如圖所示,VGG結構全部都採用較小的卷積核(3x3,部分1x1):

image

1、3x3卷積核的作用(優勢)

兩個3×3的卷積層串聯相當於1個5×5的卷積層(二者具有等效感受野5x5),3個串聯的3×3卷積層串聯的效果相當於一個7×7的卷積層;

下圖展示了為什麼“兩個3x3卷積層”與“單個5x5卷積層”具有等效的5x5的感受野。

image

1)作用1:減少網路層引數

  1. 對於兩個3x3卷積核,所用的引數總量為\(2\times3^2\times{channels}\)(假設通過padding填充保證卷積層輸入輸出通道數不變);
  2. 對於單個5x5卷積核,引數量為\(5^2\times{channels}\)
  3. 引數量減少了\((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)引數設定

  1. 使用了mini-batch的梯度下降法(帶有衝量),batch_size設為256,衝量設為0.9;
  2. 前兩個FC層使用了dropout(失活概率為0.5),用來緩解過擬合;
  3. 訓練通過權重衰減(L2懲罰乘子設定為\(5\times{10}^{-4}\))進行正則化;
  4. 學習率初始化為0.01
    • 當驗證集準確率穩定時,學習率減少為原來\(\frac{1}{10}\)
    • 整個訓練過程,學習率總共降低3次,學習在37萬次迭代後停止(74個epochs)。

2)預訓練

  1. 先訓練較淺的網路A,A收斂之後呢,將A的網路權重儲存下來;
  2. 再複用A網路的權重來初始化後面的幾個複雜模型
    • 只對“前四個卷積層”、“後三層全連線層”複用A的網路權重,其它的中間層都是隨機初始化;
      • 隨機初始化,均值是0,方差是0.01,bias是0。

3)多尺度訓練

Q1:什麼是多尺度訓練(Multi-scale)?

詳見:https://www.cnblogs.com/xxxxxxxxx/p/11629657.html

通俗點講,就是將一張圖片先進行等比例縮放到不同尺寸(實現1張圖片變多張圖片),再在縮放後的圖片中隨機裁剪出指定尺寸區域得到更多的影像。

就這樣,實現了訓練集的資料增強。

Q2:作用是什麼?

資料增強,有利於預防過擬合。

Q3:步驟是什麼?

  1. 步驟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),有利於訓練集增強。
  2. 步驟2:從縮放後的圖片隨機裁剪224x224區域的圖片;
  3. 步驟3:對裁剪後的圖片進行水平翻轉和隨機RGB色差調整(改變訓練影像中 RGB 通道的強度);

2、測試

測試階段與訓練階段主要有兩點不同:

  1. 對於測試集同樣採用Multi-scale,將影像縮放到尺寸Q,但是Q可以≠訓練尺度S;
  2. 將“FC全連線層”轉換為“等效卷積層”

六、Classification Experiments

1、Single Scale Evaluation

  1. 若S採用單尺度,設Q=S;若S採用多尺度,設\(Q=0.5(S_{min}+S_{max})\);
  2. 通過“A-LRN”證明,網路中加入LRN沒什麼用;
  3. 通過比較A-E的“top-1 val.error”和“top-5 val.error”發現,網路深度越深,訓練效能越好,且深度達19層時,效能趨於飽和;
  4. 通過比較D和C,證明3x3卷積效果優於1x1卷積;
  5. 通過將“B”和“帶有5x5卷積的淺層網路”,發現兩個3x3卷積效果優於單個5x5卷積(即使二者具有等效的感受野);
  6. 通過比較單尺度S和多尺度S,發現尺度抖動有利於訓練集資料增強。

image

2、Multi-Scale Evaluation

  1. 保持S為單尺度(\(S=256 or S=384\)),檢視多尺度Q的效能(\(Q=\{S-32, S, S+32\}\));
  2. 令S為多尺度(\(S\in[S_{min}, S_{max}]\)),檢視多尺度Q的效能(\(Q=\{ S_{min}, 0.5(S_{min}+S_{max}, S_{max}) \}\));
  3. 證明測試時的尺度抖動導致了更好的效能。

image

3、Multi-Crop Evaluation

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

image

4、Convnet Fusion

  1. 檢視多個卷積網路融合結果;
  2. ILSVRC提交的是單規模網路;post-提交的是多規模網路;
  3. 表現最好的多尺度模型(配置D和E)的組合,它使用密集評估將測試誤差降低到7.0%,使用密集評估和多裁剪影像評估將測試誤差降低到6.8%。

image


七、我的總結

VGGNet網路特點:

  1. 層數深(VGG擁有5段卷積,每段卷積內包含2-3個卷積層),同時每段尾部配有最大池化層,適用於大型資料集;
  2. 網路簡潔,使用了同樣大小的卷積核尺寸(3x3)和最大池化尺寸(2x2)貫穿整個網路架構;
  3. 採用“幾個小濾波器(3x3)卷積層的串聯組合”替代“一個大濾波器(5x5或7x7)卷積層”,效果更好;
  4. 訓練和測試階段都對資料集進行了Multi-scale將圖片縮放並取樣,實現了資料增強;
  5. 測試階段將全連線層轉換為等效卷積層,去除了FC層對輸入影像尺寸的限制;
  6. 採用多GPU並行訓練,每個GPU處理部分資料。

相關文章