1. 程式人生 > >【論文翻譯】Fast R-CNN

【論文翻譯】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開源許可證釋出在:

https://github.com/rbgirshick/fast-rcnn

簡介

最近,深度卷積網路1 2已經顯著提高了影象分類1和目標檢測3 4的準確性。與影象分類相比,目標檢測是一個更具挑戰性的任務,需要更復雜的方法來解決。由於這種複雜性,當前的方法(例如,3 5 4 6)採用多級流水線的方式訓練模型,既慢且精度不高。

複雜性的產生是因為檢測需要目標的精確定位,這就導致兩個主要的難點。首先,必須處理大量候選目標位置(通常稱為“提案”)。 第二,這些候選框僅提供粗略定位,其必須被精細化以實現精確定位。 這些問題的解決方案經常會影響速度,準確性或簡單性。

在本文中,我們簡化了最先進的基於卷積網路的目標檢測器的訓練過程

3 5。我們提出一個單階段訓練演算法,聯合學習候選框分類和修正他們的空間位置。

所得到的方法用來訓練非常深的檢測網路(例如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具有顯著的缺點:

  1. **訓練過程是多級流水線。**R-CNN首先使用目標候選框對卷積神經網路使用log損失進行微調。然後,它將卷積神經網路得到的特徵送入SVM。 這些SVM作為目標檢測器,替代通過微調學習的softmax分類器。 在第三個訓練階段,學習檢測框迴歸。
  2. 訓練在時間和空間上是的開銷很大。對於SVM和檢測框迴歸訓練,從每個影象中的每個目標候選框提取特徵,並寫入磁碟。對於非常深的網路,如VGG16,這個過程在單個GPU上需要2.5天(VOC07 trainval上的5k個影象)。這些特徵需要數百GB的儲存空間。
  3. 目標檢測速度很慢。在測試時,從每個測試影象中的每個目標候選框提取特徵。用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方法有以下幾個優點:

  1. 比R-CNN和SPPnet具有更高的目標檢測精度(mAP)。
  2. 訓練是使用多工損失的單階段訓練。
  3. 訓練可以更新所有網路層引數。
  4. 不需要磁碟空間快取特徵。

Fast R-CNN架構與訓練

Fast R-CNN的架構如下圖(圖1)所示:

Figure1

圖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)=−log⁡pu, 是類真值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的數量大時,這種簡單的壓縮方法給出良好的加速。

主要結果

三個主要結果支援本文的貢獻:

  1. VOC07,2010和2012的最高的mAP。
  2. 相比R-CNN,SPPnet,快速訓練和測試。
  3. 在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資料集結果

Table 2

表2. VOC 2010測試檢測平均精度(%)。 BabyLearning使用基於16的網路。 所有其他方法使用VGG16。訓練集:12:VOC12 trainval,Prop.:專有資料集,12+seg:12具有分段註釋,07++12:VOC07 trainval,VOC07測試和VOC12 trainval的聯合。

Table 3

表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%。 所有其他實驗都使用被標記為“困難”的樣本。

訓練和測試時間

Table 4

表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個百分點)的下降,並且無需在模型壓縮後執行額外的微調。

Figure 2

圖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池化層的訓練對於非常深的網是重要的。

Table 5

表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相對於第一列改進,但逐級訓練表現不如多工訓練(每組第四列)。

Table 6

表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畫素。

Table 7

表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。

Table 1

表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中相同的訓練演算法和超引數。

Table 8

表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。

Figure 3

圖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的幫助和鼓勵。

參考文獻:

  1. A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet classification with deep convolutional neural networks. In NIPS, 2012. ↩2 ↩3 ↩4
  2. 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.
  3. 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
  4. 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
  5. 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
  6. 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
  7. S. Lazebnik, C. Schmid, and J. Ponce. Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories. In CVPR, 2006.
  8. 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.
  9. J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. FeiFei. ImageNet: A large-scale hierarchical image database. In CVPR, 2009.
  10. D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov. Scalable object detection using deep neural networks. In CVPR, 2014. ↩2
  11. P. Felzenszwalb, R. Girshick, D. McAllester, and D. Ramanan. Object detection with discriminatively trained part based models. TPAMI, 2010. ↩2 ↩3
  12. E. Denton, W. Zaremba, J. Bruna, Y. LeCun, and R. Fergus. Exploiting linear structure within convolutional networks for efficient evaluation. In NIPS, 2014.
  13. J. Xue, J. Li, and Y. Gong. Restructuring of deep neural network acoustic models with singular value decomposition. In Interspeech, 2013.
  14. K. Chatfield, K. Simonyan, A. Vedaldi, and A. Zisserman. Return of the devil in the details: Delving deep into convolutional nets. In BMVC, 2014.
  15. K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. In ICLR, 2015.
  16. M. Lin, Q. Chen, and S. Yan. Network in network. In ICLR, 2014. ↩2 ↩3
  17. J. Carreira, R. Caseiro, J. Batista, and C. Sminchisescu. Semantic segmentation with second-order pooling. In ECCV, 2012.
  18. R. Caruana. Multitask learning. Machine learning, 28(1), 1997.
  19. R. Girshick, J. Donahue, T. Darrell, and J. Malik. Region-based convolutional networks for accurate object detection and segmentation. TPAMI, 2015.
  20. X. Zhu, C. Vondrick, D. Ramanan, and C. Fowlkes. Do we need more training data or better models for object detection? In BMVC, 2012.
  21. J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders. Selective search for object recognition. IJCV, 2013. ↩2
  22. P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. In CVPR, 2001.
  23. J. H. Hosang, R. Benenson, P. Dollár, and B. Schiele. What makes for effective detection proposals? arXiv preprint arXiv:1502.05082, 2015.
  24. 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.