Top100論文導讀:深入理解卷積神經網絡CNN(Part Ⅱ)
Adrian Colyermorning paperAccel Partners
https://www.linkedin.com/in/adriancolyer/
Twitterhttps://twitter.com/adriancolyer
這篇文章介紹“ top100”列表中卷積神經網絡的第二部分,Part的內容可以。本篇主要介紹以下幾篇論文:
Return of the devil in the details: delving deep into convolutional nets,Chatfield,2014.
Spatial pyramid pooling in deep convolutional networks for visual recognition,He,2014.
Very deep convolutional networks for largescale image recognition,Simonyan
&Zisserman,2014.
Going deeper with convolutions,Szegedy,2015.
這篇論文是一個非常好的研究,CNN已經在圖像識別任務中打敗了手工提取特征,但是由於所有這些不是基於相同條件下進行的比較,所以很難分辨出真正占據差異的因素。ChatfieldIFV淺層表示,三種基於CNN的不同深層表示,以及對目標數據集進行預訓練和微調的深層表征。對於所有的研究,使用相同的任務(PASCAL VOC分類),三種不同的CNN表示分別為基於Krizhevksy的架構CNN-F(Fast)、使用減小的步長和較小的第1卷積層的感知野的CNN-M(Medium)以及基於OverFeat的“準確”網絡的CNN-S(Slow)。
主要發現:
- 增強將IFV和CNN的性能提高了約3%。翻轉隻能起到略微的作用,但翻轉結合裁剪效果卻很好。IFV和CNN都受到顏色信息的添加或減少的影響,將圖像轉換為灰度後重新訓練CNN,會導致3%的性能下降。
- 基於CNN的方法仍然優於淺層編碼等方法10%的性能。
- CNNM和CNNS均優於CNNFast 23%的性能;CNNM比CNNS快25%。
- 再次訓練CNN,最後一層較低的維數導致了邊緣性能的提升。
-
微調導致結果有顯著差異,提高約2.7%。
論文提出了一種基於CNN的圖像分類方法的嚴格的經驗評估,以及與傳統的淺層特征編碼方法的比較。結果表明,讓數據增加可以顯著提高淺層表示的性能。盡管有了這樣的改進,但深層次架構的性能仍然大大超過了淺層的方法。結果表明,在ILSVRC數據集上的深層表現是其他數據集的性能一個很好的指標,另外使用深層表示和線性SVM的組合的微調可以進一步提高已實現的好結果。
到目前為止,CNN的架構一般為一係列的卷積層,之後是全連接層以及N路softmax輸出,這種架構造成其隻能處理固定大小的圖像。但卷積層中使用的滑動窗實際上可以處理任何圖像尺寸,隻是由於全連接層具有固定尺寸的輸入限製了尺寸,導致效果遠遠不理想。
空間金字塔池化(SPP)在卷積層和全連接層之間增加了一個新的層,新層的任務是將任何大小的輸入映射到固定大小的輸出。空間金字塔池化的思想早已存在於計算機視覺中,但並沒有被應用於CNN。
SPP通過將最後一層空間箱,因此無論圖像大小如何,空間箱的數量都會被固定。空間箱以不同的間隔尺寸被捕獲,在每個空間箱中,每個過濾器的響應使用最大池。
由於箱的數量已知,可以連接SPP輸出以給出固定長度的表示(見上圖),
這允許任意的尺度輸入。當輸入圖像處於不同的尺度時,網絡將提取不同尺度的特征。
將SPP層添加到四個不同網絡模型中,包括AlexNet(Krizhevsky等)和OverFeat後,都提高了它們的準確性。" 不僅僅是因為更多的參數,而是因為多層次池化
SPP技術也可用於檢測。之前最先進的RCNN方法需要從輸入圖像找到2000個候選窗口,並利用卷積網絡提取每個窗口的特征,這種方法是昂貴而又緩慢的。但SPP網絡僅提取一次特征圖(可能在多個尺度上),即對每個候選窗口運行一次空間金字塔池化。
之前了解了ConvNet一些變化,探索了不同窗口大小和步長以及多尺度的訓練和測試的結果。在本論文中,Simonyan和Zisserman讓所有的這些變量保持不變,探討了網絡深度對分類準確度的影響。
基本設置:固定大小的224 x 224 彩色輸入圖像,並且每個像素值減去其平均像素值(歸一化);卷積層使用具有3×3感知野的濾波器,並且配置一個1×1大小的卷積,步長固定為1像素;五個最大池化層與卷積層交織後進行空間池化;然後輸入到三個全連接層及最終的softmax層;隱藏層都使用ReLU激活函數。
網絡的實際架構如下表所示(注意使用了一個局部響應歸一化-LRN):

