Very Deep Convolutional Networks for Large-Scale Image Recognition

轉自:http://blog.csdn.net/stdcoutzyx/article/details/39736509

這篇論文是今年9月份的論文[1],比較新,其中的觀點感覺對卷積神經網絡的參數調整大有指導作用,特總結之。關於卷積神經網絡(Convolutional Neural Network, CNN),筆者後會作文闡述之,讀者若心急則或可用谷歌百度一下。

本文以下內容即是論文的筆記,筆者初次嘗試對一篇論文提取重點做筆記,若有不足之處請閱讀原文者指出。

1. Main Contribution

  • 考察在參數總數基本不變的情況下,CNN隨着層數的增加,其效果的變化。
  • 論文中的方法在ILSVRC-2014比賽中獲得第二名。
    • ILSVRC——ImageNet Large-Scale Visual Recongnition Challenge

2. CNN improvement

在論文[2]出現以後,有很多對其提出的CNN結構進行改進的方法。例如:

  • Use smaller receptive window size and smaller stride of the first convolutional layer.
  • Training and testing the networks densely over the whole image and over multiple scales.

3. CNN Configuration Principals

  • CNN的輸入都是224×224×3的圖片。
  • 輸入前唯一的預處理是減去均值。
  • 1×1的核可以被看成是輸入通道的線性變換。
  • 使用較多的卷積核大小爲3×3。
  • Max-Pooling 一般在2×2的像素窗口上做,with stride 2。
  • 除了最後一層全連接的分類層外,其他層都需要使用rectification non-linearity(RELU)。
  • 不需要添加Local Response Normalization(LRN),因爲它不提升效果反而會帶來計算花費和內存花費,增加計算時間。

4. CNN Configuration

  • 卷積層的通道數目(寬度)從64,每過一個max-pooling層翻倍,到512爲止。
  • Use filters with 3×3 size throughout the whole net, because a stack of two 3×3 conv layers (without spatial pooling in between) has an effective receptive of 5×5, and three a stack of 3×3 conv layers has a receptive of 7×7, and so on.
  • 爲甚麼使用三層3×3代替一層7×7?
    • 第一,三層比一層更具有判別性;
    • 第二,假設同樣的通道數C,那麼三層3×3的參數數目爲3×(3×3)C×C=27C×C,一層7×7參數數目爲7×7×C×C=49C×C。大大減少了參數數目。
  • 使用1*1的卷積核可以在不影響視野域的情況下增加判別函數的非線性。該核可以用於“Network in Network”網絡結構,可以參考論文的參考文獻12。

  • 圖1是論文中實驗使用的神經網絡結構,可以看到,CNN的層數從11層到19層,結構符合上面的總結的點。圖2則是各個CNN的參數總數,可以看到,雖然深度變化了,但是參數數目變化不大。


5. Training

  • 除了使用multiple scale之外,論文[1]實驗基本都follow論文[2]的設置。batch size是256,momentum是0.9,正則化係數是5×10e-4,前兩層全連接的dropout參數設置爲0.5,學習步長初始化爲10e-2,且當驗證集結果不再上升時步長除以10,除三次爲止。學習了370K迭代(74 epochs)時停止。
  • 論文推測,本文的網絡比原來的網絡要更容易收斂,原因有二:
    • Implicit regularization imposed by greater depth and smaller conv filter sizes
    • Pre-initialisation of certain layers. 先訓練淺層網絡,如圖中的A網絡,得到參數後,當訓練更深的網如E時,使用A中得到的參數初始化對應的層,新層的參數則隨機初始化。需要注意的是,使用這樣的方式進行初始化,不改變步長。
  • 224×224輸入的獲得,將原始圖片等比例縮放,保證短邊大於224,然後隨機選擇224×224的窗口,爲了進一步data augment,還要考慮隨機的水平仿射和RGB通道切換。
  • Multi-scale Training, 多尺度的意義在於圖片中的物體的尺度有變化,多尺度可以更好的識別物體。有兩種方法進行多尺度訓練。
    • 在不同的尺度下,訓練多個分類器,參數爲S,參數的意義就是在做原始圖片上的縮放時的短邊長度。論文中訓練了S=256和S=384兩個分類器,其中S=384的分類器的參數使用S=256的參數進行初始化,且將步長調爲10e-3。
    • 另一種方法是直接訓練一個分類器,每次數據輸入時,每張圖片被重新縮放,縮放的短邊S隨機從[min, max]中選擇,本文中使用區間[256,384],網絡參數初始化時使用S=384時的參數。

6. Testing

測試使用如下步驟:

  • 首先進行等比例縮放,短邊長度Q大於224,Q的意義與S相同,不過S是訓練集中的,Q是測試集中的參數。Q不必等於S,相反的,對於一個S,使用多個Q值進行測試,然後去平均會使效果變好。
  • 然後,按照本文參考文獻16的方式對測試數據進行測試。
    • 將全連接層轉換爲卷積層,第一個全連接轉換爲7×7的卷積,第二個轉換爲1×1的卷積。
    • Resulting net is applied to the whole image by convolving the filters in each layer with the full-size input. The resulting output feature map is a class score map with the number channels equal to the number of classes, and the variable spatial resolution, dependent on the input image size.
    • Finally, class score map is spatially averaged(sum-pooled) to obtain a fixed-size vector of class scores of the image.

7. Implementation

  • 使用C++ Caffe toolbox實現
    • 支持單系統多GPU
    • 多GPU把batch分爲多個GPU-batch,在每個GPU上進行計算,得到子batch的梯度後,以平均值作爲整個batch的梯度。
    • 論文的參考文獻[9]中提出了很多加速訓練的方法。論文實驗表明,在4-GPU的系統上,可以加速3.75倍。

8. Experiments

共進行三組實驗:

8.1 Configuration Comparison

使用圖1中的CNN結構進行實驗,在C/D/E網絡結構上進行多尺度的訓練,注意的是,該組實驗的測試集只有一個尺度。如下圖所示:

image3

Figure3 Performance at a single test scale

8.2 Multi-Scale Comparison

測試集多尺度,且考慮到尺度差異過大會導致性能的下降,所以測試集的尺度Q在S的上下32內浮動。對於訓練集是區間尺度的,測試集尺度爲區間的最小值、最大值、中值。

image4

Figure4 Convnet performance at multiple test scales

8.3 Convnet Fusion

模型融合,方法是取其後驗概率估計的均值。

融合圖3和圖4中兩個最好的model可以達到更好的值,融合七個model會變差。

image5

Figure5 Convnet Fusion

9. Reference

[1]. Simonyan K, Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. arXiv preprint arXiv:1409.1556, 2014.

[2]. Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.

發佈了1 篇原創文章 · 獲贊 9 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章