论文Very Deep Convolutional Networks for Large-Scale Image Recognition
Very Deep Convolutional Networks for Large-Scale Image Recognition
轉(zhuǎn)載請注明:http://blog.csdn.net/stdcoutzyx/article/details/39736509
這篇論文是今年9月份的論文[1],比較新,其中的觀點(diǎn)感覺對卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)調(diào)整大有指導(dǎo)作用,特總結(jié)之。關(guān)于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN),筆者后會作文闡述之,讀者若心急則或可用谷歌百度一下。
本文以下內(nèi)容即是論文的筆記,筆者初次嘗試對一篇論文提取重點(diǎn)做筆記,若有不足之處請閱讀原文者指出。
1. Main Contribution
- 考察在參數(shù)總數(shù)基本不變的情況下,CNN隨著層數(shù)的增加,其效果的變化。
- 論文中的方法在ILSVRC-2014比賽中獲得第二名。
- ILSVRC——ImageNet Large-Scale Visual Recongnition Challenge
2. CNN improvement
在論文[2]出現(xiàn)以后,有很多對其提出的CNN結(jié)構(gòu)進(jìn)行改進(jìn)的方法。例如:
- 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的圖片。
- 輸入前唯一的預(yù)處理是減去均值。
- 1×1的核可以被看成是輸入通道的線性變換。
- 使用較多的卷積核大小為3×3。
- Max-Pooling 一般在2×2的像素窗口上做,with stride 2。
- 除了最后一層全連接的分類層外,其他層都需要使用rectification non-linearity(RELU)。
- 不需要添加Local Response Normalization(LRN),因?yàn)樗惶嵘Ч炊鴷碛?jì)算花費(fèi)和內(nèi)存花費(fèi),增加計(jì)算時間。
4. CNN Configuration
- 卷積層的通道數(shù)目(寬度)從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?
- 第一,三層比一層更具有判別性;
- 第二,假設(shè)同樣的通道數(shù)C,那么三層3×3的參數(shù)數(shù)目為3×(3×3)C×C=27C×C,一層7×7參數(shù)數(shù)目為7×7×C×C=49C×C。大大減少了參數(shù)數(shù)目。
-
使用1*1的卷積核可以在不影響視野域的情況下增加判別函數(shù)的非線性。該核可以用于“Network in Network”網(wǎng)絡(luò)結(jié)構(gòu),可以參考論文的參考文獻(xiàn)12。
-
圖1是論文中實(shí)驗(yàn)使用的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),可以看到,CNN的層數(shù)從11層到19層,結(jié)構(gòu)符合上面的總結(jié)的點(diǎn)。圖2則是各個CNN的參數(shù)總數(shù),可以看到,雖然深度變化了,但是參數(shù)數(shù)目變化不大。
Figure1 Convnet Configuration
Figure2 Parameter Num
5. Training
- 除了使用multiple scale之外,論文[1]實(shí)驗(yàn)基本都follow論文[2]的設(shè)置。batch size是256,momentum是0.9,正則化系數(shù)是5×10e-4,前兩層全連接的dropout參數(shù)設(shè)置為0.5,學(xué)習(xí)步長初始化為10e-2,且當(dāng)驗(yàn)證集結(jié)果不再上升時步長除以10,除三次為止。學(xué)習(xí)了370K迭代(74 epochs)時停止。
- 論文推測,本文的網(wǎng)絡(luò)比原來的網(wǎng)絡(luò)要更容易收斂,原因有二:
- Implicit regularization imposed by greater depth and smaller conv filter sizes
- Pre-initialisation of certain layers. 先訓(xùn)練淺層網(wǎng)絡(luò),如圖中的A網(wǎng)絡(luò),得到參數(shù)后,當(dāng)訓(xùn)練更深的網(wǎng)如E時,使用A中得到的參數(shù)初始化對應(yīng)的層,新層的參數(shù)則隨機(jī)初始化。需要注意的是,使用這樣的方式進(jìn)行初始化,不改變步長。
- 224×224輸入的獲得,將原始圖片等比例縮放,保證短邊大于224,然后隨機(jī)選擇224×224的窗口,為了進(jìn)一步data augment,還要考慮隨機(jī)的水平仿射和RGB通道切換。
- Multi-scale Training, 多尺度的意義在于圖片中的物體的尺度有變化,多尺度可以更好的識別物體。有兩種方法進(jìn)行多尺度訓(xùn)練。
- 在不同的尺度下,訓(xùn)練多個分類器,參數(shù)為S,參數(shù)的意義就是在做原始圖片上的縮放時的短邊長度。論文中訓(xùn)練了S=256和S=384兩個分類器,其中S=384的分類器的參數(shù)使用S=256的參數(shù)進(jìn)行初始化,且將步長調(diào)為10e-3。
- 另一種方法是直接訓(xùn)練一個分類器,每次數(shù)據(jù)輸入時,每張圖片被重新縮放,縮放的短邊S隨機(jī)從[min, max]中選擇,本文中使用區(qū)間[256,384],網(wǎng)絡(luò)參數(shù)初始化時使用S=384時的參數(shù)。
6. Testing
測試使用如下步驟:
- 首先進(jìn)行等比例縮放,短邊長度Q大于224,Q的意義與S相同,不過S是訓(xùn)練集中的,Q是測試集中的參數(shù)。Q不必等于S,相反的,對于一個S,使用多個Q值進(jìn)行測試,然后去平均會使效果變好。
- 然后,按照本文參考文獻(xiàn)16的方式對測試數(shù)據(jù)進(jìn)行測試。
- 將全連接層轉(zhuǎn)換為卷積層,第一個全連接轉(zhuǎn)換為7×7的卷積,第二個轉(zhuǎn)換為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實(shí)現(xiàn)
- 支持單系統(tǒng)多GPU
- 多GPU把batch分為多個GPU-batch,在每個GPU上進(jìn)行計(jì)算,得到子batch的梯度后,以平均值作為整個batch的梯度。
- 論文的參考文獻(xiàn)[9]中提出了很多加速訓(xùn)練的方法。論文實(shí)驗(yàn)表明,在4-GPU的系統(tǒng)上,可以加速3.75倍。
8. Experiments
共進(jìn)行三組實(shí)驗(yàn):
8.1 Configuration Comparison
使用圖1中的CNN結(jié)構(gòu)進(jìn)行實(shí)驗(yàn),在C/D/E網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行多尺度的訓(xùn)練,注意的是,該組實(shí)驗(yàn)的測試集只有一個尺度。如下圖所示:
Figure3 Performance at a single test scale
8.2 Multi-Scale Comparison
測試集多尺度,且考慮到尺度差異過大會導(dǎo)致性能的下降,所以測試集的尺度Q在S的上下32內(nèi)浮動。對于訓(xùn)練集是區(qū)間尺度的,測試集尺度為區(qū)間的最小值、最大值、中值。
Figure4 Convnet performance at multiple test scales
8.3 Convnet Fusion
模型融合,方法是取其后驗(yàn)概率估計(jì)的均值。
融合圖3和圖4中兩個最好的model可以達(dá)到更好的值,融合七個model會變差。
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.
總結(jié)
以上是生活随笔為你收集整理的论文Very Deep Convolutional Networks for Large-Scale Image Recognition的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北美公司面试经验笔记
- 下一篇: 机器学习ML简史