AlexNet模型的解析及tensorflow實現


AlexNet是ImageNet LSVRC 2012比賽中分類效果第一的深度神經網絡模型,點擊鏈接下載論文http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf 

 1.模型的表現及結果

AlexNet模型主要在ILSVRC2010數據集與ILSVRC2012數據集上進行了訓練與測試。在2012年的測試集上,模型取得top-5 error 15.3%,比第2名26.2%高了不少。由於ILSVRC2010的測試集的標簽可用,AlexNet在2010測試集上[top-1error 37.5%,top-5 error 17.0%],比當時的第一名[top-1 error 45.7%,top-5 error 25.7%]效果好了不少。


2.數據集

ILSVRC2012的數據集約120萬張圖像,共包含1000個類。對圖像數據集進行的預處理包括:

  (a) 統一所有的圖像大小為256x256。將圖像的短邊縮放為256,然后截取縮放后的圖像中心256x256的圖像;

  (b) 對縮放后的 256*256 訓練圖像統計均值,並對所有圖像減去均值。具體實現時並不像論文所寫的計算每個像素的均值,而是統計所有圖像的RGB均值[r,g,b],並在訓練以及測試時減去這個均值[r,g,b]。網絡上有預訓練好的AlexNet模型代碼,其中訓練集的RGB均值為[124., 117., 104.]。

  訓練集與測試集的圖像不參與均值的計算,但是會進行縮放,並且減去均值。

數據擴增部分采取的操作:

  詳見第4部分。


 3.網絡結構

3.1 AlexNet由8層神經網絡層組成,分別是 input -> { 卷積層1 -> 卷積層2 -> 卷積層3 -> 卷積層4 -> 卷積層5 -> FC6 -> FC7 -> FC8 } -> softmax。網絡的輸入是[N, 227, 227, 3],圖像的大小是[227, 227, 3]。

輸入層:

輸入: [227x227x3]

第1層:conv1 -> relu -> norm1 -> max pool1

conv1:96個11x11 filter, stride=4, pad=0. output=[55x55x96]

max pool1:3x3 filter, stride=2. output=[27x27x96]

第2層:conv2 -> relu -> norm2 -> max pool2

conv2: 256個5x5 filter, stride=1, pad=2. output=[27x24x256]

max pool2: 3x3 filter, stride=2. output=[13x13x256]

第3層:conv3 -> relu

conv3: 384個3x3 filter, stride=1, pad=1. output=[13x13x384]

第4層:conv4 -> relu

conv4: 384個3x3 filter, stride=1, pad=1. output=[13x13x384]

第5層:conv5 -> relu -> max pool5

conv5: 256個3x3 filter, stride=1, pad=1. output=[13x13x256]

max pool5: 3x3 filter, stride=2. output=[6x6x256]

第6層:

FC6 -> relu -> dropout 6, 4096個神經元

第7層:

FC7 -> relu -> dropout 7, 4096個神經元

第8層:

FC8, 1000個神經元

3.2 神經網絡層的說明,按照它們的重要程度的順序進行

(a) Relu非線性

神經元的輸出函數一般是tanh(x)或者sigmoid(x),本文使用Relu非線性函數 f(x) = max(0, x). 在利用梯度下降進行訓練時,飽和非線性函數(tanh,sigmoid)比非飽和非線性函數(relu)速度更慢。使用relu的深層卷積網絡比使用tanh的網絡訓練要快上幾倍。

(b) Training on GPUs

  GTX580 GPU內存3GB,在兩塊這樣的GPU上進行訓練,利用並行的方式。

(c) Local Response Normalization(LRN)

Relu已經不需要normalization就可以防止飽和現象,但是本文發現LRN依然可以幫助提升模型的泛化性能。本文的LRN如下,

其中 aix,y 含義是第 i 個卷積核在(x,y)處的輸出經過 relu 的結果,bix,y 指的是aix,y 經過LRN后的結果。

n是鄰近的n個卷積核輸出,卷積核的書序是訓練之前就人為確定的,N是本層的所有卷積核數目。k,n,α,β是超參數,由驗證集決定,訓練中使用 k = 2, n = 5, α = 10-4β = 0.75

LRN分別減少模型的top-1 error 1.4%和top-5 error 1.2%。

(d) Overlapping Pooling

 常規的pooling都是 z=2, s=2, 本文使用z=3, s=2,所以pooling時會有重疊現象,這減少模型的top-1 error 0.4% 和 top-5 error 0.3%,而且觀察到重疊池化不易過擬合。

3.3 損失函數(優化目標)

