【Faster R-CNN全文翻譯】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

Abstract

  先進的目標檢測網絡依賴於區域提議算法來假設對象位置。像SPPnet和Fast R-CNN的改進減少了這些檢測網絡的運行時間,使區域提議計算成爲瓶頸。在這項工作中,我們引入了一個區域提議網絡(RPN),它與檢測網絡共享全圖像卷積特徵,從而實現了幾乎無成本的區域提議。RPN是一個完全卷積網絡,可同時預測每個位置的物體邊界和對應分數。RPN被端到端地訓練以生成高質量區域提議,其被Fast R-CNN用於檢測。通過簡單的交替優化,可以訓練RPN和快速R-CNN以共享卷積特徵。對於非常深的VGG-16模型,我們的檢測系統在GPU上的幀速率爲5fps(包括所有步驟),同時每張圖片使用300個區域提議,在PASCAL VOC 2007(73.2%mAP)和VOC 2012(70.4%mAP)上實現了最先進的物體檢測精度。

  Code is available at https://github.com/ShaoqingRen/faster_rcnn. (https://github.com/facebookresearch/Detectron)


1. Introduction

  目標檢測的最新進展是由區域提議方法和基於區域的卷積神經網絡(R-CNN)的成功推動的。儘管基於區域的CNN在計算上是昂貴的,如R-CNN中最初開發的那樣,但由於跨提案共享卷積,它們的成本已經大大降低。 最新版本的Fast R-CNN使用非常深的網絡VGG實現接近實時的速率,忽略了在區域提案上花費的時間。現在,提案是最先進的檢測系統中的計算瓶頸。

       區域提議方法通常依賴於廉價的特徵和經濟的推理方案。選擇性搜索(SS)是最流行的方法之一,它基於工程化的低級特徵貪婪地合併超像素。然而,與有效的檢測網絡Fast R-CNN相比,選擇性搜索速度慢了一個數量級,在CPU實現中每個圖像2s。 EdgeBoxes目前在提案質量和速度之間提供最佳權衡,每張圖像0.2秒。然而,區域提議步驟仍然消耗與檢測網絡一樣多的運行時間。

       可以注意到,基於區域的快速CNN利用了GPU,而研究中使用的區域提議方法是在CPU上實現的,這使得這種runtime的比較是不公平的。加速提案計算的一個明顯方法是爲GPU重新實現它。這可能是一種有效的工程解決方案,但重新實施會忽略下游檢測網絡,因此錯過了共享計算的重要機會。

       在本文中,我們做了一個算法變化,通過深度網絡計算提案,這是一個優雅而有效的解決方案,在給定的檢測網絡中提案計算幾乎是無成本的。爲此,我們引入了新穎的區域提議網絡(RPN),它與最先進的物體檢測網絡共享卷積層。通過在測試時共享卷積,提案計算的邊際成本很小(例如,每個圖像10ms)。

  我們的觀察結果是,基於區域的檢測網絡(如快速R-CNN)使用的卷積特徵映射(maps)也可用於生成區域提議。在這些卷積特徵之上,我們通過添加兩個額外的卷積層構建RPN:一是將每個卷積映射位置編碼爲短特徵向量(例如,256維);二是在每個卷積映射位置處輸出相對於該位置處的各種尺度和縱橫比的 k區域提議的對象得分和迴歸邊界(k = 9是典型值)。

       因此,我們的RPN是一種完全卷積網絡(FCN),它們可以針對生成檢測提案的任務進行端到端的訓練。爲了將RPN與Fast R-CNN目標檢測網絡統一起來,我們提出了一種簡單的訓練方案,該方案在區域提議任務的微調和目標檢測的微調之間交替,同時保持提議的固定。該方案快速收斂併產生具有在兩個任務之間共享的卷積特徵的統一網絡。

       我們在PASCAL VOC檢測benchmarks上評估我們的方法,其中具有Fast R-CNN的RPN產生的檢測精度優於具有Fast R-CNN的選擇性搜索算法。同時,我們的方法在測試時放棄了SS的幾乎所有計算負擔,提案的有效運行時間僅爲10毫秒。使用昂貴的超深模型VGG,我們的檢測方法在GPU上的幀速率仍爲5fps(包括所有步驟),因此在速度和準確度方面都是一個實用的物體檢測系統(PASCAL VOC 2007上的mAP爲73.2%,VOC 2007上的mAP爲70.4%)。


