(二)Faster-RCNN--NIPS2015論文解讀

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

更快的R-CNN:利用區域提案網絡實現實時目標檢測

摘要

最先進的目標檢測網絡依賴於區域建議算法來假設對象位置。像SPPnet [1]和Fast R-CNN[2]這樣的進展減少了這些檢測網絡的運行時間,暴露了區域建議計算作爲瓶頸。在這項工作中,我們引入了一個區域提議網絡(RPN),它與檢測網絡共享全圖像卷積特徵,從而實現了幾乎無成本的區域提議。RPN是一個完全卷積網絡,可同時預測每個位置的對象邊界和對象分數。RPN經過端到端的培訓,可以生成高質量的區域提案,由快速R-CNN用於檢測。我們通過共享其卷積特徵進一步將RPN和Fast R-CNN合併到一個網絡中-使用最近流行的具有“注意”機制的神經網絡術語,RPN組件告訴統一網絡在哪裏查看。對於非常深的VGG-16型號[3],我們的檢測系統在GPU上的幀速率爲5fps(包括所有步驟),同時在PASCAL VOC 2007,2012上實現了最先進的物體檢測精度,並且MS COCO數據集,每個圖像只有300個提案。在ILSVRC和COCO 2015比賽中,更快的R-CNN和RPN是多個賽道中獲得第一名的參賽作品的基礎。代碼已公開發布。

索引詞-對象檢測,區域提議,卷積神經網絡。

1引言

目標檢測的最新進展是由區域提出方法(例如[4])和基於區域的卷積神經網絡(R-CNN)[5]的成功驅動的。儘管在[5]中最初開發的基於區域的CNN計算成本很高,但是由於在各種提議中共享卷積,所以其成本已經大大降低了[1],[2]。忽略花費在區域提議上的時間,最新版本Fast R-CNN[2]利用非常深的網絡[3]實現了接近實時的速率。現在,提議是最新的檢測系統中測試時間的計算瓶頸。

區域提議方法通常依賴廉價的特徵和簡練的推斷方案。選擇性搜索[4]是最流行的方法之一,它貪婪地合併基於設計的低級特徵的超級像素。然而,與有效的檢測網絡[2]相比,選擇性搜索速度慢了一個數量級,在CPU實現中每張圖像的時間爲2秒。EdgeBoxes[6]目前提供了在提議質量和速度之間的最佳權衡,每張圖像0.2秒。儘管如此,區域提議步驟仍然像檢測網絡那樣消耗同樣多的運行時間。

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

在本文中,我們展示了算法的變化——用深度卷積神經網絡計算區域提議——導致了一個優雅和有效的解決方案,其中在給定檢測網絡計算的情況下區域提議計算接近0成本。**爲此,我們引入了新的*區域提議網絡*(RPN),它們共享最先進目標檢測網絡的卷積層[1],[2]。**通過在測試時共享卷積,計算區域提議的邊際成本很小(例如,每張圖像10ms)。

我們的觀察是,基於區域的檢測器所使用的卷積特徵映射,如Fast R-CNN,也可以用於生成區域提議。在這些卷積特徵之上,我們通過添加一些額外的卷積層來構建RPN,這些卷積層同時在規則網格上的每個位置上回歸區域邊界和目標分數。因此RPN是一種全卷積網絡(FCN)[7],可以針對生成檢測區域建議的任務進行端到端的訓練。

**RPN旨在有效預測具有廣泛尺度和長寬比的區域提議。**與使用圖像金字塔 (圖1,a)或濾波器金字塔(圖1,b)的流行方法[8],[9],[1]相比,我們引入新的“錨”盒作爲多種尺度和長寬比的參考。**我們的方案可以被認爲是迴歸參考金字塔(圖1,c),它避免了枚舉多種比例或長寬比的圖像或濾波器。**這個模型在使用單尺度圖像進行訓練和測試時運行良好,從而有利於運行速度。
在這裏插入圖片描述
​ 圖1.處理多尺度的不同機制。(a)建立圖像和feature map的金字塔,classifier在所有尺度上工作。(b)在feature map上建立多尺度/大小的filters金字塔。(c)文中在迴歸函數上reference boxes金字塔。

爲了將RPN與Fast R-CNN [2]目標檢測網絡相結合,我們提出了一種訓練方案,**在微調區域提議任務和微調目標檢測之間進行交替,同時保持區域提議的固定。**該方案快速收斂,併產生兩個任務之間共享的具有卷積特徵的統一網絡。