以下是作者的結果:
首先,局部響應歸一化並沒有提高準確性,反而增加了訓練時間,所以在較深的體係架構中不被使用。其次,分類誤差隨著ConvNet深度的增加而減小。
當深度達到19層時,模型的錯誤率達到飽和,但更深層的模型可能對較大的數據集是有益的。將表中網絡B與由55×5卷積層的淺層網絡進行了比較,結果表明,一對3×3的卷積層代替單個5×5卷積層後準確率提升了7%,這證實了具有小濾波器的深層網絡優於具有較大濾波器的淺層網絡。
這是論文主要介紹“Inception”網絡架構的實例“GoogLeNet”網絡,它在2014 ISLVRC(ImageNet)競賽中取得最好的結果。GoogLeNet網絡的深度是22層,整體架構令人難以置信。
盡管看起來令人恐懼,GoogLeNet實際上比兩年前獲勝的KrizhevskyConvNet的參數要少12倍,同時精度顯著提升。高效功率和內存使用是“Inception”架構的設計目標:
本文提出的深層架構設計的考慮因素主要是基於效率這個因素,而不是針對準確度。對於大多數實驗,這些模型的設計不是純粹的學術好奇心,而是可以應用於現實世界中,即使在大數據集中,其成本也是合理的。
你可以通過增加層數(深度)或者是每層的寬度使得的網絡“更大”,原則上這將導致更高質量的模型。然而,更大的網絡將導致更多的參數,使得它們容易過擬合。為了避免這種情況,需要更多的訓練數據以及更多的計算資源來訓練。
解決這個問題的一個方法是引入稀疏性,Arora等人在“”中表明,如果數據集的概率分布由大的、非常稀疏的深層神經網絡表示,則可以通過分析前一層激活值和高度相關輸出的聚類神經元的相關統計來使用最佳網絡技術每一層。
不幸的是,當涉及非均勻稀疏數據架構的數值計算時,目前的計算硬件設備效率很低。
是否有希望利用稀疏性的過濾器的架構,通過在當前的硬件上使用密集矩陣上的計算?Inception架構開始是對這一目標的進行探索。
Inception架構的主要思想是考慮卷積視覺網絡的最優局部稀疏架構如何被現成的密集組件近似和涵蓋。
假設使用層次架構的方法,這隻需找到最優層架構,然後對該架構進行堆疊即可。初始層的基本架構如下所示:
1×1的卷積檢測局部區域中的相關單元,較大(3×3和5×5)的卷積檢測更多的空間域。由於池化具有好的效果,所以每個階段加入池化。
雖然這種架構可能會涵蓋最優的稀疏架構,但它計算複雜度非常高、效率低。
解決方案是在所有3×3和5×5的路徑上使用1×1的卷積來降維。下圖給出了一個Inception層的最終架構:
一般而言,Inception網絡是由上述類型的模塊組成,模塊彼此堆疊,偶爾具有步長2的最大池化層將網格的分辨率減半。
GoogLeNet模型中將這些層疊在一起,深度為22層(如果池化層也被計數,則為27),總體模塊數量約為100個!梯度通過這麼多層傳遞將是一個挑戰。由於較淺的網絡仍然具有很強的辨別性能,因此向中間層添加輔助分類器(本節開頭的整個網絡圖中的黃色框)。這些分類器將較小的卷積網絡放置在Inception(4a)和(4d)模塊的輸出之上。在訓練過程中,損失會根據權重疊加,在測試時,這些輔助網絡會被丟棄。
Convolutional neural networks, Part 2Adrian Colyer
最後更新:2017-07-12 22:11:46
上一篇:
考察數據科學家數據降維知識的40道題,快來測測吧(附答案)
下一篇:
Top100論文導讀:深入理解卷積神經網絡CNN(Part Ⅰ)
技術分析 | 新型勒索病毒Petya如何對你的文件進行加密
學JAVA必讀!你沒學好JAVA是因為?
StringBuffer使用append提示String concatenation as argument to 'StringBuffer.append()' call
數據蔣堂 | 非等值分組
asp.net中TextBox設為隻讀後的取值問題
Swift字典類
Oracle Partition 分區詳細總結
構想:中文文本標注工具(內附多個開源文本標注工具)
深入分析Android (build/core/*.mk腳本)
曆程剖析:阿裏雲自研HTAP數據庫的技術發展之路