2. Related Work

       最近的幾篇論文提出了使用深度網絡來定位特定類或不可知類邊界框的方法。OverFeat方法中,訓練全連接層(fc)以預測假定單個對象的定位任務的框座標。然後將全連接層轉換爲卷積層,用於檢測多個特定類的對象。Multi-Box方法使用網絡生成區域提議,其最後的fc層同時預測多個框(例如,800個),其用於R-CNN目標檢測檢測。它們的提議網絡應用於單個圖像或多個大裁剪圖像(例如,224 * 224)。我們將在後面的方法中更深入地討論OverFeat和MultiBox。

  卷積的共享計算已經引起越來越多的關注,以獲得有效但準確的視覺識別。OverFeat論文計算了圖像金字塔中的卷積特徵,用於分類,定位和檢測。針對共享卷積特徵映射提出了自適應大小的池(SPP),用於有效的基於區域的對象檢測和語義分割。 Fast R-CNN可在共享卷積特徵上實現端到端檢測器訓練,並顯示出引人注目的準確性和速度。
 


3. Region Proposal Networks

       區域提議網絡(RPN)將任意大小圖像作爲輸入並輸出一組矩形對象提議,每個提議具有對象分數. (“Region” is a generic term and in this paper we only consider rectangular regions, as is common for many methods. “Objectness” measures membership to a set of object classes vs. background.) 我們使用全卷積網絡對此過程進行建模,我們將在本節中對其進行描述。因爲我們的最終目標是與Fast R-CNN目標檢測網絡共享計算,我們假設兩個網絡共享一組共同的卷積層。在我們的實驗中,我們研究了具有5個可共享卷積層的Zeiler和Fergus模型(ZF)以及具有13個可共享卷積層的Simonyan和Zisserman模型(VGG)。

       爲了生成區域提議,我們在最後一個共享卷積層輸出的卷積特徵映射上滑動一個小網絡。該網絡完全連接到輸入卷積特徵映射的n * n空間窗口。每個滑動窗口被映射到較低維向量(對於ZF爲256維,對於VGG爲512維)。該向量被饋送到兩個兄弟的完全連接的層,盒迴歸層(box-regression layer, reg盒分類層(box-classification layer, cls。我們在本文中使用n = 3,注意到輸入圖像上的有效感受野很大(ZF和VGG分別爲171和228像素)。該迷你網絡在Figure 1(左)中的單個位置示出。請注意,由於迷你網絡以滑動窗口方式運行,因此所有空間位置共享全連接的層。該架構自然地用n * n卷積層實現,然後是兩個兄弟1 * 1卷積層(分別用於reg和cls)。ReLU應用於n * n卷積層的輸出。

       Translation-Invariant Anchors. 在每個滑動窗口位置,我們同時預測 個區域提議,因此reg層具有 4k 個輸出,編碼k個盒子的座標。cls層輸出 2k 個分數,用於估計每個提案的對象/非對象的概率。(For simplicity we implement theclslayer as a two-class softmax layer. Alternatively, one may use logistic regression to produce k scores) k個提議相對於k個參考框參數化,稱爲錨。每個錨點都在所討論的滑動窗口的中心,並且與尺度和縱橫比相關聯。 我們使用3個刻度和3個縱橫比,在每個滑動位置產生k = 9個錨。 對於大小爲W * H(通常爲~2,400)的卷積特徵映射,總共存在W * H * k個錨。我們方法的一個重要特性是它是平移不變的,無論是錨點還是計算提案相對於錨點的函數。

       作爲比較,MultiBox方法使用k-means生成800個錨,這些錨不是平移不變的。如果平移圖像中的對象,則提案也應該平移,並且同一函數應該能夠在任一位置預測提案。此外,因爲MultiBox錨不是平移不變的,所以它需要(4 + 1)* 800維輸出層,而我們的方法需要(4 + 2)* 9維輸出層。我們的提議層的參數減少了一個數量級(使用GoogLeNet的MultiBox爲2700萬,而使用VGG-16的RPN爲240萬),因此PASCAL VOC等小數據集的過度擬合風險較小。

       學習區域提案的損失函數. 爲了訓練RPN,我們爲每個錨分配一個二類標籤(是或不是對象)。我們爲兩種錨框分配一個正標籤:(i)與真實框重疊且具有最高IoU的錨框(ii)與任意真實框的IoU重疊高於0.7的的錨框。請注意,單個真實框可以爲多個錨框分配正標籤。如果與所有真實框的IoU比率低於0.3,我們會爲非正錨框分配負標籤。 既不是正標籤也不是負標籤的錨點對訓練目標沒有貢獻。

       通過這些定義,我們跟隨Fast R-CNN中的多任務損失來最小化目標函數。 我們對圖像的損失函數定義爲:

這裏,是小批量錨的索引,p{i} 是錨i 作爲對象的預測概率。如果錨框爲正,則真實標籤 p{i *} 爲1,如果錨爲負,則爲0。t {i}是表示預測邊界框的4個參數化座標的向量,並且t {i *}表示與正錨框相關聯的真實框。分類損失 Lcls 是兩類(對象與非對象)的對數損失。對於迴歸損失,我們使用 Lreg(t {i},t {i *}) = R(t {i}  -  t {i *}) ,其中 是Fast R-CNN中定義的魯棒損失函(smooth L1)。p{i *} Lreg 表示僅對正錨(p{i *} = 1)激活迴歸損失,否則表達式失效(p{i *} = 0)。cls和reg層的輸出分別由{pi}和{ti}組成。這兩個術語用 Ncls 和 Nreg 標準化,以及平衡權重Lamda


  在我們的早期實現中(也在發佈的代碼中),Lamda設置爲10,並且上式中的cls項由小批量大小(即,Ncls = 256)標準化,並且通過以下方式歸一化 錨點位置的數量(即Nreg~2400)。cls和reg都是以這種大致相等的方式加權。


  對於迴歸,我們採用R-CNN中4個座標進行參數化:

其中x,y,w和h表示盒子中心的兩個座標,寬度和高度。變量x,xa和x *分別用於預測框,錨框和真實框(同樣適用於y,w,h)。這可以被認爲是從錨框到附近的真實框進行邊界框迴歸。

  然而,我們的方法通過與先前基於特徵圖的方法不同的方式實現邊界框迴歸。在SPPNet和Fast R-CNN中,對從任意大小區域池化得到的特徵執行邊界框迴歸,並且迴歸權重由所有大小區域共享。在我們的公式中,用於迴歸的特徵在特徵圖上具有相同的空間大小(n*n)。爲了考慮不同的大小,學習了一組k個邊界框迴歸量。 每個迴歸量負責一個比例和一個寬高比,並且k個迴歸量不共享權重。因此,即使特徵具有固定的尺寸/比例,仍然可以預測各種尺寸的框。

  Optimazation. 由全卷積網絡實現的RPN可以通過反向傳播和隨機梯度下降(SGD)進行端到端訓練。我們遵循Fast R-CNN中的“以圖像爲中心”的採樣策略來訓練這個網絡。每個小批量產生於包含許多正負錨的單個圖像。可以針對所有錨框的損失函數進行優化,但是這將偏向負樣本,因爲它們占主導地位。相反,我們在圖像中隨機採樣256個錨點來計算小批量的損失函數,其中採樣的正和負錨點的比率高達1:1。如果圖像中的正樣本數少於128個,我們對小批量填充負樣本。

       共享區域提議和目標檢測的卷積特徵. 到目前爲止,我們已經描述瞭如何訓練用於區域提議生成的網絡,而不考慮將利用這些提議的基於區域的目標檢測CNN。對於檢測網絡,我們採用Fast R-CNN並提出了一種算法,該算法學習在RPN和快速R-CNN之間共享的卷積層。

       獨立訓練的RPN和Fast R-CNN都將以不同方式修改其卷積層。因此,我們需要開發一種技術,允許在兩個網絡之間共享卷積層,而不是學習兩個獨立的網絡。請注意,這並不像簡單地定義包含RPN和Fast R-CNN的單個網絡,然後使用反向傳播優化那樣容易。原因是Fast R-CNN訓練依賴於固定對象提議,以及目前尚不清楚如果在改變提議機制的同時學習快速R-CNN是否會會收斂。雖然這種聯合優化是未來工作中的一個有趣問題,但我們開發了一種實用的4步訓練算法,通過交替優化來學習共享特徵。

  在第一步中,我們如上所述訓練RPN。該網絡使用ImageNet預先訓練的模型進行初始化,並針對區域提議任務進行端到端微調。在第二步中,我們使用由步驟1中 RPN生成的提議訓練Fast R-CNN檢測網絡。該檢測網絡也由ImageNet預訓練模型初始化。此時,兩個網絡不共享卷積層。在第三步中,我們使用檢測器網絡來初始化RPN訓練,但我們固定了共享卷積層,只調整了RPN特有的層。現在這兩個網絡共享卷積層。最後,保持共享卷積層固定,我們微調Fast R-CNN的fc層。因此,兩個網絡共享相同的卷積層並形成統一的網絡。

       Implementation Details. 我們在單尺度圖像上訓練和測試區域提議和目標檢測網絡[7,5]。我們重新縮放圖像,使其短邊s = 600像素[5]。多尺度特徵提取可以提高準確性,但沒有表現出良好的速度,準確性權衡[5]。我們還注意到,對於ZF和VGG網絡,最後一個卷積層上的總步幅在重新縮放的圖像上是16個像素,因此在典型的PASCAL圖像上是~10個像素(~500*375)。即使是如此大的步幅也能提供良好的效果,儘管可以通過更小的步幅進一步提高精度。

  對於錨框,我們使用3個刻度,框區域爲 128 * 128, 256 * 256和512 * 512 像素,3個寬高比爲 1:1, 1:2和2:1。我們注意到,我們的算法允許在預測大型提案時使用大於潛在感受野的錨框。這樣的預測並非不可能 - 如果只有對象的中間可見,人們仍然可以粗略地推斷對象的範圍。通過這種設計,我們的解決方案不需要多尺度特徵或多尺度滑動窗口來預測大區域,從而節省了大量的運行時間。Figure 1(右)顯示了我們的方法適用於各種尺度和縱橫比的能力。下表顯示了使用ZF網絡的每個錨點學習平均提議大小.(s = 600)

       需要小心處理跨越圖像邊界的錨框。在訓練期間,我們忽略所有跨邊界錨框,因此它們不會造成損失。對於典型的1000 * 600圖像,總共將有大約20k(60 * 40 * 9)個錨框。由於忽略了跨界錨框,每個圖像大約有6k個錨框用於訓練。如果在訓練中不忽略過境異常值,則會在目標函數中引入大的,難以糾正的誤差項,並且訓練不會收斂。然而,在測試期間,我們仍然將全卷積RPN應用於整個圖像。這可能會生成跨界建議框,我們將其剪切到圖像邊界。

  一些RPN提案彼此高度重疊。爲了減少冗餘,我們根據其cls分數對提議區域採用非最大抑制(NMS)。我們將NMS的IoU閾值修正爲0.7,這使得每個圖像的建議區域大約爲2k。正如我們將要展示的那樣,NMS不會損害最終的檢測準確性,但會大大減少提議的數量。在NMS之後,我們使用排名 top-N 的提議區域進行檢測。在下文中,我們使用2k RPN提議訓練Fast R-CNN,但在測試時評估不同數量的提議。


4. Experiments

       我們全面評估了PASCAL VOC 2007檢測基準的方法[4]。該數據集包括20個類別,大約5k 訓練圖像和5k 測試圖像。我們還爲部分網絡提供了PASCAL VOC 2012基準測試的結果。對於ImageNet預訓練網絡,我們使用具有5個卷積層和3個fc層的ZF網絡的“快速”版本,以及具有13個卷積層和3個fc的公共VGG-16模型。我們主要評估檢測平均精度(mAP),因爲這是目標檢測的實際度量(而不是關注對象提議代理指標)。


5. Conclusion

       我們提出了區域提議網絡(RPN),以實現高效準確的區域提案生成。通過與下游檢測網絡共享卷積特徵,區域提議步驟幾乎是免費的。我們的方法使基於深度學習的統一目標檢測系統能夠以5-17 fps的速度運行。學習到的RPN還改善了區域提議質量,從而提高了整體目標檢測精度。


 

Reference paper:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章