我們在PASCAL VOC檢測基準數據集上[11]綜合評估了我們的方法,其中具有Fast R-CNN的RPN產生的檢測精度優於使用選擇性搜索的Fast R-CNN的強基準。同時,我們的方法在測試時幾乎免除了選擇性搜索的所有計算負擔——區域提議的有效運行時間僅爲10毫秒。使用[3]的昂貴的非常深的模型,我們的檢測方法在GPU上仍然具有5fps的幀率(包括所有步驟),因此在速度和準確性方面是實用的目標檢測系統。我們還報告了在MS COCO數據集上[12]的結果,並使用COCO數據研究了在PASCAL VOC上的改進。代碼可公開獲得https://github.com/shaoqingren/faster_rcnn(在MATLAB中)和https://github.com/rbgirshick/py-faster-rcnn(在Python中)。

這個手稿的初步版本是以前發表的[10]。從那時起,RPN和Faster R-CNN的框架已經被採用並推廣到其他方法,如3D目標檢測[13],基於部件的檢測[14],實例分割[15]和圖像標題[16]。我們快速和有效的目標檢測系統也已經在Pinterest[17]的商業系統中建立了,並報告了用戶參與度的提高。

在ILSVRC和COCO 2015競賽中,Faster R-CNN和RPN是ImageNet檢測,ImageNet定位,COCO檢測和COCO分割中幾個第一名參賽者[18]的基礎。RPN完全從數據中學習提議區域,因此可以從更深入和更具表達性的特徵(例如[18]中採用的101層殘差網絡)中輕鬆獲益。Faster R-CNN和RPN也被這些比賽中的其他幾個主要參賽者所使用。這些結果表明,我們的方法不僅是一個實用合算的解決方案,而且是一個提高目標檢測精度的有效方法。

2. 相關工作

目標提議。目標提議方法方面有大量的文獻。目標提議方法的綜合調查和比較可以在[19],[20],[21]中找到。廣泛使用的目標提議方法包括基於超像素分組(例如,選擇性搜索[4],CPMC[22],MCG[23])和那些基於滑動窗口的方法(例如窗口中的目標[24],EdgeBoxes[6])。目標提議方法被採用爲獨立於檢測器(例如,選擇性搜索[4]目標檢測器,R-CNN[5]和Fast R-CNN[2])的外部模塊。

**用於目標檢測的深度網絡。**R-CNN方法[5]端到端地對CNN進行訓練,將提議區域分類爲目標類別或背景。**R-CNN主要作爲分類器,並不能預測目標邊界(除了通過邊界框迴歸進行細化)。**其準確度取決於區域提議模塊的性能(參見[20]中的比較)。一些論文提出了使用深度網絡來預測目標邊界框的方法[25],[9],[26],[27]。在OverFeat方法[9]中,訓練一個全連接層來預測假定單個目標定位任務的邊界框座標。然後將全連接層變成卷積層,用於檢測多個類別的目標。MultiBox方法[26],[27]從網絡中生成區域提議,網絡最後的全連接層同時預測多個類別不相關的邊界框,並推廣到OverFeat的“單邊界框”方式。這些類別不可知的邊界框框被用作R-CNN的提議區域[5]。與我們的全卷積方案相比,**MultiBox提議網絡適用於單張裁剪圖像或多張大型裁剪圖像(例如224×224)。**MultiBox在提議區域和檢測網絡之間不共享特徵。稍後在我們的方法上下文中會討論OverFeat和MultiBox。與我們的工作同時進行的,DeepMask方法[28]是爲學習分割提議區域而開發的。

卷積[9],[1],[29],[7],[2]的共享計算已經越來越受到人們的關注,因爲它可以有效而準確地進行視覺識別。**OverFeat論文[9]計算圖像金字塔的卷積特徵用於分類,定位和檢測。**共享卷積特徵映射的自適應大小池化(SPP)[1]被開發用於有效的基於區域的目標檢測[1],[30]和語義分割[29]。Fast R-CNN[2]能夠對共享卷積特徵進行端到端的檢測器訓練,並顯示出令人信服的準確性和速度。

3.FASTER R-CNN

​ 我們的目標檢測系統,稱爲Faster R-CNN,由兩個模塊組成。第一個模塊是提議區域的深度全卷積網絡,第二個模塊是使用提議區域的Fast R-CNN檢測器[2]。整個系統是一個單個的,統一的目標檢測網絡(圖2)。使用最近流行的“注意力”[31]機制的神經網絡術語,RPN模塊告訴Fast R-CNN模塊在哪裏尋找。在第3.1節中,我們介紹了區域提議網絡的設計和屬性。在第3.2節中,我們開發了用於訓練具有共享特徵模塊的算法。

