Very deep convolutional networks for larage-scale image recognition

1. 結構配置

  • 預處理只有減去所有RGB像素的均值
  • 使用最小的感受野3× 3,如果選擇1× 1,則可作爲輸入通道的線性變換(後面跟着激活函數的非線性)。
  • 卷積stride 1,pad 1(卷積圖大小不會因爲卷積而改變)
  • 共5個最大池化,窗口2× 2,stride 2
  • 全連接層前兩層4096,輸出1000
  • 所有激活選擇ReLU,不使用局部響應歸一化
  • 深度從11(8+3)到19(16+3),特徵圖從64開始每次增長2倍直到512

注意:
1. 兩個感受野3× 3卷積層排列等效於一個感受野3× 3卷積層,三個3× 3等效於7× 7,這樣做有兩個好處。一是結合了多個非線性激活代替了一個,讓決策函數更有選擇能力;二是減少了參數的數量,三個3× 3具有C 個特徵圖的卷積層有3×(32C2)=27C2 參數,而一個7× 7具有C 個特徵圖的卷積層則有1×(72C2)=49C2 參數。三個3× 3卷積層排列可以看作是對7× 7卷積層的正則化,強制使之分解爲三個3× 3並加入了非線性。
2. 增加1× 1卷積層可以在不改變感受野的情況下增加決策函數的非線性(來自於ReLU),其輸入輸出的特徵圖數量是相同的。

2. 分類框架

1. 訓練

  • softmax,mini-batch(batch size 256),gradient descent with momentum(0.9),L2 懲罰項(因子5e-4),兩個全連接層使用dropout(0.5),學習率初始爲0.01,在驗證集誤差停止下降時除以10,三次後停止(74 epochs)
  • 預訓練初始化權重,先隨機初始化淺層數(11)網絡進行訓練,深層數網絡使用淺層數網絡的前4卷積層和後3全連接層的參數來初始化,而中間的層選擇隨機初始化。所有的隨機初始化都是從0均值0.01方差正態分佈採樣而來。預訓練初始化層的學習率仍然按照一般的策略改變。
  • 偏置全部初始化爲0
  • 擴展數據集,對訓練圖像水平翻轉、顏色偏移和等軸縮放,隨機剪裁出固定的224× 224大小的網絡輸入圖像(每個mini-batch前都隨機剪裁一次)。縮放的訓練圖片最短邊S至少要有224,如果大於224則剪裁出圖片的一部分物體。有兩種設置S的方法。一是固定S(如256或384)後在其中隨機剪裁,二是S在一定範圍內(如256~512)隨機取樣,然後在其中隨機剪裁。

2. 測試

  • 將測試圖像等軸縮放,最小邊長爲預先定義的Q(不一定等於S,對每個S使用不同的Q會改善性能)
  • 將全連接層轉化爲卷積層,即第一個全連接層轉化爲7× 7卷積層,後兩個全連接層轉化爲1× 1。這會形成一個完全卷積的網絡。(最後3層卷積不增加pad,即若輸入7× 7的特徵圖,那麼輸出1× 1的特徵圖)
  • 將完全卷積網絡用在沒有剪裁的整張測試圖像上。
  • 得到類分數圖,其數量爲總類別數,空間分辨率不同取決於輸入圖像的尺寸。
  • 最終的固定大小類別分數向量是通過將類分數圖取空間平均而得到的(求和池化)。
  • 水平翻轉擴充測試集,類概率是取原始和翻轉圖像的分數平均而得到的。

3. 實現細節

將訓練數據集所有batch分配到多個GPU上並行同步的去計算每個batch的梯度向量,然後將這些梯度向量平均起來就是整個訓練集的梯度。由於一個總向量等於多個子向量之和,這樣得到的總梯度就相當於在一個GPU上運算的結果了。

注意: 兩個樣本同時輸入利用SGD得到的梯度,等於兩個樣本分兩次輸入利用SGD得到梯度之和取平均。

操作 結果
輸入訓練集 (batchSize,3,224,224)
卷積層(64,3,3,3) (batchSize,64,224,224)
最大池化(2,2) (batchSize,64,112,112)
卷積層(128,64,3,3) (batchSize,128,112,112)
最大池化(2,2) (batchSize,128,56,56)
卷積層(256,128,3,3) (batchSize,256,56,56)
卷積層(256,256,3,3) (batchSize,256,56,56)
最大池化(2,2) (batchSize,256,28,28)
卷積層(512,256,3,3) (batchSize,512,28,28)
卷積層(512,512,3,3) (batchSize,512,28,28)
最大池化(2,2) (batchSize,512,14,14)
卷積層(512,512,3,3) (batchSize,512,14,14)
卷積層(512,512,3,3) (batchSize,512,14,14)
最大池化(2,2) (batchSize,512,7,7)
展開 (batchSize,512× 7× 7 = 25088)
全連接層(25088,4096) (batchSize,4096)
全連接層(4096,4096) (batchSize,4096)
softmax層(4096,1000) (batchSize,1000)

測試全連接層權重 轉化的卷積層權重
(25088,4096) (4096,512,7,7)
(4096,4096) (4096,4096,1,1)
(4096,1000) (1000,4096,1,1)

3. 結果

1. 單尺度縮放

  • 深度加深誤差降低
  • 使用1× 1卷積層增加了非線性有效果,同時也要使用3× 3卷積層來獲取空間特徵
  • 兩個3× 3卷積層優於一個5× 5卷積層
  • 訓練時的尺度抖動比固定尺度效果好

2. 多尺度縮放

  • 測試時的尺度抖動比固定尺度效果好
  • 訓練和測試的尺度相差太大會有惡化
  • 一個訓練的尺度對應三個測試的尺度
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章