【論文翻譯】Fast R-CNN
Fast R-CNN
Ross Girshick
Microsoft Research
[email protected]
摘要
本文提出了一種快速的基於區域的卷積網路方法(fast R-CNN)用於目標檢測。Fast R-CNN建立在以前使用的深卷積網路有效地分類目標的成果上。相比於之前的成果,Fast R-CNN採用了多項創新提高訓練和測試速度來提高檢測精度。Fast R-CNN訓練非常深的VGG16網路比R-CNN快9倍,測試時間快213倍,並在PASCAL VOC上得到更高的精度。與SPPnet相比,fast R-CNN訓練VGG16網路比他快3倍,測試速度快10倍,並且更準確。Fast R-CNN的Python和C ++(使用Caffe)實現以MIT開源許可證釋出在:
簡介
最近,深度卷積網路1 2已經顯著提高了影象分類1和目標檢測3 4的準確性。與影象分類相比,目標檢測是一個更具挑戰性的任務,需要更復雜的方法來解決。由於這種複雜性,當前的方法(例如,3 5 4 6)採用多級流水線的方式訓練模型,既慢且精度不高。
複雜性的產生是因為檢測需要目標的精確定位,這就導致兩個主要的難點。首先,必須處理大量候選目標位置(通常稱為“提案”)。 第二,這些候選框僅提供粗略定位,其必須被精細化以實現精確定位。 這些問題的解決方案經常會影響速度,準確性或簡單性。
在本文中,我們簡化了最先進的基於卷積網路的目標檢測器的訓練過程
所得到的方法用來訓練非常深的檢測網路(例如VGG16) 比R-CNN快9倍,比SPPnet快3倍。在執行時,檢測網路在PASCAL VOC 2012資料集上實現最高準確度,其中mAP為66%(R-CNN為62%),每張影象處理時間為0.3秒,不包括候選框的生成(所有的時間都是使用一個超頻到875MHz的Nvidia K40 GPU測試的)。
R-CNN與SPPnet
基於區域的卷積網路方法(RCNN)通過使用深度卷積網路來分類目標候選框,獲得了很高的目標檢測精度。然而,R-CNN具有顯著的缺點:
- **訓練過程是多級流水線。**R-CNN首先使用目標候選框對卷積神經網路使用log損失進行微調。然後,它將卷積神經網路得到的特徵送入SVM。 這些SVM作為目標檢測器,替代通過微調學習的softmax分類器。 在第三個訓練階段,學習檢測框迴歸。
- 訓練在時間和空間上是的開銷很大。對於SVM和檢測框迴歸訓練,從每個影象中的每個目標候選框提取特徵,並寫入磁碟。對於非常深的網路,如VGG16,這個過程在單個GPU上需要2.5天(VOC07 trainval上的5k個影象)。這些特徵需要數百GB的儲存空間。
- 目標檢測速度很慢。在測試時,從每個測試影象中的每個目標候選框提取特徵。用VGG16網路檢測目標每個影象需要47秒(在GPU上)。
R-CNN很慢是因為它為每個目標候選框進行卷積神經網路正向傳遞,而不共享計算。SPPnet5通過共享計算加速R-CNN。SPPnet5計算整個輸入影象的卷積特徵圖,然後使用從共享特徵圖提取的特徵向量來對每個候選框進行分類。通過最大池化將候選框內的特徵圖轉化為固定大小的輸出(例如,6X6)來提取針對候選框的特徵。多個輸出被池化,然後連線成空間金字塔池7。SPPnet在測試時將R-CNN加速10到100倍。由於更快的候選框特徵提取訓練時間也減少3倍。
SPP網路也有顯著的缺點。像R-CNN一樣,訓練過程是一個多級流水線,涉及提取特徵,使用log損失對網路進行微調,訓練SVM分類器,最後擬合檢測框迴歸。特徵也寫入磁碟。但與R-CNN不同,在5中提出的微調演算法不能更新在空間金字塔池之前的卷積層。不出所料,這種限制(固定的卷積層)限制了深層網路的精度。
貢獻
我們提出一種新的訓練演算法,修正R-CNN和SPPnet的缺點,同時提高其速度和準確性。因為它能比較快地進行訓練和測試,我們稱之為Fast R-CNN。Fast RCNN方法有以下幾個優點:
- 比R-CNN和SPPnet具有更高的目標檢測精度(mAP)。
- 訓練是使用多工損失的單階段訓練。
- 訓練可以更新所有網路層引數。
- 不需要磁碟空間快取特徵。
Fast R-CNN架構與訓練
Fast R-CNN的架構如下圖(圖1)所示:
圖1. Fast R-CNN架構。輸入影象和多個感興趣區域(RoI)被輸入到全卷積網路中。每個RoI被池化到固定大小的特徵圖中,然後通過全連線層(FC)對映到特徵向量。網路對於每個RoI具有兩個輸出向量:Softmax概率和每類檢測框迴歸偏移量。該架構是使用多工丟失端到端訓練的。
Fast R-CNN網路將整個影象和一組候選框作為輸入。網路首先使用幾個卷積層(conv)和最大池化層來處理整個影象,以產生卷積特徵圖。然後,對於每個候選框,RoI池化層從特徵圖中提取固定長度的特徵向量。每個特徵向量被送入一系列全連線(fc)層中,其最終分支成兩個同級輸出層 :一個輸出KK個類別加上1個背景類別的Softmax概率估計,另一個為KK個類別的每一個類別輸出四個實數值。每組4個值表示KK個類別的一個類別的檢測框位置的修正。
RoI池化層
RoI池化層使用最大池化將任何有效的RoI內的特徵轉換成具有H×WH×W(例如,7×77×7)的固定空間範圍的小特徵圖,其中HH和WW是層的超引數,獨立於任何特定的RoI。在本文中,RoI是卷積特徵圖中的一個矩形視窗。 每個RoI由指定其左上角(r,c)(r,c)及其高度和寬度(h,w)(h,w)的四元組(r,c,h,w)(r,c,h,w)定義。
RoI最大池化通過將大小為h×wh×w的RoI視窗分割成H×WH×W個網格,子視窗大小約為h/H×w/Wh/H×w/W,然後對每個子視窗執行最大池化,並將輸出合併到相應的輸出網格單元中。同標準的最大池化一樣,池化操作獨立應用於每個特徵圖通道。RoI層只是SPPnets 5中使用的空間金字塔池層的特殊情況,其只有一個金字塔層。 我們使用5中給出的池化子視窗計算方法。
從預訓練網路初始化
我們實驗了三個預訓練的ImageNet9網路,每個網路有五個最大池化層和五到十三個卷積層(網路詳細資訊,請參見實驗配置)。當預訓練網路初始化fast R-CNN網路時,其經歷三個變換。
首先,最後的最大池化層由RoI池層代替,其將H和W設定為與網路的第一個全連線層相容的配置(例如,對於VGG16,H=W=7H=W=7)。
然後,網路的最後一格全連線層和Softmax(其被訓練用於1000類ImageNet分類)被替換為前面描述的兩個同級層(全連線層和K+1K+1個類別的Softmax以及類別特定的檢測框迴歸)。
最後,網路被修改為採用兩個資料輸入:影象的列表和這些影象中的RoI的列表。
微調
用反向傳播訓練所有網路權重是Fast R-CNN的重要能力。首先,讓我們闡明為什麼SPPnet無法更新低於空間金字塔池化層的權重。
根本原因是當每個訓練樣本(即RoI)來自不同的影象時,通過SPP層的反向傳播是非常低效的,這正是訓練R-CNN和SPPnet網路的方法。低效的部分是因為每個RoI可能具有非常大的感受野,通常跨越整個輸入影象。由於正向傳播必須處理整個感受野,訓練輸入很大(通常是整個影象)。
我們提出了一種更有效的訓練方法,利用訓練期間的特徵共享。在Fast RCNN網路訓練中,隨機梯度下降(SGD)的小批量是被分層取樣的,首先採樣NN個影象,然後從每個影象取樣R/NR/N個 RoI。關鍵的是,來自同一影象的RoI在向前和向後傳播中共享計算和記憶體。減小NN,就減少了小批量的計算。例如,當N=2N=2和R=128R=128時,得到的訓練方案比從128幅不同的圖取樣一個RoI(即R-CNN和SPPnet的策略)快64倍。
這個策略的一個令人擔心的問題是它可能導致訓練收斂變慢,因為來自相同影象的RoI是相關的。這個問題似乎在實際情況下並不存在,當N=2N=2和R=128R=128時,我們使用比R-CNN更少的SGD迭代就獲得了良好的結果。
除了分層取樣,Fast R-CNN使用了一個精細的訓練過程,在微調階段聯合優化Softmax分類器和檢測框迴歸,而不是分別在三個獨立的階段訓練softmax分類器,SVM和迴歸器3 [^ 11]。 下面將詳細描述該過程(損失,小批量取樣策略,通過RoI池化層的反向傳播和SGD超引數)。
**多工損失。**Fast R-CNN網路具有兩個同級輸出層。 第一個輸出在K+1K+1個類別上的離散概率分佈(每個RoI),p=(p0,…,pK)p=(p0,…,pK)。 通常,通過全連線層的K+1K+1個輸出上的Softmax來計算pp。第二個輸出層輸出檢測框迴歸偏移,tk=(tkx,tky,tkw,tkh)tk=(txk,tyk,twk,thk),對於由k索引的K個類別中的每一個。 我們使用3中給出的tktk的引數化,其中tktk指定相對於候選框的尺度不變轉換和對數空間高度/寬度移位。
每個訓練的RoI用類真值uu和檢測框迴歸目標真值vv標記。我們對每個標記的RoI使用多工損失LL以聯合訓練分類和檢測框迴歸:L(p,u,tu,v)=Lcls(p,u)+λ[u≥1]Lloc(tu,v)(1)(1)L(p,u,tu,v)=Lcls(p,u)+λ[u≥1]Lloc(tu,v)
其中Lcls(p,u)=−logpuLcls(p,u)=−logpu, 是類真值uu的log損失。
對於類真值uu,第二個損失LlocLloc是定義在檢測框迴歸目標真值元組u,v=(vx,vy,vw,vh)u,v=(vx,vy,vw,vh)和預測元組tu=(tux,tuy,tuw,tuh)tu=(txu,tyu,twu,thu)上的損失。 Iverson括號指示函式[u≥1][u≥1]當u≥1u≥1的時候為值1,否則為0。按照慣例,背景類標記為u=0u=0。對於背景RoI,沒有檢測框真值的概念,因此LlocLloc被忽略。對於檢測框迴歸,我們使用損失Lloc(tu,v)=∑i∈{x,y,w,h}smoothL1(tui−vi)(2)(2)Lloc(tu,v)=∑i∈{x,y,w,h}smoothL1(tiu−vi)其中:smoothL1(x)={0.5x2|x|−0.5if|x|<1otherwise(3)(3)smoothL1(x)={0.5x2if|x|<1|x|−0.5otherwise是魯棒的L1L1損失,對於異常值比在R-CNN和SPPnet中使用的L2L2損失更不敏感。當迴歸目標無界時,具有L2L2損失的訓練可能需要仔細調整學習速率,以防止爆炸梯度。公式(3)(3)消除了這種靈敏度。
公式(1)(1)中的超引數λλ控制兩個任務損失之間的平衡。我們將回歸目標真值vivi歸一化為具有零均值和單位方差。所有實驗都使用λ=1λ=1。
我們注意到10使用相關損失來訓練一個類別無關的目標候選網路。 與我們的方法不同的是10倡導一個分離定位和分類的雙網路系統。OverFeat4,R-CNN3和SPPnet5也訓練分類器和檢測框定位器,但是這些方法使用逐級訓練,這對於Fast RCNN來說不是最好的選擇。
小批量取樣。在微調期間,每個SGD的小批量由N=2N=2個影象構成,均勻地隨機選擇(如通常的做法,我們實際上迭代資料集的排列)。 我們使用大小為R=128R=128的小批量,從每個影象取樣64個RoI。 如在3中,我們從候選框中獲取25%的RoI,這些候選框與檢測框真值的IoU至少為0.5。 這些RoI只包括用前景物件類標記的樣本,即u≥1u≥1。 剩餘的RoI從候選框中取樣,該候選框與檢測框真值的最大IoU在區間[0.1,0.5)[0.1,0.5)上5。 這些是背景樣本,並用u=0u=0標記。0.1的閾值下限似乎充當難負樣本重訓練的啟發式演算法11。 在訓練期間,影象以概率0.5水平翻轉。不使用其他資料增強。
通過RoI池化層的反向傳播。反向傳播通過RoI池化層。為了清楚起見,我們假設每個小批量(N=1N=1)只有一個影象,擴充套件到N>1N>1是顯而易見的,因為前向傳播獨立地處理所有影象。
令xi∈ℝxi∈R是到RoI池化層的第ii個啟用輸入,並且令yrjyrj是來自第rr個RoI層的第jj個輸出。RoI池化層計算yrj=xi∗(r,j)yrj=xi∗(r,j),其中xi∗(r,j)=argmaxi′∈(r,j)xi′xi∗(r,j)=argmaxi′∈R(r,j)xi′。(r,j)R(r,j)是輸出單元yrjyrj最大池化的子視窗中的輸入的索引集合。單個xixi可以被分配給幾個不同的輸出yrjyrj。
RoI池化層反向傳播函式通過遵循argmax switches來計算關於每個輸入變數xixi的損失函式的偏導數:∂L∂xi=∑r∑j[i=i∗(r,j)]∂L∂yrj(4)(4)∂L∂xi=∑r∑j[i=i∗(r,j)]∂L∂yrj換句話說,對於每個小批量RoI rr和對於每個池化輸出單元yrjyrj,如果ii是yrjyrj通過最大池化選擇的argmax,則將這個偏導數∂L∂yrj∂L∂yrj積累下來。在反向傳播中,偏導數∂L∂yrj∂L∂yrj已經由RoI池化層頂部的層的反向傳播函式計算。
SGD超引數。用於Softmax分類和檢測框迴歸的全連線層的權重分別使用具有方差0.01和0.001的零均值高斯分佈初始化。偏置初始化為0。所有層的權重學習率為1倍的全域性學習率,偏置為2倍的全域性學習率,全域性學習率為0.001。 當對VOC07或VOC12 trainval訓練時,我們執行SGD進行30k次小批量迭代,然後將學習率降低到0.0001,再訓練10k次迭代。當我們訓練更大的資料集,我們執行SGD更多的迭代,如下文所述。 使用0.9的動量和0.0005的引數衰減(權重和偏置)。
尺度不變性
我們探索兩種實現尺度不變物件檢測的方法:(1)通過“brute force”學習和(2)通過使用影象金字塔。 這些策略遵循5中的兩種方法。 在“brute force”方法中,在訓練和測試期間以預定義的畫素大小處理每個影象。網路必須直接從訓練資料學習尺度不變性目標檢測。
相反,多尺度方法通過影象金字塔向網路提供近似尺度不變性。 在測試時,影象金字塔用於大致縮放-規範化每個候選框。 在多尺度訓練期間,我們在每次影象取樣時隨機取樣金字塔尺度,遵循5,作為資料增強的形式。由於GPU記憶體限制,我們只對較小的網路進行多尺度訓練。
Fast R-CNN檢測
一旦Fast R-CNN網路被微調完畢,檢測相當於執行前向傳播(假設候選框是預先計算的)。網路將影象(或影象金字塔,編碼為影象列表)和待計算概率的RR個候選框的列表作為輸入。在測試的時候,RR通常在2000左右,雖然我們將考慮將它變大(約45k)的情況。當使用影象金字塔時,每個RoI被縮放,使其最接近5中的22422242個畫素。
對於每個測試的RoI rr,正向傳播輸出類別後驗概率分佈pp和相對於rr的預測的檢測框框偏移集合(KK個類別中的每一個獲得其自己的精細檢測框預測)。我們使用估計的概率Pr(class=k|r)≜pkPr(class=k|r)≜pk為每個物件類別kk分配rr的檢測置信度。然後,我們使用R-CNN演算法的設定和對每個類別獨立執行非最大抑制3。
使用截斷的SVD來進行更快的檢測
對於整體影象分類,與卷積層相比,計算全連線層花費的時間較小。相反,為了檢測,要處理的RoI的數量很大,並且接近一半的正向傳遞時間用於計算全連線層(參見圖2)。大的全連線層容易通過用截短的SVD壓縮來加速1213。
在這種技術中,層的u×vu×v權重矩陣WW通過SVD被近似分解為:W≈UΣtVT(5)(5)W≈UΣtVT在這種分解中,UU是一個u×tu×t的矩陣,包括WW的前tt個左奇異向量,ΣtΣt是t×tt×t對角矩陣,其包含WW的前tt個奇異值,並且VV是v×tv×t矩陣,包括WW的前tt個右奇異向量。截斷SVD將引數計數從uvuv減少到t(u+v)t(u+v)個,如果tt遠小於min(u,v)min(u,v),則SVD可能是重要的。 為了壓縮網路,對應於WW的單個全連線層由兩個全連線層替代,在它們之間沒有非線性。這些層中的第一層使用權重矩陣ΣtVTΣtVT(沒有偏置),並且第二層使用UU(其中原始偏差與WW相關聯)。當RoI的數量大時,這種簡單的壓縮方法給出良好的加速。
主要結果
三個主要結果支援本文的貢獻:
- VOC07,2010和2012的最高的mAP。
- 相比R-CNN,SPPnet,快速訓練和測試。
- 在VGG16中微調卷積層改善了mAP。
實驗配置
我們的實驗使用了三個經過預訓練的ImageNet網路模型,這些模型可以線上獲得(https://github.com/BVLC/caffe/wiki/Model-Zoo)。第一個是來自R-CNN3的CaffeNet(實質上是AlexNet1)。 我們將這個CaffeNet稱為模型S,即小模型。第二網路是來自14的VGG_CNN_M_1024,其具有與S相同的深度,但是更寬。 我們把這個網路模型稱為M,即中等模型。最後一個網路是來自15的非常深的VGG16模型。由於這個模型是最大的,我們稱之為L。在本節中,所有實驗都使用單尺度訓練和測試(s=600s=600,詳見尺度不變性:暴力或精細?)。
VOC 2010和2012資料集結果
表2. VOC 2010測試檢測平均精度(%)。 BabyLearning使用基於16的網路。 所有其他方法使用VGG16。訓練集:12:VOC12 trainval,Prop.:專有資料集,12+seg:12具有分段註釋,07++12:VOC07 trainval,VOC07測試和VOC12 trainval的聯合。
表3. VOC 2012測試檢測平均精度(%)。 BabyLearning和NUS_NIN_c2000使用基於16的網路。 所有其他方法使用VGG16。訓練設定:見表2,Unk.:未知。
如上表(表2,表3)所示,在這些資料集上,我們比較Fast R-CNN(簡稱FRCN)和公共排行榜中comp4(外部資料)上的主流方法(http://host.robots.ox.ac.uk:8080/leaderboard ,訪問時間是2015.4.18)。對於NUS_NIN_c2000和BabyLearning方法,目前沒有其架構的確切資訊,它們是Network-in-Network的變體16。所有其他方法從相同的預訓練VGG16網路初始化。
Fast R-CNN在VOC12上獲得最高結果,mAP為65.7%(加上額外資料為68.4%)。它也比其他方法快兩個數量級,這些方法都基於比較“慢”的R-CNN網路。在VOC10上,SegDeepM 6獲得了比Fast R-CNN更高的mAP(67.2%對比66.1%)。SegDeepM使用VOC12 trainval訓練集訓練並添加了分割的標註,它被設計為通過使用馬爾可夫隨機場推理R-CNN檢測和來自O2PO2P17的語義分割方法的分割來提高R-CNN精度。Fast R-CNN可以替換SegDeepM中使用的R-CNN,這可以導致更好的結果。當使用放大的07++12訓練集(見表2標題)時,Fast R-CNN的mAP增加到68.8%,超過SegDeepM。
VOC 2007資料集上的結果
在VOC07資料集上,我們比較Fast R-CNN與R-CNN和SPPnet的mAP。 所有方法從相同的預訓練VGG16網路開始,並使用邊界框迴歸。 VGG16 SPPnet結果由5的作者提供。SPPnet在訓練和測試期間使用五個尺度。Fast R-CNN對SPPnet的改進說明,即使Fast R-CNN使用單個尺度訓練和測試,卷積層微調在mAP中提供了大的改進(從63.1%到66.9%)。R-CNN的mAP為66.0%。 作為次要點,SPPnet在PASCAL中沒有使用被標記為“困難”的樣本進行訓練。 除去這些樣本,Fast R-CNN 的mAP為68.1%。 所有其他實驗都使用被標記為“困難”的樣本。
訓練和測試時間
表4. Fast RCNN,R-CNN和SPPnet中相同模型之間的執行時間比較。Fast R-CNN使用單尺度模式。SPPnet使用5中指定的五個尺度,由5的作者提供在Nvidia K40 GPU上的測量時間。
快速的訓練和測試是我們的第二個主要成果。表4比較了Fast RCNN,R-CNN和SPPnet之間的訓練時間(小時),測試速率(每秒影象數)和VOC07上的mAP。對於VGG16,沒有截斷SVD的Fast R-CNN處理影象比R-CNN快146倍,有截斷SVD的R-CNN快213倍。訓練時間減少9倍,從84小時減少到9.5小時。與SPPnet相比,沒有截斷SVD的Fast RCNN訓練VGG16網路比SPPnet快2.7倍(9.5小時對25.5小時),測試時間快7倍,有截斷SVD的Fast RCNN比的SPPnet快10倍。 Fast R-CNN還不需要數百GB的磁碟儲存,因為它不快取特徵。
截斷SVD。截斷的SVD可以將檢測時間減少30%以上,同時在mAP中只有很小(0.3個百分點)的下降,並且無需在模型壓縮後執行額外的微調。
圖2. 截斷SVD之前和之後VGG16的時間分佈。在SVD之前,完全連線的層fc6和fc7需要45%的時間。
圖2示出了如何使用來自VGG16的fc6層中的25088×409625088×4096矩陣的頂部1024個奇異值和來自fc7層的4096×40964096×4096矩陣的頂部256個奇異值減少執行時間,而在mAP中幾乎沒有損失。如果在壓縮之後再次微調,則可以在mAP中具有更小的下降的情況下進一步加速。
微調哪些層?
對於在SPPnet論文5中考慮的不太深的網路,僅微調全連線層似乎足以獲得良好的精度。我們假設這個結果不適用於非常深的網路。為了驗證微調卷積層對於VGG16的重要性,我們使用Fast R-CNN微調,但凍結十三個卷積層,以便只有全連線層學習。這種消融模擬單尺度SPPnet訓練,將mAP從66.9%降低到61.4%(表5)。這個實驗驗證了我們的假設:通過RoI池化層的訓練對於非常深的網是重要的。
表5. 限制哪些層對VGG16進行微調產生的影響。微調≥≥fc6模擬單尺度SPPnet訓練演算法5。 SPPnet L是使用五個尺度,以顯著(7倍)的速度成本獲得的結果。
這是否意味著所有卷積層應該微調?沒有。在較小的網路(S和M)中,我們發現conv1(第一個卷積層)是通用的和任務獨立的(一個眾所周知的事實1)。允許conv1學習或不學習,對mAP沒有很有意義的影響。對於VGG16,我們發現只需要更新conv3_1及以上(13個卷積層中的9個)的層。這種觀察是實用的:(1)從conv2_1更新使訓練變慢1.3倍(12.5小時對比9.5小時)和(2)從conv1_1更新GPU記憶體不夠用。當從conv2_1學習時mAP僅為增加0.3個點(表5,最後一列)。 所有Fast R-CNN在本文中結果都使用VGG16微調層conv3_1及以上的層,所有實驗用模型S和M微調層conv2及以上的層。
設計評估
我們通過實驗來了解Fast RCNN與R-CNN和SPPnet的比較,以及評估設計決策。按照最佳實踐,我們在PASCAL VOC07資料集上進行了這些實驗。
多工訓練有用嗎?
多工訓練是方便的,因為它避免管理順序訓練任務的流水線。但它也有可能改善結果,因為任務通過共享的表示(ConvNet)18相互影響。多工訓練能提高Fast R-CNN中的目標檢測精度嗎?
為了測試這個問題,我們訓練僅使用公式(1)(1)中的分類損失LclsLcls(即設定λ=0λ=0)的基準網路。這些基線是表6中每組的第一列。請注意,這些模型沒有檢測框迴歸。接下來(每組的第二列),是我們採用多工損失(公式(1)(1),λ=1λ=1)訓練的網路,但是我們在測試時禁用檢測框迴歸。這隔離了網路的分類準確性,並允許與基準網路的apple to apple的比較。
在所有三個網路中,我們觀察到多工訓練相對於單獨的分類訓練提高了純分類精度。改進範圍從+0.8到+1.1 個mAP點,顯示了多工學習的一致的積極效果。
最後,我們採用基線模型(僅使用分類損失進行訓練),加上檢測迴歸層,並使用LlocLloc訓練它們,同時保持所有其他網路引數凍結。每組中的第三列顯示了這種逐級訓練方案的結果:mAP相對於第一列改進,但逐級訓練表現不如多工訓練(每組第四列)。
表6. 多工訓練(每組第四列)改進了分段訓練(每組第三列)的mAP。
尺度不變性:暴力或精細?
我們比較兩個策略實現尺度不變物體檢測:暴力學習(單尺度)和影象金字塔(多尺度)。在任一情況下,我們將影象的尺度ss定義為其最短邊的長度。
所有單尺度實驗使用s=600s=600畫素,對於一些影象,ss可以小於600,因為我們保持橫縱比縮放影象,並限制其最長邊為1000畫素。選擇這些值使得VGG16在微調期間不至於GPU記憶體不足。較小的模型佔用視訊記憶體更少,所以可受益於較大的ss值。然而,每個模型的優化不是我們的主要的關注點。我們注意到PASCAL影象是384×473畫素的,因此單尺度設定通常以1.6倍的倍數上取樣影象。因此,RoI池化層的平均有效步進為約10畫素。
在多尺度設定中,我們使用5中指定的相同的五個尺度(s∈{480,576,688,864,1200}s∈{480,576,688,864,1200})以方便與SPPnet進行比較。但是,我們以2000畫素為上限,以避免GPU記憶體不足。
表7顯示了當使用一個或五個尺度進行訓練和測試時的模型S和M的結果。也許在5中最令人驚訝的結果是單尺度檢測幾乎與多尺度檢測一樣好。我們的研究結果能證明他們的結果:深度卷積網路擅長直接學習尺度不變性。多尺度方法消耗大量的計算時間僅帶來了很小的mAP增加(表7)。在VGG16(模型L)的情況下,我們受限於實施細節僅能使用單個尺度。然而,它得到了66.9%的mAP,略高於R-CNN的66.0%19,儘管R-CNN在每個候選區域被縮放為規範大小,在意義上使用了“無限”尺度。
由於單尺度處理提供速度和精度之間的最佳折衷,特別是對於非常深的模型,本小節以外的所有實驗使用單尺度訓練和測試,s=600s=600畫素。
表7. 多尺度與單尺度。SPPnet ZF(類似於模型S)的結果來自5。 具有單尺度的較大網路提供最佳的速度/精度平衡。(L在我們的實現中不能使用多尺度,因為GPU記憶體限制。)
我們需要更過訓練資料嗎?
當提供更多的訓練資料時,好的目標檢測器應該會得到改善。 Zhu等人20發現DPM11mAP在只有幾百到千個訓練樣本的時候就飽和了。在這裡我們增加VOC07 trainval訓練集與VOC12 trainval訓練集,大約增加到三倍的影象,數量達到16.5k,以評估Fast R-CNN。擴大訓練集提高了VOC07測試的mAP,從66.9%到70.0%(表1)。 當對這個資料集進行訓練時,我們使用60k次小批量迭代而不是40k。
表1. VOC 2007測試檢測平均精度(%)。 所有方法都使用VGG16。 訓練集:07:VOC07 trainval,07 \diff:07沒有“困難”的樣本,07 + 12:07和VOC12訓練的聯合。 SPPnet結果由5的作者提供。
我們對VOC10和2012進行類似的實驗,我們用VOC07 trainval,test和VOC12 trainval構造了21.5k影象的資料集。當訓練這個資料集時,我們使用100k次SGD迭代和每40k次迭代(而不是每30k次)降低學習率10倍。對於VOC10和2012,mAP分別從66.1%提高到68.8%和從65.7%提高到68.4%。
SVM分類是否優於Softmax?
Fast R-CNN在微調期間使用softmax分類器學習,而不是如在R-CNN和SPPnet中訓練線性SVM。為了理解這種選擇的影響,我們在Fast R-CNN中實施了具有難負取樣重訓練的SVM訓練。我們使用與R-CNN中相同的訓練演算法和超引數。
表8. 用Softmax的Fast R-CNN對比用SVM的Fast RCNN(VOC07 mAP)。
對於所有三個網路,Softmax略優於SVM,mAP分別提高了0.1和0.8個點。這種效應很小,但是它表明與先前的多級訓練方法相比,“一次性”微調是足夠的。我們注意到,Softmax,不像SVM那樣,在分類RoI時引入類之間的競爭。
更多的候選區域更好嗎?
存在(廣義地)兩種型別的目標檢測器:使用候選區域的稀疏集合(例如,選擇性搜尋21)和使用密集集合(例如DPM11)。分類稀疏提議是級聯的一種型別22,其中提議機制首先拒絕大量候選者,讓分類器來評估留下的小集合。當應用於DPM檢測時,該級聯提高了檢測精度21。我們發現提案分類器級聯也提高了Fast R-CNN的精度。
使用選擇性搜尋的質量模式,我們掃描每個影象1k到10k個候選框,每次重新訓練和重新測試模型M.如果候選框純粹扮演計算的角色,增加每個影象的候選框數量不應該損害mAP。
圖3. 各種候選區域方案的VOC07測試mAP和AR。
我們發現mAP上升,然後隨著候選區域計數增加而略微下降(圖3,實線藍線)。這個實驗表明,用更多的候選區域沒有幫助,甚至稍微有點傷害準確性。
如果不實際執行實驗,這個結果很難預測。用於測量候選區域質量的最先進的技術是平均召回率(AR)23。當對每個影象使用固定數量的候選區域時,AR與使用R-CNN的幾種候選區域方法良好地相關。圖3示出了AR(實線紅線)與mAP不相關,因為每個影象的候選區域數量是變化的。AR必須小心使用,由於更多的候選區域更高的AR並不意味著mAP會增加。幸運的是,使用模型M的訓練和測試需要不到2.5小時。因此,Fast R-CNN能夠高效地,直接地評估目標候選區域mAP,這優於代理度量。
我們還調查Fast R-CNN當使用密集生成框(在縮放,位置和寬高比上),大約45k個框/影象。這個密集集足夠豐富,當每個選擇性搜尋框被其最近(IoU)密集框替換時,mAP只降低1個點(到57.7%,圖3,藍色三角形)。
密集框的統計資料與選擇性搜尋框的統計資料不同。從2k個選擇性搜尋框開始,我們在新增1000×{2,4,6,8,10,32,45}1000×{2,4,6,8,10,32,45}的隨機樣本密集框時測試mAP。對於每個實驗,我們重新訓練和重新測試模型M。當新增這些密集框時,mAP比新增更多選擇性搜尋框時下降得更強,最終達到53.0%。
我們還訓練和測試Fast R-CNN只使用密集框(45k/影象)。此設定的mAP為52.9%(藍色菱形)。最後,我們檢查是否需要使用難樣本重訓練的SVM來處理密集框分佈。 SVM做得更糟:49.3%(藍色圓圈)。
MS COCO初步結果
我們將fast R-CNN(使用VGG16)應用於MS COCO資料集24,以建立初步基線。我們對80k影象訓練集進行了240k次迭代訓練,並使用評估伺服器對“test-dev”集進行評估。 PASCAL標準下的mAP為35.9%;。新的COCO標準下的AP(也平均)為19.7%。
結論
本文提出Fast R-CNN,一個對R-CNN和SPPnet乾淨,快速的更新。 除了報告目前的檢測結果之外,我們還提供了詳細的實驗,希望提供新的見解。 特別值得注意的是,稀疏目標候選區域似乎提高了檢測器的質量。 過去探索這個問題過於昂貴(在時間上),但Fast R-CNN使其變得可能。當然,可能存在允許密集盒執行以及稀疏候選框的尚未發現的技術。這樣的方法如果被開發,可以幫助進一步加速目標檢測。
致謝:感謝Kaiming He,Larry Zitnick和Piotr Dollár的幫助和鼓勵。
參考文獻:
- A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet classification with deep convolutional neural networks. In NIPS, 2012. ↩ ↩2 ↩3 ↩4
- Y. LeCun, B. Boser, J. Denker, D. Henderson, R. Howard, W. Hubbard, and L. Jackel. Backpropagation applied to handwritten zip code recognition. Neural Comp., 1989. ↩
- R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
- P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun. OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks. In ICLR, 2014. ↩ ↩2 ↩3
- K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21
- Y. Zhu, R. Urtasun, R. Salakhutdinov, and S. Fidler. segDeepM: Exploiting segmentation and context in deep neural networks for object detection. In CVPR, 2015. ↩ ↩2
- S. Lazebnik, C. Schmid, and J. Ponce. Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories. In CVPR, 2006. ↩
- Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S. Guadarrama, and T. Darrell. Caffe: Convolutional architecture for fast feature embedding. In Proc. of the ACM International Conf. on Multimedia, 2014. ↩
- J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. FeiFei. ImageNet: A large-scale hierarchical image database. In CVPR, 2009. ↩
- D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov. Scalable object detection using deep neural networks. In CVPR, 2014. ↩ ↩2
- P. Felzenszwalb, R. Girshick, D. McAllester, and D. Ramanan. Object detection with discriminatively trained part based models. TPAMI, 2010. ↩ ↩2 ↩3
- E. Denton, W. Zaremba, J. Bruna, Y. LeCun, and R. Fergus. Exploiting linear structure within convolutional networks for efficient evaluation. In NIPS, 2014. ↩
- J. Xue, J. Li, and Y. Gong. Restructuring of deep neural network acoustic models with singular value decomposition. In Interspeech, 2013. ↩
- K. Chatfield, K. Simonyan, A. Vedaldi, and A. Zisserman. Return of the devil in the details: Delving deep into convolutional nets. In BMVC, 2014. ↩
- K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. In ICLR, 2015. ↩
- M. Lin, Q. Chen, and S. Yan. Network in network. In ICLR, 2014. ↩ ↩2 ↩3
- J. Carreira, R. Caseiro, J. Batista, and C. Sminchisescu. Semantic segmentation with second-order pooling. In ECCV, 2012. ↩
- R. Caruana. Multitask learning. Machine learning, 28(1), 1997. ↩
- R. Girshick, J. Donahue, T. Darrell, and J. Malik. Region-based convolutional networks for accurate object detection and segmentation. TPAMI, 2015. ↩
- X. Zhu, C. Vondrick, D. Ramanan, and C. Fowlkes. Do we need more training data or better models for object detection? In BMVC, 2012. ↩
- J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders. Selective search for object recognition. IJCV, 2013. ↩ ↩2
- P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. In CVPR, 2001. ↩
- J. H. Hosang, R. Benenson, P. Dollár, and B. Schiele. What makes for effective detection proposals? arXiv preprint arXiv:1502.05082, 2015. ↩
- T. Lin, M. Maire, S. Belongie, L. Bourdev, R. Girshick, J. Hays, P. Perona, D. Ramanan, P. Dollár, and C. L. Zitnick. Microsoft COCO: common objects in context. arXiv e-prints, arXiv:1405.0312 [cs.CV], 2014. ↩