在這裏插入圖片描述
圖2:Faster R-CNN是一個單一,統一的目標檢測網絡。RPN模塊作爲這個統一網絡的“注意力”。

3.1 區域提議網絡

區域提議網絡(RPN)以任意大小的圖像作爲輸入,**輸出一組矩形的目標提議,每個提議都有一個目標得分。**我們用全卷積網絡[7]對這個過程進行建模,我們將在本節進行描述。因爲我們的最終目標是與Fast R-CNN目標檢測網絡[2]共享計算,所以我們假設兩個網絡共享一組共同的卷積層。在我們的實驗中,我們研究了具有5個共享卷積層的Zeiler和Fergus模型[32](ZF)和具有13個共享卷積層的Simonyan和Zisserman模型[3](VGG-16)。

爲了生成區域提議,我們在最後的共享卷積層輸出的卷積特徵映射上滑動一個小網絡。這個小網絡將輸入卷積特徵映射的*[Math Processing Error]n×n*空間窗口作爲輸入。**每個滑動窗口映射到一個低維特徵(ZF爲256維,VGG爲512維,後面是ReLU[33])。這個特徵被輸入到兩個子全連接層——一個邊界框迴歸層(reg)和一個邊界框分類層(cls)。在本文中,我們使用[Math Processing Error]n=3,注意輸入圖像上的有效感受野是大的(ZF和VGG分別爲171和228個像素)。圖3(左)顯示了這個小型網絡的一個位置。請注意,因爲小網絡以滑動窗口方式運行,所有空間位置共享全連接層。這種架構通過一個n×n卷積層,後面是兩個子1×1卷積層(分別用於reg和cls)自然地實現。

在這裏插入圖片描述

圖3:左:區域提議網絡(RPN)。右:**在PASCAL VOC 2007測試集上使用RPN提議的示例檢測。**我們的方法可以檢測各種尺度和長寬比的目標。

3.1.1 錨點

**在每個滑動窗口位置,我們同時預測多個區域提議,其中每個位置可能提議的最大數目表示爲k。**因此,reg層具有4k個輸出,編碼k個邊界框的座標,cls層輸出2k個分數,估計每個提議是目標或不是目標的概率。相對於我們稱之爲錨點的k個參考邊界框,k個提議是參數化的。錨點位於所討論的滑動窗口的中心,並與一個尺度和長寬比相關(圖3左)。默認情況下,我們使用3個尺度和3個長寬比,在每個滑動位置產生k=9個錨點。對於大小爲W×H(通常約爲2400)的卷積特徵映射,總共有WHk個錨點。

平移不變的錨點

我們的方法的一個重要特性是它是***平移不變***的,無論是在錨點還是計算相對於錨點的區域提議的函數。如果在圖像中平移目標,提議應該平移,並且同樣的函數應該能夠在任一位置預測提議。平移不變特性是由我們的方法保證的。作爲比較,MultiBox方法[27]使用k-means生成800個錨點,這不是平移不變的。所以如果平移目標,MultiBox不保證會生成相同的提議。

**平移不變特性也減小了模型的大小。MultiBox有 (4+1)×800維的全連接輸出層,而我們的方法在k=9個錨點的情況下有(4+2)×9維的卷積輸出層。因此,對於VGG-16,我們的輸出層具有2.8×104個參數(對於VGG-16爲512×(4+2)×9),比MultiBox輸出層的6.1×106個參數少了兩個數量級(對於MultiBox [27]中的GoogleNet[34]爲1536×(4+1)×800)。如果考慮到特徵投影層,我們的提議層仍然比MultiBox少一個數量級。我們期望我們的方法在PASCAL VOC等小數據集上有更小的過擬合風險。

多尺度錨點作爲迴歸參考

我們的錨點設計提出了一個新的方案來解決多尺度(和長寬比)。如圖1所示,多尺度預測有兩種流行的方法。第一種方法是基於圖像/特徵金字塔,例如DPM[8]和基於CNN的方法[9],[1],[2]中。圖像在多個尺度上進行縮放,並且針對每個尺度(圖1(a))計算特徵映射(HOG[8]或深卷積特徵[9],[1],[2])。這種方法通常是有用的,但是非常耗時。第二種方法是在特徵映射上使用多尺度(和/或長寬比)的滑動窗口。例如,在DPM[8]中,使用不同的濾波器大小(例如5×7和7×5)分別對不同長寬比的模型進行訓練。如果用這種方法來解決多尺度問題,可以把它看作是一個“濾波器金字塔”(圖1(b))。第二種方法通常與第一種方法聯合採用[8]。