AlexNet模型的優化目標是 最大化多類邏輯回歸,等價於最大化交叉熵(maxmizing the average cross training case of the log-probability of the correct label under the prediction distribution)。


4. 減少過擬合

整個模型大概有6000萬的參數,主要采用2種方法減少過擬合。

4.1 數據擴增(Data Augmentation)

減少模型的過擬合最簡單與常用的方法就是人工的擴增數據集。本文使用的擴增圖像數據的方法計算簡單,所以新增的圖像無須提前存儲在硬盤上(即可以隨時生成)。

  第一種是圖像平移與水平翻轉,訓練時,在256x256圖像上取 224x224 大小的圖像以及它們的水平翻轉圖像,因此一張圖像可以擴展到 (256-224)*(256-224)* 2 = 2048張,數據集可以擴展到2048倍。 實際都是取227x227的圖像作為模型的輸入,因此2048倍變為(256-227+1)*(256-227+1)* 2 =1800,這樣就擴增了數據集1800倍。

  測試時,取 256x256 圖像的4個角與中心的224x224圖像以及它們的水平翻轉圖像共10張,輸入模型后,將softmax層在這10個圖像上的預測平均值作為原圖像的預測。

  第二種是改變訓練集的圖像在RGB通道的值。本文對訓練集圖像的RGB通道像素執行PCA,將PCA的特征值乘上隨機量,隨機量是從均值為0,標准差0.1的高斯分布中取的。

原圖像 = [p1, p2, p3] [α1, α2, α3]T,加入隨機量之后圖像 = [p1, p2, p3] [α1λ1, α2λ2, α3λ3]T,λ就是隨機量。

4.2 Dropout

訓練過程中,以概率p使隱層中的神經元的輸出為0,則神經元就被 dropout了,它們的輸出不會影響到前向傳播,也不會參與BP。每次迭代都有不同的神經元被dropout,可以看作是模型得到不同結構的網絡,這些網絡共享權重。Dropout使得一個神經元的輸出不能依賴於特定的神經元,減少了神經元之間復雜的互適應關系,使得模型學到的特征更加健壯。

測試時,不使用dropout,全部神經元參與預測,但是所有神經元的輸出 x 0.5。

本文在全連接層的前2層使用dropout技術,可以緩解過擬合問題。但是dropout使得迭代次數加倍才能收斂。


5. 模型實現的一些細節

5.1 使用SGD優化模型,batch_size=128, momentum=0.9,weight_decay=0.0005,

是迭代次數,ν是momentum,ε是學習率,<φL/φω|ωi>是第i個batch Di的關於ωi偏導的平均

5.2 初始化參數

  每層的權重w初始化:均值=0,標准差=0.01的高斯分布

  第2,4,5層,全連接層 的偏差biases初始化:全1

  其余層的偏差biases:全0

 5.3 學習率

初始學習率0.01。當驗證集精度不再增加時,就手動的將學習率減小10倍,在訓練停止前學習率減小了3次(學習率1e-5)。總共進行了90個epoch的訓練,在兩塊NVIDIA GTX580 3GB GPU上面運行了5~6天。


 6. 結果

6.1 模型在ImageNet數據集上的效果

 6.2 模型評估

第一個圖可視化顯示了與圖像緊鄰的卷積核學到的特征。

第2個圖顯示了圖像經過模型后產生的 (FC-7)4096維特征,如果兩個圖像的4096維特征的歐氏距離比較近,那么模型就認為這兩個圖像在全局水平上比較相似(內容相似,類別相同等...)。

第1層的96個卷積核直接從圖像上學到的特征。由於兩個GPU分開連接,GPU1上的卷積核主要學到顏色無關的特征,而GPU2主要學到顏色相關的特征。每次訓練都是這種特征差異,而且與隨機初始化無關。

 

左邊是ILSVRC-2010的8張圖像,每張圖像下面的黑色字體是圖像的正確標簽,緊接着的下面是模型預測的圖像的前5個最有可能的標簽。紅色標簽標示模型的預測正確(top-5)。

右邊的第一列是ILSVRC-2010測試集的圖像,剩下的6列是訓練集中的圖像,經過模型產生的特征4096維特征(FC-7),與測試集圖像的4096維特征的歐氏距離最近的6個圖像。

 計算兩個4096維特征的歐氏距離,計算效率比較低,但是可以訓練自動編碼機(AE)將長向量壓縮為短二維碼,這可以作為一個比較好的圖像檢索方法。


 7. 討論

在視頻處理方面使用更深更大的卷積網絡,因為視頻中包含了靜態圖像所不具備的豐富的時空信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM