VGGNet于2014年提出,在文獻VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
中有詳細介紹。
摘要 本文研究了在大規模圖片識別中,卷積神經網絡的深度對準確率(accuracy)的影響。我們的主要貢獻是通過非常小的3x3卷積核的神經網絡架構全面評估了增加深度對網絡的影響,結果表明16-19層的網絡可以使現有設置的網絡性能得到顯著提高。這項發現是我們在2014年的ImageNet比賽中提交方案的基礎,我們的團隊分別在定位和分類中獲得了第一和第二的成績。我們還證明了此模型可以泛化到其他數據集上,并達到當前最佳水平。我們已經公布了兩個性能最佳的卷積神經網絡模型,以便深度視覺在計算機視覺中的進一步研究。
1 介紹
卷積神經網絡最近在大規模圖片和視頻識別中取得了重大成功,這可能得益于大型開源圖片庫,比如ImageNet,以及高性能計算系統,如GPU或大規模分布式集群。特別是ImageNet大規模視覺識別挑戰(ILSVRC),對深度視覺識別架構的發展起到了重要作用,它為幾代大規模圖片識別系統——從高維淺層特征編碼(ILSVRC-2011的獲勝者)到深層卷積神經網絡(ILSVRC-2012的獲勝者)——提供了測試平臺。
隨著卷積神經網絡在計算機視覺領域的應用越來越廣,越來越多的人嘗試改進Krizhevsky等人在2012年提出的原始架構,以得到更好的準確率。例如,在2013年ImageNet大賽中性能最好的改進方案——在第一個卷積層中使用較小的接受域窗口以及較小的步長,另一種改進方案是在整幅圖片及多個尺寸上多次訓練和測試網絡(Sermanet et al.2014;Howard, 2014)。在本文中,我們著眼于卷積神經網絡中的另一個方面——深度。為此,我們固定了架構中的其他參數,并通過添加卷積層穩定地增加網絡深度。這是可行的,因為我們在每層都使用非常小的3x3卷積核。
因此,我們提出了更精確的卷積神經網絡架構,不僅在ILSVRC分類和定位中取得最好成績,還在其他圖片識別數據集中取得卓越性能,即便只作為簡單框架的一部分(如不需要微調的線性SVM深度特征分類器)。我們公布了兩個最佳性能模型,以便進一步研究。
本文組織結構如下。在第二部分,描述了卷積神經網絡的設置。圖片分類的訓練及評估細節在第三部分中闡述。在ILSVRC分類任務中不同設置的比較在第四部分中闡述。在第五部分,總結本文內容。為了完整性,我們還在附錄A中描述評估了我們在ILSVRC-2014中的物體定位系統,并在附錄B討論了深度特征在其他數據集上的泛化。最后,在附錄C中列出了本文的主要修訂記錄。
2 卷積神經網絡的設置
為了公平衡量增加卷積深度對網絡的影響,我們所有卷積層的設置均使用與Ciresan(2011)和Krizhevsky(2012)相同的設計原則。在這一部分,我們首先描述了卷積神經網絡的通用結構,然后詳細介紹了評估中具體配置細節。最后描述了我們的模型與先前最好網絡的比較。
2.1 架構
在整個訓練中,卷積神經網絡的輸入為固定的224x224的RGB圖片。唯一的預處理是對每個像素減去ImageNet訓練集中RGB的平均值。圖片通過一系列3x3卷積核(是用來獲取上下左右及中心的最小尺寸)的卷積層。在一種配置中,也使用1x1的卷積核,這可以看做是輸入通道的線性變換(后面接一個非線性變換)。卷積滑動步長固定為1;卷積層的空間填充(padding
)模式為保留原空間分辨率,例如3x3的卷積層,padding為1。空間池化(pooling)包含5個最大池化層,接在部分卷積層后面(不是所有卷積層)。最大池化層使用2x2的窗口,滑動步長為2。
在一系列卷積層(不同架構有不同深度)后為3個全連接層(Fully-Connected):前兩個每個含有4096個通道,第三個用來給ILSVRC進行分類,因此有1000個通道(1000個類)。最后一層使用softmax。全連接層的設置與所有網絡一致。
所有隱藏層都使用ReLU非線性激活函數。注意到我們的網絡(除了一個)都不包含局部響應標準化(LRN):在第四部分 中會展示,這個標準化并不會提高網絡在ILSVRC數據集上的性能,反而會增加內存消耗和計算時間。在使用的情況下,LRN層的參數是(Krizhevsky et al. 2012)的參數。
2.2 設置
本文所評估的卷積神經網絡的設置在表1列出,每列一個。接下來我們稱他們為(A-E)。所有配置都遵循2.1所述的通用設計,只有深度不同:從網絡A的11層(8個卷積層3個全連接層)到網絡E的19層(16個卷積層3個全連接層)卷積層的寬度(通道數)非常小,從第一層的64開始,每個最大池化層后增加1倍,直到512。
表2給出了每個設置的參數數目。盡管網絡很深,但是網絡的權重數目并沒有一個更淺但是卷積層更寬和接受域更大的網絡權重數目大(sermanet et al., 2014有144M的權重)。
2.3 討論
本文網絡的設置與ILSVRC-2012好ILSVRC-2013大賽中的前幾名完全不同。沒有在第一個卷積層使用大的接受域(如11x11的卷積核,滑動步長為4(Krizhevsky et al. 2012),或者7x7的卷積核,滑動步長為2(Zeiler&Fergus,2013;Sermanet
et al. 2014)),我們在整個網絡使用3x3的卷積核,與每個像素值進行卷積(步長為1)。很明顯,兩個3x3卷積層(中間沒有池化層)相當于5x5的接受域;三個這樣的層相當于7x7的接受域。那么用三個3x3的卷積層代替一個7x7的卷積層有什么好處呢?首先,我們包含三個非線性修正層而非單一層,這使決策函數更具有區分性。其次,我們減少了參數數量:假設一個含有三層3x3卷積層堆疊的輸入和輸出都包含C個通道的網絡,權重數量為3(32C2)=27C2; 而一個7x7的卷積層,需要72C2=49C2個權重參數,相對增加了81%,這相當于在7x7的濾波器上加了一個正則化,迫使它們通過3x3的濾波器進行分解(中間有非線性的加入)。
1x1卷積層的加入(表1中的C)是一種為決策增加非線性因素的方式,不影響卷積層接受域。盡管在這里,1x1的卷積實質上是相同空間維度的線性投影(輸入和輸出通道相同),但是修正函數引入了非線性因素。值得注意的是1x1卷積層最近被Lin等人(2014)用在“Network in Network”結構中。
小尺寸的卷積濾波器之前被Ciresan(2011)等人用過,但是他們的網絡深度遠小于我們,并且他們沒有在大規模ILSVRC數據集上做評估。Goodfellow等人(2014)在識別街景數字的任務中使用了深度卷積神經網絡(11層),展示了增加深度帶來的優越性能。GoogLeNet(2014),在ILSVRC-2014的識別任務中獲得了最佳表現,雖然與我們的網絡不同,但是相似的是都基于很深的卷積網絡(22層)以及很小的卷積濾波器(除了3x3,他們還使用了1x1和5x5的濾波器)。但是他們的網絡拓撲比我們的更復雜,而且為了減少計算量,特征圖的空間分辨率在第一層衰減的很嚴重。在第4.5部分將展示我們的模型在單一網絡分類中準確率優于GoogLeNet。
3 分類框架
前面的部分我們介紹了網絡設置的細節。這一部分,我們將詳細描述分類卷積神經網絡的訓練與評估。
3.1 訓練
卷積神經網絡的訓練過程與Krizhevsky等人(2012)(除了多尺寸訓練數據樣本的裁剪,后面會介紹)的一樣。就是說,通過用包含動量的小批量梯度下降(基于反向傳播)做多項式邏輯回歸的優化器來對模型進行訓練。批次大小為256,動量為0.9,通過權值衰減(L2懲罰因子設置為5*10-4)和對前兩個全連接層進行dropout(比率0.5)實現正則化。學習率初始化為0.01,當驗證集準確率不提升時以10倍速率衰減(除以10)。總的來說,學習率會衰減3次,然后訓練次數為370K(74代)。我們猜想,盡管與Krizhevsky(2012)等人的網絡相比,我們的網絡參數更多,深度更深,但是卻需要更少的epoch次數來收斂,因為(1)深度及更小的濾波器數量隱式增強了正則化;(2)某些層執行了預初始化。
網絡權重的初始化很重要,由于深度網絡梯度下降的不穩定性,不好的初始化會阻礙學習。為了規避這個問題,我們從訓練網絡A(表1)開始,它足夠淺,能用隨機初始化。然后,當訓練更深網絡結構時,我們用網絡A的權重初始化前四個卷積層和后三個全連接層(中間層隨機)。對預初始化層,不降低學習率,允許他們在學習過程中改變。對于隨機初始化,我們從0均值和0.01方差的正態分布中取值。偏差初始化為0。值得注意的是,我們發現可以用Glorot&Bengio(2010)中的隨機初始化程序來對權重進行初始化,而不需要進行預訓練。
為了得到固定的224x224的RGB輸入圖片,我們隨機從經過尺寸縮放的訓練集圖片中進行裁剪(每張圖的每次SGD迭代時裁剪一次)。為了進一步對訓練集數據進行增強,被裁剪圖片將進行隨機水平翻轉及RGB顏色轉換。訓練圖片的尺寸縮放將在后面闡釋。
訓練集圖片尺寸 令S為各向同性縮放的訓練圖像最小邊, 卷積神經網絡的輸入就是從中裁剪的(S也稱為訓練尺寸)。裁剪尺寸固定為224x224,原則上S可以取任何大于等于224的值:若S=224,裁剪圖像將使用整個圖像的統計信息,完全涵蓋訓練圖像的最小邊;若S>>224,裁剪圖像就會取圖像的一小部分,包含一個很小的對象或對象的一部分。
我們考慮使用兩種方式來設置訓練尺寸S。第一種是固定S,針對單尺寸圖片的訓練。(注意,裁剪的樣本圖像內容仍然能夠代表多尺寸圖片的統計信息)在實驗中,評估了兩種固定尺寸的訓練模型:S=256(在之前研究中廣泛使用)和S=384。給一個卷積神經網絡,首先用S=256訓練。為了加速S=384的訓練,使用在S=256上的預訓練權重來初始化權重,并且使用較小的初始學習率0.001。
第二種設置S的方式是使用多尺寸圖像訓練,即每個訓練圖片的尺寸是[Smin,Smax]之間的隨機數(這里使用Smin=256,Smax=512)。由于圖像中的對象可能大小不一,所以訓練中采用這種方式是有利的。這可以看作是一種尺寸不定(scale jittering)的訓練集數據增強,使得一個單一模型能夠識別各種尺寸的對象。考慮到速度,我們使用與微調后的S=384的單一尺寸預訓練模型相同設置的模型,來訓練多尺寸模型。
3.2 測試
在測試時,給定一個訓練后的卷積神經網絡及一張輸入圖片,用以下方式進行分類。首先,各向同性縮放成預定義的最小邊,設為Q(也稱為測試尺寸,注意Q不需要等于訓練尺寸S(將在第4部分解釋),每個S使用多個Q可以提高性能)。然后,根據Sermanet的方法將網絡密集應用在測試圖片上,也就是說,全連接層先轉化為卷積層(第一個全連接層轉為7x7的卷積層,后兩個轉化為1x1的卷積層)。再將這樣得到的全卷積網絡運用在整幅圖像上(未裁切的)。輸出是一個分類得分圖,通道數與類別數先溝通呢個,空間分辨率依賴于輸入圖片的尺寸。最后,為了得到固定尺寸的分類得分向量,將分類得分圖進行空間平均化(求和——池化)。我們同樣使用水平翻轉對測試圖像進行增強;在原始圖像和翻轉圖像上的soft-max分類概率的平均值作為這幅圖像的最終得分。
由于測試階段將全卷積網絡用在了整個圖像,因此不需要對圖像進行多個裁切采樣(Krizhevsky2012),因為網絡對每個裁切的重新計算會使效率降低。但是,使用大量裁切圖像可以提高準確率,如同Szegedy等人的網絡,因為和全卷積網絡相比,它能生成關于輸入圖像更好的采樣。同樣的,由于不同的卷積邊界條件,多重裁切評估與密集評估是互補的:對一個裁剪圖片使用卷積網絡,卷積得到的特征圖被0填充,而密度評估中,相同裁切圖的填充自然而然來自于圖片的相鄰像素(由于卷積和空間池化),大大增加了網絡整體的接受域,所以更多上下午信息被獲取。盡管我們認為在實踐中多尺寸裁切圖像增加的計算時間并不能證明其具有更高準確率的潛質,但是為了參考,我們依然在評估時對每個尺寸使用了50 張裁切圖像(5×5個規則網格以及水平翻轉),3種尺寸一共150張裁切圖像,這和Szegedy等人的網絡中使用4種尺寸一共144張裁切圖像是可比的。
3.3 實現細節
我們的實現使用開源的C++ Caffe工具箱(Jia,2013)(2013年12月的分支),但是進行了一些重新修改,允許我們用同一個系統的多個GPU訓練和評估模型,以及對全尺寸(未裁剪)圖片的多種縮放(上文提到的)進行訓練評估。GPU批量梯度下降計算完成后,取平均數作為所有批次的梯度。梯度計算在多個GPU間是并行計算的,所以結果與在單個GPU上訓練是一樣的。
雖然最近提出了更復雜的加速卷積網絡訓練的方法(Krizhevsky2014),它在網絡不同層上用模型和數據并行計算,但是我們發現我們的方法更簡單,且在4個GPU系統上的速度相對于單GPU提升了3.75倍,在NVIDIA Titan Black GPU上,訓練單個網絡需要2~3周的時間。
4 分類實驗
數據集 在本章,我們講述了卷積神經網絡在ILSVRC2012數據集上的分類結果(被用在ILSVRC2012——2014挑戰賽上)。數據集包含1000個類別,被分為三部分:訓練集(1.3M張圖片),驗證集(50K張圖片),測試集(100K張圖片,沒有標簽)。分類性能使用兩個辦法評估:top-1和top-5 error。前者是一個多類分類錯誤率,即錯誤分類圖像的比例;后者是在ILSVRC上的主要評估標準,即真實類別不在top-5預測類別之中的圖像的比例。
對于大部分實驗,我們使用驗證集作為測試集。某些實驗也在測試集上進行,并提交給官方ILSVRC服務器作為“VGG”團隊參加ILSVRC-2014競賽。
4.1 單一尺寸測試數據評估
我們從評估在單一尺度上使用第2.2中配置的獨立卷積網絡模型的性能開始。測試集圖片大小如下設置:對于固定的S,Q=S,對于變動的S∈[Smin, Smax>],Q=0.5(Smin + Smax>)。結果如表3中。
首先,注意使用局部相應標準化網絡(A-LRN)的性能并沒有比未用標準化層的A高。因此我們沒有在更深的網絡結構上使用標準化操作(B-E)。
其次,我們發現分類的錯誤率隨著卷積層的增加而減少:從11層的A到19層的E。注意,盡管深度相同,配置C(包含3個1x1卷積層)沒有配置D(使用3x3卷積層)性能好,這意味著添加非線性層的確有用(C比B好),但是使用卷積獲取空間上下文信息更有用(D比C好)。當深度達到19層時,錯誤率達到飽和,但是更大的數據集使用更深的模型會更好。我們也用網絡B與一個5x5的淺卷積網絡(派生自B但是將3x3卷積層換成了一個5x5卷積層,與2.3種所述接受域相同)進行了比較,淺層網絡的top-1錯誤率比B(在中心裁剪圖像上)高了7%,證明了小濾波器的神劇卷積網絡比大濾波器的淺層網絡性能更好。
最后,訓練時尺寸變化(S ∈ [256;512]) 的性能比固定最小邊(S = 256 or S = 384)的性能要好,盡管測試時使用的是單一尺寸。這證明訓練集通過變化尺寸來進行數據增強的確能獲取更多尺寸的圖片統計信息。
4.2 多尺寸測試數據評估
評估了卷積網絡模型在單一尺度上的性能之后,我們現在來評估在測試階段使用尺寸抖動的效果。先在多個尺寸的測試數據上運行模型(多個Q值),然后計算每個類概率的平均值。考慮到訓練尺寸與測試尺寸的差異太大會導致性能下降,模型使用固定的S訓練,通過3個接近訓練集的測試集尺寸評估,:Q={S-32, S, S+32}。同時,訓練時的尺寸波動使測試時能使用更大范圍尺寸的圖像,所以使用S ∈ [Smin;Smax]訓練的模型用更大范圍的Q來評估,Q={Smin, 0.5(Smin, Smax), Smax}。
結果如表4,表明在測試時圖片尺寸波動會使性能更好(對比表3中單一尺寸的結果)。與之前相同,最深的配置(D和E)表現的最好,并且訓練時尺度波動比固定最小邊S表現更好。我們在驗證集上最好的單一網絡模型錯誤率為24.8%(top-1)7.5%(top5),在表4種加粗。在測試集上,配置E達到了7.3%的top-5錯誤率。
4.3 多裁剪評估
Table5 中我們對密集卷積網絡評估和多重裁切評估進行了比較(見Sect 3.2)。我們同樣還評估了兩種技術通過計算兩者soft-max輸出平均值的互補結果。可以看出,使用多重裁切比密集評估的效果略好,并且兩種方法是完全互補的,因為兩者組合的效果比每一種都要好。根據以上結果,我們假設這是由對于卷積邊界條件的不同處理方法造成的。
4.4 卷積網絡融合
到目前為止,我們評估了獨立卷積網絡模型的性能。這一部分的實驗,我們將通過計算多個模型soft-max分類概率的平均值來對它們的輸出進行組合。由于模型的互補性,性能得到了改善,這也用在2012 (Krizhevsky et al., 2012) 和2013(Zeiler & Fergus, 2013; Sermanet et al., 2014)的ILSVRC的最佳結果中。
結果如表6。在ILSVRC比賽中我們進訓練了單一尺寸網絡和多尺寸網絡D(僅僅微調了全連接層而非所有層)。7個模型組合結果在ILSVRC中測試的錯誤率為7.3%。提交后,我們考慮禁用兩個最好表現的多尺寸模型(D和E)進行組合,使用密集評估時錯誤率減少到7.0%,使用密集和多裁剪評估時錯誤率為6.8%。作為參考,我們的最佳單一模型錯誤率為7.1%(E,表5)。
4.5 與業界最好結果的比較
最后,我們在表7與業界最好結果進行了比較。在2014年的ILSVRC比賽的分類任務中,我們的VGG團隊取得了第二名的成績,使用了7個模型組合的測試錯誤率,為7.3%,提交后,使用2個模型的組合,將錯誤率降低到了6.8%。
從表7可以看出,我們的深度卷積神經網絡比在ILSVRC-2012和ILSVRC-2013中成績最好的模型效果明顯要好。我們的結果與分類任務的冠軍旗鼓相當(GoogLeNet為6.7%的錯誤率),并且明顯比ILSVRC-2013的冠軍Clarifai的表現好得多,它使用外部訓練數據時的錯誤率為11.2%,而不使用外部數據時為11.7%。更標志性的是,我們最佳的結果是通過對兩個模型的組合——這明顯比大多數ILSVRC參賽模型要少。在單一網絡性能上,我們的模型取得了最好的結果(7.0%的測試錯誤率),比單一的GoogLeNet低0.9%。值得注意的是,我們并沒有摒棄經典的卷積網絡框架,并通過顯著增加深度對它的性能進行了提升。
5 結論
本文評估了深度卷積網絡(到19層)在大規模圖片分類中的應用。結果表明,深度有益于提高分類的正確率,通過在傳統的卷積網絡框架中使用更深的層能夠在ImageNet數據集上取得優異的結果。附錄中,展示了我們的模型可以很好的泛化到更多數據集種,性能達到甚至超過了圍繞較淺深度的圖像表達建立的更復雜的識別流程。我們的實驗結果再次確認了深度在視覺表達中的重要性。