作爲比較,我們的基於錨點方法建立在錨點金字塔上,這是更具成本效益的。我們的方法參照多尺度和長寬比的錨盒來分類和迴歸邊界框。它只依賴單一尺度的圖像和特徵映射,並使用單一尺寸的濾波器(特徵映射上的滑動窗口)。我們通過實驗來展示這個方案解決多尺度和尺寸的效果(表8)。

表8:Faster R-CNN在PAS-CAL VOC 2007測試數據集上使用不同錨點設置的檢測結果。網絡是VGG-16。訓練數據是VOC 2007訓練集。使用3個尺度和3個長寬比(69.9%)的默認設置,與表3中的相同。

由於這種基於錨點的多尺度設計,我們可以簡單地使用在單尺度圖像上計算的卷積特徵,Fast R-CNN檢測器也是這樣做的[2]。多尺度錨點設計是共享特徵的關鍵組件,不需要額外的成本來處理尺度。

3.1.2 損失函數

爲了訓練RPN,我們爲每個錨點分配一個二值類別標籤(是目標或不是目標)。**我們給兩種錨點分配一個正標籤:(i)具有與實際邊界框的重疊最高交併比(IoU)的錨點,或者(ii)具有與實際邊界框的重疊超過0.7 IoU的錨點。**注意,單個真實邊界框可以爲多個錨點分配正標籤。通常第二個條件足以確定正樣本;但我們仍然採用第一個條件,因爲在一些極少數情況下,第二個條件可能找不到正樣本。對於所有的真實邊界框,如果一個錨點的IoU比率低於0.3,我們給非正面的錨點分配一個負標籤。既不正面也不負面的錨點不會有助於訓練目標函數。

​ 根據這些定義,**我們對目標函數Fast R-CNN[2]中的多任務損失進行最小化。**我們對圖像的損失函數定義爲:
L({pi},{ti})=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)1 \begin{aligned} L\left(\left\{p_{i}\right\},\left\{t_{i}\right\}\right) &=\frac{1}{N_{\text {cls}}} \sum_{i} L_{c l s}\left(p_{i}, p_{i}^{*}\right) \\ &+\lambda \frac{1}{N_{\text {reg}}} \sum_{i} p_{i}^{*} L_{\text {reg}}\left(t_{i}, t_{i}^{*}\right) \end{aligned}(1)
​ 其中,i是一個小批量數據中錨點的索引,pi是錨點i作爲目標的預測概率。如果錨點爲正,真實標籤*pi*∗*爲1,如果錨點爲負,則爲0。ti是表示預測邊界框4個參數化座標的向量,而ti是與正錨點相關的真實邊界框的向量。分類損失Lcls是兩個類別上(目標或不是目標)的對數損失。對於迴歸損失,我們使用
Lreg(ti,ti)=R(titi) L_{r e g}\left(t_{i}, t_{i}^{*}\right)=R\left(t_{i}-t_{i}^{*}\right)
,其中
R是在[2]中定義的魯棒損失函數(平滑L1
)。項*pi
∗Lreg*表示迴歸損失僅對於正錨點激活,否則被禁用(*pi
∗=0
)。clsreg層的輸出分別由piti組成。

​ 這兩個項用NclsNreg進行標準化,並由一個平衡參數*λ*加權。在我們目前的實現中(如在發佈的代碼中),方程(1)中的cls項通過小批量數據的大小(即Ncls=256)進行歸一化,reg項根據錨點位置的數量(即,Nreg**∼24000)進行歸一化。默認情況下,我們設置*λ=10*,因此*cls*和*reg*項的權重大致相等。我們通過實驗顯示,結果對寬範圍的*λ*值不敏感(表9)。我們還注意到,上面的歸一化不是必需的,可以簡化。

​ 對於邊界框迴歸,我們採用[5]中的4個座標參數化:
tx=(xxa)/wa,ty=(yya)/hatw=log(w/wa),th=log(h/ha)tx=(xxa)/wa,ty=(yya)/hatw=log(w/wa),th=log(h/ha)2 \begin{aligned} t_{\mathrm{x}} &=\left(x-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}=\left(y-y_{\mathrm{a}}\right) / h_{\mathrm{a}} \\ t_{\mathrm{w}} &=\log \left(w / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}=\log \left(h / h_{\mathrm{a}}\right) \\ t_{\mathrm{x}}^{*} &=\left(x^{*}-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}^{*}=\left(y^{*}-y_{\mathrm{a}}\right) / h_{\mathrm{a}} \\ t_{\mathrm{w}}^{*} &=\log \left(w^{*} / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}^{*}=\log \left(h^{*} / h_{\mathrm{a}}\right) \end{aligned}(2)
其中x,y,w和h表示框的中心座標及其寬度和高度。 變量x,x a和x ∗分別用於預測框,錨定框和地面真實框(同樣對於y,w,h)。 可以將其視爲從錨定框到附近的地面真實框的邊界框迴歸。

