VGGnet閱讀筆記和實現

針對大批量圖片識別的深層卷積神經網絡

論文地址:https://arxiv.org/abs/1409.1556

[置頂]https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s5ss1.html強烈推薦學習。

特點:使用3x3的卷積濾波器,在16-19權重層(weight layers) 表現出色。

介紹:卷積神經網絡在大規模的圖像和視頻識別取得了很大成功。這多虧了大量的公共數據集,比如ImageNet,以及諸如GPU的出現。ILSVRC專門競賽也推動了卷積網絡的發展。20110年的冠軍是High dimensional shallow feature encodings(Perronnin et al),2012年的冠軍是deep Nets(Krizhevsky et al).

這篇文章,提出另一種重要的結構——它的深度。即穩定的通過增加更多卷積層增加這個網絡的深度,而這也更容易因爲使用了非常小的卷積濾波器。

結果是,我們創造出了顯然更準確的神經網絡。

論文結構:Sect.2一些ConvNet配置

                  Sect.3圖片分類和評估的細節

                  Sect.4 在ImageNet上分類任務比較

                  Sect.5 總結

 

  1. ConvNet配置

 

2.1結構

在訓練的過程,輸入是固定的224*224RGB圖片。唯一的預處理是,減小每一個像素RGB平均值。卷積核3x3,但是有時候也會使用1x1的卷積核,相當於線性變換。stride是1個像素。Padding 是根據卷積後預留的。比如,對於3x3 conv ,padding爲1, pooling 由5層max-pooling所設置的。 Max-pooling 也是在-個2x2 像素窗(pixel window)上運行的,stride是2.

緊接着3個FC是一個卷積層的棧。第一個擁有4096個通道,第三個1000個通道對應ILVSRC分類的1000個類。最後一層是soft-max 層,在所有網絡中全連接層的結構都是一樣的。

所有的隱藏層都採用了ReLU作爲激活函數(ImageNet classification with deep convolutional neural networks. In NIPS, pp. 1106–1114, 2012),並且強調所有網絡不包含Local Response Normalization:這種歸一化不會提升精度,但是會導致內存和算力的浪費。

(weights 的計算?)

2.2配置

 

爲什麼只採用3x3的卷積核? 兩個3x3卷積核的有效接收視場(effective receptive field)是5x5,三個是7x7,爲什麼不用一個大的7x7卷積核代替呢?首先,引入了三個ReLU層而不是一個,這使得決定函數更加有評價性。其次,我們減少了參數的數量:假定3x3卷積層的輸出都有C個通道,這個網絡則對應3(32C2)=27C2個權重。,同時一個7x7的卷積層需要72C2=49C2 參數。多了81%, 這可以看成是對7x7的卷積濾波器施加了正則化。

 

對1x1卷積層的合並可以看成是一種增加決定函數非線性的方法,而不會影響卷積層的接收視場。

 

  1. 分類的架構
    1. 訓練

訓練通過優化多項邏輯迴歸目標(multinomial logistic regression objective)使用momentum的小批量的梯度下降。Batch size爲256, momentum 爲0.9.訓練由weight decay (L2 weight decay 懲罰函數設置爲5e-4),和對於前兩個全連接層的dropout層正則化(dropout 爲0.5)。學習率最初爲0.01, 之後按照10的因子減少,當validation set accuracy 停止改進的時候。 最終,學習率減少了三倍, 學習在370k迭代(74個epochs). 我們推測儘管有大量的網絡參數以及與(Krizhevsky et al., 2012),相比更大的深度,這些網絡要求更少epochs來收斂因爲(a) 由更深的深度和更小的卷積導致的不清楚的歸一化;(b)對特定層的預初始化。

對網絡權重的初始化是如此的重要, 因爲糟糕的初始化梯度十分不穩定。爲了規避這個問題,開始時訓練A,(對初始化要求不高)。 之後訓練更深的結構,我們初始化最開始的四個卷積層以及最後的三個全連接層。

【如何初始化?】

圖片預處理:隨機裁剪(每個SGD迭代一次裁剪)。水平翻轉。任意的RGB色移。

S(training scale)爲256或384.爲了加速S=384網絡訓練,由S=256的網絡權重預訓練,之後我們使用更小的學習率10e-3.也可以將S設置成一個範圍如[256,512].

 

    1.  

測試首先,對輸入進行變換到預定義的最小圖像邊長,以Q代表(Q不一定等於S)。 按照(Sermanet et al., 2014)的方式。全連接層首先被轉換爲卷積層(第一個全連接層轉換爲7x7,後兩個轉換爲1x1 conv)。產生的全卷積層被應用到整個未裁剪的圖像。 結果是一個分類的分數圖(class score map),通道數和分類數相等,以及一個可變空間分辨率,這取決於圖片的尺寸。最後爲了獲得一個固定尺寸的圖片分類分數的向量,分類分數圖是空間平均的(spatially pooled).同樣爲了增強測試,我們水平翻轉圖片;soft-max函數用於最後一層的歸一化。

因爲全卷積層網絡被應用到整個圖片,所以沒有必要在測試的時候也進行裁剪。同時使用一系列crops可以提高準確率,因爲它帶來的是對輸入圖片更細的採樣相比全卷積網絡。

同樣的,多樣化的crop評估對於密的評估十分重要,由於不同的卷積邊界條件:當應用一個ConvNet到一個crop,卷積特徵圖被0填充,而在密估計的情況下,同樣的裁剪的填充來自於鄰近區域,這增加了網絡接收視場的,所以有更多內容被捕獲。而相信實際上對多樣性裁剪不符合隱藏的準確率增加。

 

 

3.3

實現細節 :C++ cafe toolbox。多GPU訓練利用了數據並行性,是通過分批將圖片送入不同GPU來實現的。在計算每個GPU batch的梯度後,梯度被平均化以獲得全部batch的梯度。 On a system equipped with four NVIDIA Titan Black GPUs, training a single net took 2–3 weeks depending on the architecture

 

4 分類測試

 

Dataset:  training :1.3M images

Validation:50K images

Testing:100k images

Evalution: TOP-1 and TOP-5 error

TOP-1:表示預測1次,正確即正確,錯誤即錯誤。

TOP-5:表示預測5次,只要有一次正確就表示正確。

 

4.1

 

一種測試尺寸

LRN不能提升準確度。

隨着層數的增加,而分類誤差在減小。D>C

 

多種測試尺寸

 

 

 

 

思考與實踐。

1.權重如何計算?

2.ABCDE網絡優點缺點比較?

3.multi-crop和dense方法有什麼區別?

4.不同訓練參數對訓練結果的影響(比如LR LD BATCHSIZE和weight_decay不同優化器和loss function)?

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章