然而,我們的方法通過與之前的基於RoI(感興趣區域)方法[1],[2]不同的方式來實現邊界框迴歸。在[1],[2]中,對任意大小的RoI池化的特徵執行邊界框迴歸,並且迴歸權重由所有區域大小共享。在我們的公式中,用於迴歸的特徵在特徵映射上具有相同的空間大小(3×3)。爲了說明不同的大小,學習一組*[Math Processing Error]k個邊界框迴歸器。每個迴歸器負責一個尺度和一個長寬比,而[Math Processing Error]k*個迴歸器不共享權重。因此,由於錨點的設計,即使特徵具有固定的尺度/比例,仍然可以預測各種尺寸的邊界框。

3.1.3 訓練RPN

RPN可以通過反向傳播和隨機梯度下降(SGD)進行端對端訓練[35]。我們遵循[2]的“以圖像爲中心”的採樣策略來訓練這個網絡。每個小批量數據都從包含許多正面和負面示例錨點的單張圖像中產生。對所有錨點的損失函數進行優化是可能的,但是這樣會偏向於負樣本,因爲它們是占主導地位的。取而代之的是,**我們在圖像中隨機採樣256個錨點,計算一個小批量數據的損失函數,其中採樣的正錨點和負錨點的比率可達1:1。**如果圖像中的正樣本少於128個,我們使用負樣本填充小批量數據。

我們通過從標準方差爲0.01的零均值高斯分佈中提取權重來隨機初始化所有新層。所有其他層(即共享卷積層)通過預訓練的ImageNet分類模型[36]來初始化,如同標準實踐[5]。我們調整ZF網絡的所有層,以及VGG網絡的conv3_1及其之上的層以節省內存[2]。對於60k的小批量數據,我們使用0.001的學習率,對於PASCAL VOC數據集中的下一個20k小批量數據,使用0.0001。我們使用0.9的動量和0.0005的重量衰減[37]。我們的實現使用Caffe[38]。

3.2 RPN和Fast R-CNN共享特徵

到目前爲止,我們已經描述瞭如何訓練用於區域提議生成的網絡,沒有考慮將利用這些提議的基於區域的目標檢測CNN。對於檢測網絡,我們採用Fast R-CNN[2]。接下來我們介紹一些算法,學習由RPN和Fast R-CNN組成的具有共享卷積層的統一網絡(圖2)。

在這裏插入圖片描述
**獨立訓練的RPN和Fast R-CNN將以不同的方式修改卷積層。**因此,我們需要開發一種允許在兩個網絡之間共享卷積層的技術,而不是學習兩個獨立的網絡。我們討論三個方法來訓練具有共享特徵的網絡:

(一)交替訓練。在這個解決方案中,我們首先訓練RPN,並使用這些提議來訓練Fast R-CNN。由Fast R-CNN微調的網絡然後被用於初始化RPN,並且重複這個過程。這是本文所有實驗中使用的解決方案。

(二)近似聯合訓練。在這個解決方案中,RPN和Fast R-CNN網絡在訓練期間合併成一個網絡,如圖2所示。在每次SGD迭代中,前向傳遞生成區域提議,在訓練Fast R-CNN檢測器將這看作是固定的、預計算的提議。反向傳播像往常一樣進行,其中對於共享層,組合來自RPN損失和Fast R-CNN損失的反向傳播信號。這個解決方案很容易實現。但是這個解決方案忽略了關於提議邊界框的座標(也是網絡響應)的導數,因此是近似的。在我們的實驗中,我們實驗發現這個求解器產生了相當的結果,與交替訓練相比,訓練時間減少了大約2550%。這個求解器包含在我們發佈的Python代碼中。

(三)非近似的聯合訓練。如上所述,由RPN預測的邊界框也是輸入的函數。**Fast R-CNN中的RoI池化層[2]接受卷積特徵以及預測的邊界框作爲輸入,所以理論上有效的反向傳播求解器也應該包括關於邊界框座標的梯度。**在上述近似聯合訓練中,這些梯度被忽略。在一個非近似的聯合訓練解決方案中,我們需要一個關於邊界框座標可微分的RoI池化層。這是一個重要的問題,可以通過[15]中提出的“RoI扭曲”層給出解決方案,這超出了本文的範圍。

**四步交替訓練。在本文中,我們採用實用的四步訓練算法,通過交替優化學習共享特徵。**在第一步中,我們按照3.1.3節的描述訓練RPN。該網絡使用ImageNet的預訓練模型進行初始化,並針對區域提議任務進行了端到端的微調。在第二步中,我們使用由第一步RPN生成的提議,由Fast R-CNN訓練單獨的檢測網絡。該檢測網絡也由ImageNet的預訓練模型進行初始化。此時兩個網絡不共享卷積層。在第三步中,我們使用檢測器網絡來初始化RPN訓練,但是我們修正共享的卷積層,並且只對RPN特有的層進行微調。現在這兩個網絡共享卷積層。最後,保持共享卷積層的固定,我們對Fast R-CNN的獨有層進行微調。因此,兩個網絡共享相同的卷積層並形成統一的網絡。類似的交替訓練可以運行更多的迭代,但是我們只觀察到可以忽略的改進。

3.3 實現細節

我們在單尺度圖像上訓練和測試區域提議和目標檢測網絡[1],[2]。我們重新縮放圖像,使得它們的短邊是*[Math Processing Error]s=600*像素[2]。多尺度特徵提取(使用圖像金字塔)可能會提高精度,但不會表現出速度與精度的良好折衷[2]。在重新縮放的圖像上,最後卷積層上的ZF和VGG網絡的總步長爲16個像素,因此在調整大小(〜500×375)之前,典型的PASCAL圖像上的總步長爲〜10個像素。即使如此大的步長也能提供良好的效果,儘管步幅更小,精度可能會進一步提高。

對於錨點,我們使用了3個尺度,邊界框面積分別爲128225625122個像素,以及1:1,1:2和2:1的長寬比。這些超參數不是針對特定數據集仔細選擇的,我們將在下一節中提供有關其作用的消融實驗。如上所述,我們的解決方案不需要圖像金字塔或濾波器金字塔來預測多個尺度的區域,節省了大量的運行時間。圖3(右)顯示了我們的方法在廣泛的尺度和長寬比方面的能力。表1顯示了使用ZF網絡的每個錨點學習到的平均提議大小。我們注意到,我們的算法允許預測比基礎感受野更大。這樣的預測不是不可能的——如果只有目標的中間部分是可見的,那麼仍然可以粗略地推斷出目標的範圍。

在這裏插入圖片描述

跨越圖像邊界的錨盒需要小心處理。在訓練過程中,我們忽略了所有的跨界錨點,所以不會造成損失。對於一個典型的1000×600的圖片,總共將會有大約20000(≈60×40×9)個錨點。跨界錨點被忽略,每張圖像約有6000個錨點用於訓練。如果跨界異常值在訓練中不被忽略,則會在目標函數中引入大的,難以糾正的誤差項,且訓練不會收斂。但在測試過程中,我們仍然將全卷積RPN應用於整張圖像。這可能會產生跨邊界的提議邊界框,我們剪切到圖像邊界。

一些RPN提議互相之間高度重疊。爲了減少冗餘,我們在提議區域根據他們的cls分數採取非極大值抑制(NMS)。**我們將NMS的IoU閾值固定爲0.7,這就給每張圖像留下了大約2000個提議區域。**正如我們將要展示的那樣,NMS不會損害最終的檢測準確性,但會大大減少提議的數量。在NMS之後,我們使用前N個提議區域來進行檢測。接下來,我們使用2000個RPN提議對Fast R-CNN進行訓練,但在測試時評估不同數量的提議。

4. 實驗

4.1 PASCAL VOC****上的實驗

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

表2(頂部)顯示了使用各種區域提議方法進行訓練和測試的Fast R-CNN結果。這些結果使用ZF網絡。對於選擇性搜索(SS)[4],我們通過“快速”模式生成約2000個提議。對於EdgeBoxes(EB)[6],我們通過調整0.7 IoU的默認EB設置生成提議。**SS在Fast R-CNN框架下的mAP爲*58.7%*,EB的mAP爲*58.6%*。RPN與Fast R-CNN取得了有競爭力的結果,使用多達300個提議,mAP爲*59.9%*。**由於共享卷積計算,使用RPN比使用SS或EB產生了更快的檢測系統;較少的建議也減少了區域方面的全連接層成本(表5)。

表2:PASCAL VOC 2007測試集上的檢測結果(在VOC 2007訓練評估集上進行了訓練)。檢測器是帶有ZF的Fast R-CNN,但使用各種提議方法進行訓練和測試。

表5:K40 GPU上的時間(ms),除了SS提議是在CPU上評估。“區域方面”包括NMS,池化,全連接和softmax層。查看我們發佈的代碼來分析運行時間。

RPN****上的消融實驗。爲了研究RPN作爲提議方法的性能,我們進行了幾項消融研究。首先,我們顯示了RPN和Fast R-CNN檢測網絡共享卷積層的效果。爲此,我們在四步訓練過程的第二步之後停止訓練。使用單獨的網絡將結果略微減少到58.7%(RPN+ZF,非共享,表2)。我們觀察到,這是因爲在第三步中,當使用檢測器調整的特徵來微調RPN時,提議質量得到了改善。

接下來,我們分析RPN對訓練Fast R-CNN檢測網絡的影響。爲此,我們通過使用2000個SS提議和ZF網絡來訓練Fast R-CNN模型。我們固定這個檢測器,並通過改變測試時使用的提議區域來評估檢測的mAP。在這些消融實驗中,RPN不與檢測器共享特徵。

在測試階段用300個RPN提議替換SS提議得到了*56.8%*的MAP。mAP的損失是因爲訓練/測試提議不一致。這個結果作爲以下比較的基準。

有些令人驚訝的是,RPN在測試時使用排名最高的100個提議仍然會導致有競爭力的結果(55.1%),表明排名靠前的RPN提議是準確的。相反的,使用排名靠前的6000個RPN提議(無NMS)具有相當的mAP(55.2%),這表明NMS不會損害檢測mAP並可能減少誤報。

接下來,我們通過在測試時分別關閉RPN的clsreg輸出來調查RPN的作用。當cls層在測試時被移除(因此不使用NMS/排名),我們從未得分的區域中隨機採樣N個提議。當N=1000(55.8)時,mAP幾乎沒有變化,但是當N=100時,會大大降低到44.6%。這表明cls分數考慮了排名最高的提議的準確性。

另一方面,當在測試階段移除reg層(所以提議變成錨盒)時,mAP將下降到52.1%。這表明高質量的提議主要是由於迴歸的邊界框。錨盒雖然具有多個尺度和長寬比,但不足以進行準確的檢測。

我們還單獨評估了更強大的網絡對RPN提議質量的影響。我們使用VGG-16來訓練RPN,仍然使用上述的SS+ZF檢測器。mAP從56.8%(使用RPN+ZF)提高到59.2%(使用RPN+VGG)。這是一個很有希望的結果,因爲這表明RPN+VGG的提議質量要好於RPN+ZF。由於RPN+ZF的提議與SS具有競爭性(當一致用於訓練和測試時,都是58.7%),所以我們可以預期RPN+VGG比SS更好。以下實驗驗證了這個假設。

VGG-16的性能。表3顯示了VGG-16的提議和檢測結果。使用RPN+VGG,非共享特徵的結果是68.5%,略高於SS的基準。如上所示,這是因爲RPN+VGG生成的提議比SS更準確。與預先定義的SS不同,RPN是主動訓練的並從更好的網絡中受益。對於特性共享的變種,結果是69.9%——比強壯的SS基準更好,但幾乎是零成本的提議。我們在PASCAL VOC 2007和2012的訓練評估數據集上進一步訓練RPN和檢測網絡。該mAP是73.2%。圖5顯示了PASCAL VOC 2007測試集的一些結果。在PASCAL VOC 2012測試集(表4)中,我們的方法在VOC 2007的trainval+test和VOC 2012的trainval的聯合數據集上訓練的模型取得了*70.4%*的mAP。表6和表7顯示了詳細的數字。

表3:PASCAL VOC 2007測試集的檢測結果。檢測器是Fast R-CNN和VGG-16。訓練數據:“07”:VOC 2007 trainval,“07 + 12”:VOC 2007 trainval和VOC 2012 trainval的聯合訓練集。對於RPN,訓練時Fast R-CNN的提議數量爲2000。†:[2]中報道的數字;使用本文提供的倉庫,這個結果更高(68.1)。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
4.2 在MS COCO上的實驗

我們在Microsoft COCO目標檢測數據集[12]上提供了更多的結果。這個數據集包含80個目標類別。我們用訓練集上的8萬張圖像,驗證集上的4萬張圖像以及測試開發集上的2萬張圖像進行實驗。我們評估了*IoU∈[0.5:0.05:0.95]*的平均mAP(COCO標準度量,簡稱爲mAP@[.5,.95])和[email protected](PASCAL VOC度量)。

我們的系統對這個數據集做了一些小的改動。我們在8 GPU實現上訓練我們的模型,RPN(每個GPU 1個)和Fast R-CNN(每個GPU 2個)的有效最小批大小爲8個。RPN步驟和Fast R-CNN步驟都以24萬次迭代進行訓練,學習率爲0.003,然後以0.0003的學習率進行8萬次迭代。我們修改了學習率(從0.003而不是0.001開始),因爲小批量數據的大小發生了變化。對於錨點,我們使用3個長寬比和4個尺度(加上642),這主要是通過處理這個數據集上的小目標來激發的。此外,在我們的Fast R-CNN步驟中,負樣本定義爲與實際邊界框的最大IOU在[0,0.5)區間內的樣本,而不是[1],[2]中使用的[0.1,0.5)之間。我們注意到,在SPPnet系統[1]中,在[0.1,0.5)中的負樣本用於網絡微調,但[0,0.5)中的負樣本仍然在具有難例挖掘SVM步驟中被訪問。**但是Fast R-CNN系統[2]放棄了SVM步驟,所以[0,0.1]中的負樣本都不會被訪問。**包括這些[0,0.1)的樣本,在Fast R-CNN和Faster R-CNN系統在COCO數據集上改進了[email protected](但對PASCAL VOC的影響可以忽略不計)。

在表11中,我們首先報告了使用本文實現的Fast R-CNN系統[2]的結果。我們的Fast R-CNN基準在test-dev數據集上有*[Math Processing Error]39.3%*的[email protected],比[2]中報告的更高。我們推測造成這種差距的原因主要是由於負樣本的定義以及小批量大小的變化。我們也注意到mAP@[.5,.95]恰好相當。

表11:在MS COCO數據集上的目標檢測結果(%)。模型是VGG-16。

在ILSVRC和COCO 2015比賽中的Faster R-CNN。我們已經證明,由於RPN通過神經網絡完全學習了提議區域,Faster R-CNN從更好的特徵中受益更多。即使將深度增加到100層以上,這種觀察仍然是有效的[18]。僅用101層殘差網絡(ResNet-101)代替VGG-16,Faster R-CNN系統就將mAP從41.5(VGG-16)增加到48.4%/27.2%(ResNet-101)。與其他改進正交於Faster R-CNN,何等人[18]在COCO測試開發數據集上獲得了單模型55.7%/34.9%的結果和59.0%/37.4%的組合結果,在COCO 2015目標檢測競賽中獲得了第一名。同樣的系統[18]也在ILSVRC 2015目標檢測競賽中獲得了第一名,超過第二名絕對的8.5%。RPN也是ILSVRC2015定位和COCO2015分割競賽第一名獲獎輸入的基石,詳情請分別參見[18]和[15]。

4.3 從MS COCO到PASCAL VOC

大規模數據對改善深度神經網絡至關重要。接下來,我們調查MS COCO數據集如何幫助改進在PASCAL VOC上的檢測性能。

作爲一個簡單的基準數據,我們直接在PASCAL VOC數據集上評估COCO檢測模型,而無需在任何PASCAL VOC數據上進行微調。這種評估是可能的,因爲COCO類別是PASCAL VOC上類別的超集。在這個實驗中忽略COCO專有的類別,softmax層僅在20個類別和背景上執行。這種設置下PASCAL VOC 2007測試集上的mAP爲76.1%(表12)。即使沒有利用PASCAL VOC的數據,這個結果也好於在VOC07+12(73.2%)上訓練的模型的結果。

然後我們在VOC數據集上對COCO檢測模型進行微調。在這個實驗中,COCO模型代替了ImageNet的預訓練模型(用於初始化網絡權重),Faster R-CNN系統按3.2節所述進行微調。這樣做在PASCAL VOC 2007測試集上可以達到*78.8%的mAP。來自COCO集合的額外數據增加了5.6%*的mAP。表6顯示,在PASCAL VOC 2007上,使用COCO+VOC訓練的模型在每個類別上具有最好的AP值。在PASCAL VOC 2012測試集(表12和表7)中也觀察到類似的改進。我們注意到獲得這些強大結果的測試時間速度仍然是每張圖像200ms左右。

5. 結論

我們已經提出了RPN來生成高效,準確的區域提議。通過與下游檢測網絡共享卷積特徵,區域提議步驟幾乎是零成本的。我們的方法使統一的,基於深度學習的目標檢測系統能夠以接近實時的幀率運行。學習到的RPN也提高了區域提議的質量,從而提高了整體的目標檢測精度。

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