目标检测系列(五)——Faster R-CNN译文
文章目錄
- 摘要
- 引言
- 2. 相關工作
- 3. Faster R-CNN
- 3.1 區域提議網絡
- 3.1.1 anchor
- 3.1.2 損失函數
- 3.1.3 訓練RPNs
- 3.2 RPN和Fast R-CNN的特征共享
- 3.3 實現細節
- 4. 實驗
- 4.1 PASCAL VOC上的實驗
- 4.2 在MS COCO上的實驗
- 5. 結論
https://www.zhihu.com/question/42205480/answer/155759667
摘要
最先進的目標檢測網絡算法是基于區域候選方法來預測目標位置,SPPnet和Fast R-CNN已經減少了檢測網絡的運行時間,但是候選區域的計算量仍然是網絡的一大瓶頸。
本文引入了區域候選網絡RPN,和檢測網絡共享整幅圖像的卷積特征圖,使得候選區域的開銷很小。RPN是一個全卷積網絡,能夠同時預測目標框邊界和每個位置的得分。
RPN是利用端到端的方式來生成高質量的候選區域,和Fast R-CNN結合起來用于檢測,RPN和Fast R-CNN通過共享卷積特征進一步合并為一個單一的網絡,使用最近流行的“注意力”機制網絡,RPN組件告訴統一網絡在哪里尋找。對于非常深的VGG-16模型[3],我們的檢測系統在GPU上的幀率為5fps(包括所有步驟),同時在PASCAL VOC 2007,2012和MS COCO數據集上實現了最新的目標檢測精度,每個圖像只有300個候選區域提出。在ILSVRC和COCO 2015競賽中,Faster R-CNN和RPN是多個比賽中獲得第一名輸入的基礎。代碼可公開獲得。
引言
目前最優的目標檢測結果是由候選區域方法和R-CNN獲得的,盡管R-CNN之前的計算開銷很大,但在進行了候選區域卷積特征共享之后就有了很大的降低。忽略花費在候選區域上的時間,最新版本的Fast R-CNN就是利用非常深的網絡實現了接近實時的速率,目前要解決的是候選區域測試時間的計算瓶頸。
候選區域的方法基于簡單的特征和推斷方案,選擇性搜索[4]是最流行的方法之一,它貪婪的合并基于底層特征的子區域。然而,與高效的檢測網絡相比,選擇性搜索慢了一個數量級,在CPU上對每張圖像的處理需要2s,EdgeBoxes目前提供了在候選區域質量和速度間的最佳權衡,每幅圖像需要0.2s來處理,盡管如此,候選區域步驟仍然像檢測網絡那樣消耗很多的時間。
有人可能會注意到,基于區域的快速CNN利用GPU會加速處理過程,然而區域提議方法仍然在CPU上實現,使得運行時間不等。加速區域提議計算的一個顯而易見的方法是將其在GPU上重新實現。這可能是一個有效的工程解決方案,但重新實現忽略了下游檢測網絡,因此錯過了共享計算的重要機會。
本文展示了算法的變化——用深度卷積神經網絡計算候選區域——提出了一個優雅且有效的解決方案,其中候選區域的計算基本上接近0成本。為此,我們引入了新的區域提議網絡(RPN),和最先進的目標檢測網絡共享卷積特征,在測試過程共享卷積特征,使得計算候選區域的邊界成本很小。
我們觀察到,基于區域的檢測器所使用的卷積特征映射,如Fast R-CNN,同樣可以被用處產生候選區域。卷積特征之上,我們通過添加一些額外的卷積層來構建RPN,這些卷積層能夠同時回歸區域邊界和計算規則網格上每個位置上的分數。因此RPN是一種全卷積網絡(Fully Convolutional Network,FCN),并且可以針對生成檢測區域的任務進行端到端的訓練。
RPN被用來在大尺度和縱橫比的區域機芯高效的候選區域預測,與使用圖像金字塔(Fig.1 a)或濾波器金字塔(Fig.1 b)等流行的方法相比,我們引入新的“錨”(anchor)框作為多尺度和縱橫比的參考框。本文的方法可以被看成回歸參考金字塔(Fig.1 c),避免了枚舉多種尺度或縱橫比的圖像或濾波器,這個模型在單尺度圖像上訓練和測試良好,故有利于運行速度的提升。
為了將RPN和Fast R-CNN目標檢測網絡結合起來,本文提出了一種訓練方案,可以在微調候選區域和微調目標檢測之間進行轉換,同時保持候選區域的固定,該方案可以快速收斂并產生兩個任務之間共享卷積特征的統一網絡。
我們在PASCAL VOC數據集上評估了我們的方法,其中具有Fast R-CNN的RPN取得的檢測精度優于使用選擇性搜索的Fast R-CNN的效果。同時,我們的方法在測試時免去了所有的計算負擔——區域提議的有效運行時間僅僅有10ms,使用[3]中的昂貴的非常深的模型,我們的檢測方法在GPU上仍然有5fps的幀率(包括所有的步驟),因此在素的和準確性方面是使用的目標檢測系統。同時也在COCO上進行了實驗,并進行了改進。代碼可公開獲得https://github.com/shaoqingren/faster_rcnn(在MATLAB中)和https://github.com/rbgirshick/py-faster-rcnn(在Python中)。
本框架最初的版本是以前發表的[10],從那時起Faster R-CNN和RPN的框架已經被采用并推廣到其他方法,如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]中找到,廣泛使用的目標提議方法包括基于超像素分組和基于滑窗的方法。目標提議方法一般是獨立于檢測器(如 Selective Search [4] object detectors, R-CNN [5], and Fast R-CNN [2])的外部模塊。
用于目標檢測的深度網絡多種多樣。R-CNN[5]方法端到端的對CNN進行訓練,將候選區域分為目標類和背景類。R-CNN主要作為分類器,并不能預測目標邊界框(除了多邊界框回歸進行細化)。其準確度依賴于區域提議模型的性能([20]),一些論文中提出使用深度網絡進行邊界框的預測[259,26,27]。在OverFeat方法[9]中,訓練一個全連接層來預測單個目標邊界框的坐標,然后將全連接層變成卷積層來檢測多個類別的目標。在MultiBox方法中[26,27],從網絡中產生區域提議,網絡最后的全連接層同時預測多個類別未知的邊界框,并推廣到“單個邊界框”的方式。這些類別未知的邊界框被用于R-CNN中的區域提議。MultiBox區域提議網絡適用于單張裁剪圖像或者多張大型裁剪圖像(如224*224)。MultiBox在區域提議和檢測網絡中不共享特征,下面會討論到OverFeat和 MultiBox 與本文方法的對比。與我們的工作同時進行的,DeepMask方法[28]是為學習分割提議區域而開發的。
卷積計算特征的共享越來越受到人們的關注,因為其可以有效且準確的進行視覺識別。OverFeat[9]計算圖像金字塔卷積特征圖用于分類、定位和檢測。共享卷積特征映射的自適應大小池化(SPP)利用共享卷積特征而被有效的用于基于區域的目標檢測[1,30]、語義分割[29],Fast R-CNN能夠對共享卷積特征進行端到端的檢測器訓練,獲得了優秀的準確度和快速性。
3. Faster R-CNN
本文的目標檢測系統,稱為Faster R-CNN由兩部分組成,第一部分是深度全卷積網絡,用于提議區域。第二部分是利用提議區域的Fast R-CNN檢測器。整體的結構是一個統一的目標檢測網絡(Fig.2),使用最近流行的“注意力”機制神經網絡術語,RPN模塊知道Fast R-CNN模塊在哪里尋找。3.1節中,我們介紹了區域提議網絡的設計和屬性,3.2節中我們開發了用于訓練具有共享特征模塊的算法。
圖2:Faster R-CNN是一個統一的目標檢測網絡。RPN模塊作為這個統一網絡的“注意力”
3.1 區域提議網絡
RPN以任意大小的圖像作為輸入,輸出一系列矩形目標提議區域,每個提議區域都有一個目標得分。我們用全卷積網絡[7]來建模。因為我們的目標是和Fast R-CNN目標檢測網絡共享卷積特征,故我們假定兩個網絡共享一組共同的卷積層,在我們的實驗中,我們研究了具有5個共享卷積層獲得Zeiler和Fergus[32]模型,和具有13個共享卷積層的Simonyan和Zisserman模型[3](VGG-16)。
為了生成區域提議,我們在最后的共享卷積層特征映射上滑動一個小網絡,該小的網絡將輸入卷積特征映射的nn維空間窗口作為輸入。每個滑窗映射到一個低維特征(ZF為256維,VGG為512維,后面是ReLU[33])。該特征被送入兩個子全連接層——一個邊界框回歸層和一個邊界框分類層。本文使用n=3,注意,輸入圖像撒花姑娘的有效感受野是大的(ZF和VGG分別為171和228個像素)。圖3(左)顯示了這個小型網絡的一個位置,因為小網絡以滑動窗口方式運行,所有空間位置共享全連接層。這種架構通過一個nn的卷積層,后面級聯兩個子1*1的卷積層(分別用于reg和cls)。
3.1.1 anchor
在每個滑動窗口位置,我們同事預測多個區域提議,其中每個位置可能提議的最大數目為kkk。因此reg層有4k4k4k個輸出,編碼邊界框坐標,cls層有2k2k2k個分數,估計每個提議是目標或不是目標的概率。k個提議是和k個參考框而進行參數化的,稱為錨。一個錨點位于滑窗中心,并與一個尺度和縱橫比相關(圖3),我們默認使用3個尺度和3個縱橫比,在每個滑動位置產生k=9個錨點,對于大小為W×HW\times HW×H(通常約為2400)的卷積特征圖,總共有WHkWHkWHk個錨點。
平移不變性錨點:
本文方法的一個重要特性是平移不變性的,無論是在錨點還是計算相對于錨點的區域提議函數,如果在圖像中平移目標,提議區域也應該平移,而且同樣的函數應該可以在任意位置預測提議區域。本文的方法可以保證平移不變性。作為比較, 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等小數據集上有更小的過擬合風險。
多尺度錨點作為回歸參考:
本文的錨點設計中,提出了一種新型方案來定位多尺度(和多種縱橫比)。圖一中展示了兩種流行的多尺度預測方法。第一種是基于圖像/特征的金字塔,如DPM[8]和基于CNN的方法[9,1,2]。圖像在多個尺度上進行縮放,并在每個尺度上計算特征映射(Fig 1 a)。這種方法通常是有用的,但非常耗時。第二種方法是在特征圖上使用多種尺度的滑窗進行特征提取,如DPM[8]中使用不同大小的濾波器分別對不同縱橫比的模型進行訓練。如果用這種方法來解決多尺度問題,可以把它看做一個“濾波器金字塔”(圖1 b)。第二種方法通常和第一種方法聯合使用。
作為比較,本文基于錨點的方法將建立在錨點金字塔上,這也很合算。本方法參照多尺度和多縱橫比的錨框來分類和回歸邊界框。僅僅依賴于單一尺度的圖像和特征映射,并使用單一尺寸的濾波器(特征映射上的滑動窗口),我們通過實驗來展示這個方案解決多尺度和尺寸的效果(表8)。
因為該多尺度的設計基于錨點,所以我們可以簡化,使用從單一尺度圖像計算得到的卷積特征,Fast R-CNN檢測器也是這樣做的[2]。多尺度錨點設計是共享特征的關鍵組件,不需要額外的成本來處理尺度。
如何理解anchor:
首先我們需要知道anchor的本質是什么,本質是SPP(spatial pyramid pooling)思想的逆向。而SPP本身是做什么的呢,就是將不同尺寸的輸入resize成為相同尺寸的輸出。所以SPP的逆向就是,將相同尺寸的輸出,倒推得到不同尺寸的輸入。
接下來是anchor的窗口尺寸,這個不難理解,三個面積尺寸(1282,2562,512^2),然后在每個面積尺寸下,取三種不同的長寬比例(1:1,1:2,2:1).這樣一來,我們得到了一共9種面積尺寸各異的anchor。示意圖如下:
至于這個anchor到底是怎么用的,這個是理解整個問題的關鍵。
下面是整個faster RCNN結構的示意圖:
利用anchor是從第二列這個位置開始進行處理,這個時候,原始圖片已經經過一系列卷積層和池化層以及relu,得到了這里的 feature:51x39x256(256是層數)
在這個特征參數的基礎上,通過一個3x3的滑動窗口,在這個51x39的區域上進行滑動,stride=1,padding=2,這樣一來,滑動得到的就是51x39個3x3的窗口。
對于每個3x3的窗口,作者就計算這個滑動窗口的中心點所對應的原始圖片的中心點。然后作者假定,這個3x3窗口,是從原始圖片上通過SPP池化得到的,而這個池化的區域的面積以及比例,就是一個個的anchor。換句話說,對于每個3x3窗口,作者假定它來自9種不同原始區域的池化,但是這些池化在原始圖片中的中心點,都完全一樣。這個中心點,就是剛才提到的,3x3窗口中心點所對應的原始圖片中的中心點。如此一來,在每個窗口位置,我們都可以根據9個不同長寬比例、不同面積的anchor,逆向推導出它所對應的原始圖片中的一個區域,這個區域的尺寸以及坐標,都是已知的。而這個區域,就是我們想要的 proposal。所以我們通過滑動窗口和anchor,成功得到了 51x39x9 個原始圖片的proposal。接下來,每個proposal我們只輸出6個參數:每個 proposal 和 ground truth 進行比較得到的前景概率和背景概率(2個參數)(對應圖上的 cls_score);由于每個 proposal 和 ground truth 位置及尺寸上的差異,從 proposal 通過平移放縮得到 ground truth 需要的4個平移放縮參數(對應圖上的 bbox_pred)。
所以根據我們剛才的計算,我們一共得到了多少個anchor box呢?
51 x 39 x 9 = 17900
3.1.2 損失函數
為了訓練RPN,我們為每個錨點分配一個二值類別標簽(表明其是目標或不是目標)。我們給兩種錨點分配一個正標簽:(i)錨點框和真實框具有最高的IoU,(ii)具有與實際邊界框的重疊超過0.7 IoU的錨點。注意,單個真實的邊界框可以為多個錨點分配正標簽,通常第二個條件足以確定正樣本,但我們仍然采用第一個條件,因為在一些極少數情況下,第二個條件可能找不到正樣本。對于所有的真實邊界框,如果一個錨點的IoU比率低于0.3,我們給非正面的錨點分配一個負標簽。既不正也不負的錨點不會有助于訓練目標函數。
根據這些定義,我們對目標函數Fast R-CNN中的多任務損失最小化,圖像損失函數定義為:
L(pi,ti)=1NclsΣiLcls(pi,pi?)+λ1NregΣipi?Lreg(ti,ti?)L({p_i},{t_i})=\frac{1}{N_{cls}}\Sigma_iL_{cls}(p_i,p_i^*)+\lambda \frac{1}{N_{reg}}\Sigma_ip_i^*L_{reg}(t_i,t_i^*)L(pi?,ti?)=Ncls?1?Σi?Lcls?(pi?,pi??)+λNreg?1?Σi?pi??Lreg?(ti?,ti??)
其中,i是小批量中每個錨的索引,pip_ipi?是錨點iii預測為目標的概率,如果錨點為正,那么真實標簽pi?p_i^*pi??為1,如果錨點為負,則為0。tit_iti?表示預測邊界框四個參數的坐標向量,ti?t_i^*ti??是正錨點的真實邊界框向量。分類損失LclsL_{cls}Lcls?是兩個類別(目標或非目標)上的對數損失。回歸損失使用Lreg(ti,ti?)=R(ti?ti?)L_{reg}(t_i,t_i^*)=R(t_i - t_i^*)Lreg?(ti?,ti??)=R(ti??ti??),其中RRR是在文獻[2]中定義的魯棒損失函數(L1損失),pi?Lregp_i^*L_{reg}pi??Lreg?表示回歸損失只在錨點為正(pi?=1p_i^*=1pi??=1)的時候被激活,否則被禁用(pi?=0p_i^*=0pi??=0)。cls和reg層的輸出由pi{p_i}pi?和tit_iti?構成。
這兩項用NclsN_{cls}Ncls?和NregN_{reg}Nreg?進行標準化,且由一個平衡參數λ\lambdaλ進行權衡。我們的實驗中,公式(1)中的cls項通過小批量數據的大小(即Ncls=256N_{cls}=256Ncls?=256)進行歸一化,reg項根據錨點位置的數量(即Nreg——2400N_{reg} —— 2400Nreg?——2400)。默認λ=10\lambda=10λ=10,因此cls和reg項的權重大致相等,通過實驗顯示,結果對大范圍的λ\lambdaλ并不敏感(Table 9),而且歸一化并非必須的,可以簡化。
為了邊界框的回歸,我們依據如下方式進行四個坐標的參數化:
tx=(x?xa)/wa,ty=(y?ya)/hat_x=(x-x_a)/w_a, t_y=(y-y_a)/h_atx?=(x?xa?)/wa?,ty?=(y?ya?)/ha?
tw=log(w/wa),th=log(h/ha)t_w=log(w/w_a), t_h=log(h/h_a)tw?=log(w/wa?),th?=log(h/ha?)
tx?=(x??xa)/wa,ty?=(y??ya)/hat_x^*=(x^*-x_a)/w_a, t_y^*=(y^*-y_a)/h_atx??=(x??xa?)/wa?,ty??=(y??ya?)/ha?
tw?=log(w?/wa),th?=log(h?/ha)t_w^*=log(w^*/w_a), t_h^*=log(h^*/h_a)tw??=log(w?/wa?),th??=log(h?/ha?)
其中,x,y,w和h分別表示邊界框的中心坐標、寬和高。變量xxx,xax_axa?和x?x^*x?分別表示預測框、錨框和真實框,這可以被認為是從錨框到鄰近真實邊界框的回歸。
然而,我們的方法通過與之前的基于RoI的方法[1,2]不同的方式來實現邊界框回歸,在[1,2]中對任意大小的RoI池化特征執行邊界框回歸,并且回歸權重由所有不同大小的區域共享,我們的公式中,回歸中利用的特征是特征圖中具有相同大小的空間區域(如3*3)。為了說明不同大小,學習一系列的k個回歸器,每個回歸器都是從相同尺度和相同縱橫比而學來的,k個回歸器不共享權重,因此,有了錨框之后,即使特征是固定大小和尺度的,仍然可以預測各種尺寸的邊界框。
3.1.3 訓練RPNs
RPN可以通過反向傳播和隨機梯度下降(SGD)進行端到端的想你了[35],我們遵循[2]中的“以圖像為中心”的采樣策略來訓練這個網絡,每個小批量數據都從包含許多正例和負例錨點的單張圖像中產生。對所有錨點的損失函數進行優化時有可能的,單張這樣一來會偏向于負樣本,因為它們是占主導地位的,取而代之的是,我們在圖像中隨機采樣256個錨點,計算一個小批量數據的損失函數,其中采樣的正錨點和負錨點的比例可達1:1,如果圖像中的正樣本少于128個,我們使用負樣本填充小批量數據。
我們利用均值為0,方差為0.01來隨機初始化所有新層的權重,所有其他層(即所有共享卷積層)通過預訓練的ImageNet分類模型[36]來進行初始化,如同[5]中的標準步驟一樣。我們調整ZF網絡中的所有層,以及conv3_1及其之上的層來節省內存,對于60k的小批量數據,我們使用0.001的學習率,對于PASCAL VOC數據集中的下一個20k小批量數據,我們使用0.9的動量和0.0005的衰減率,使用Caffa實現[38]。
3.2 RPN和Fast R-CNN的特征共享
目前為止,我們已經描述了如何訓練用于區域提議生成的網絡,沒有考慮將這些提議的用于基于區域的目標檢測CNN,為了檢測網絡,我們使用Fast R-CNN。下面我們將介紹一些算法,學習由RPN和Fast R-CNN組成的具有共享卷積層的統一網絡(Fig.2)。
獨立訓練的RPN和Fast R-CNN將以不同的方式修改卷積層。因此,我們需要開發一種允許在兩個網絡之間共享卷積層的技術,而不是學習兩個獨立的網絡。我們討論三個方法來訓練具有共享特征的網絡:
(i)交替訓練
在這個方案中,我們首先訓練RPN,并使用這些提議來訓練Fast R-CNN。該網絡用Fast R-CNN進行微調,之后被用來初始化RPN,并且重復該過程,這也是本文的所有實驗中使用的解決方案。
(ii)近似聯合訓練
在這個方案中,RPN和Fast R-CNN網絡在訓練期間合并成一個網絡,如圖2所示。在每輪SGD迭代過程中,前向傳播生成提議區域,在訓練Fast R-CNN檢測器時將這看做是固定的、預計算的提議。反向傳播像往常一樣進行,其中對于共享層,組合來自RPN損失和Fast R-CNN損失的反向傳播信號。這個解決方案很容易實現。但是這個解決方案忽略了關于提議邊界框的坐標(也是網絡響應)的導數,因此是近似的。在我們的實驗中,我們實驗發現這個求解器產生了相當的結果,與交替訓練相比,訓練時間減少了大約25?50%。這個求解器包含在我們發布的Python代碼中。
(iii)非近似的聯合訓練。
如上所述,由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]。我們重新縮放圖像,使得它們的短邊是s=600像素[2]。多尺度特征提取(使用圖像金字塔)可能會提高精度,但不會表現出速度與精度的良好折衷[2]。在重新縮放的圖像上,最后卷積層上的ZF和VGG網絡的總步長為16個像素,因此在調整大小(?500×375)之前,典型的PASCAL圖像上的總步長為?10個像素。即使如此大的步長也能提供良好的效果,盡管步幅更小,精度可能會進一步提高。
對于錨點,我們使用了3個尺度,邊界框面積分別為1282128^21282,2562256^22562和5122512^25122個像素,以及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張訓練評估圖像和在5000張測試圖像,共20個類別。我們還提供了一些模型在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)。
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在測試時使用top-100提議區域仍會獲得較好的結果,表明排名靠前的RPN提議是準確的。另外,使用排名前6000的提議區域獲得的mAP結果是55.2%,這表明NMS不會損害檢測mAP并可能減少誤報。
接著,我們分別測試在關閉RPN的cls和reg來發現RPN的作用。當cls層在測試時被移除時(故不使用NMS/排名),我們從未得分的區域中隨機采樣N個提議區域,當n=1000時,mAP幾乎沒有變化(55.8),但當N=100時,mAP降為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顯示了詳細的數字
在表5中我們總結了整個目標檢測系統的運行時間。根據內容(平均大約1.5s),SS需要1-2秒,而使用VGG-16的Fast R-CNN在2000個SS提議上需要320ms(如果在全連接層上使用SVD[2],則需要223ms)。我們的VGG-16系統在提議和檢測上總共需要198ms。在共享卷積特征的情況下,單獨RPN只需要10ms計算附加層。我們的區域計算也較低,這要歸功于較少的提議(每張圖片300個)。我們的采用ZF網絡的系統,幀速率為17fps。
對超參數的敏感度:
在表8中,我們調查錨點的設置。默認情況下,我們使用3個尺度和3個長寬比(表8中69.9%的mAP)。如果在每個位置只使用一個錨點,那么mAP的下降幅度將是3?4%。如果使用3個尺度(1個長寬比)或3個長寬比(1個尺度),則mAP更高,表明使用多種尺寸的錨點作為回歸參考是有效的解決方案。在這個數據集上,僅使用具有1個長寬比(69.8%)的3個尺度與使用具有3個長寬比的3個尺度一樣好,這表明尺度和長寬比不是檢測準確度的解決維度。但我們仍然在設計中采用這兩個維度來保持我們的系統靈活性。
在表9中,我們比較了公式(1)中λ的不同值。默認情況下,我們使用λ=10,這使方程(1)中的兩個項在歸一化之后大致相等地加權。表9顯示,當λ在大約兩個數量級(1到100)的范圍內時,我們的結果只是稍微受到影響(~1%)。這表明結果對寬范圍內的λ不敏感。
分析IoU召回率:
接下來,我們使用實際邊界框來計算不同IoU比率的提議召回率。值得注意的是,Recall-to-IoU度量與最終的檢測精度的相關性是松耦合的[19,20,21]。使用這個指標來診斷提議方法比評估提議方法更合適。
在圖4中,我們顯示了使用300,1000和2000個提議的結果。我們與SS和EB進行比較,根據這些方法產生的置信度,N個提議是排名前N的提議。從圖中可以看出,當提議數量從2000個減少到300個時,RPN方法表現優雅。這就解釋了為什么RPN在使用300個提議時具有良好的最終檢測mAP。正如我們之前分析過的,這個屬性主要歸因于RPN的cls項。當提議較少時,SS和EB的召回率下降的比RPN更快。
一階段 檢測 vs. 兩階段 提議+檢測:
OverFeat論文[9]提出了一種在卷積特征映射的滑動窗口上使用回歸器和分類器的檢測方法。OverFeat是一個一階段,類別特定的檢測流程,而我們的是兩階段級聯,包括類不可知的提議和類別特定的檢測。在OverFeat中,區域特征來自一個尺度金字塔上一個長寬比的滑動窗口。這些特征用于同時確定目標的位置和類別。在RPN中,這些特征來自正方形(3×3)滑動窗口,并且預測相對于錨點具有不同尺度和長寬比的提議。雖然這兩種方法都使用滑動窗口,但區域提議任務只是Faster R-CNN的第一階段——下游的Fast R-CNN檢測器會致力于對提議進行細化。在我們級聯的第二階段,在更忠實覆蓋區域特征的提議框中,區域特征自適應地聚集[1],[2]。我們相信這些功能會帶來更準確的檢測結果。
為了比較一階段和兩階段系統,我們通過一階段Fast R-CNN來模擬OverFeat系統(從而也規避了實現細節的其他差異)。在這個系統中,“提議”是3個尺度(128,256,512)和3個長寬比(1:1,1:2,2:1)的密集滑動窗口。訓練Fast R-CNN來預測類別特定的分數,并從這些滑動窗口中回歸邊界框位置。由于OverFeat系統采用圖像金字塔,我們也使用從5個尺度中提取的卷積特征進行評估。我們使用[1],[2]中5個尺度。
表10比較了兩階段系統和一階段系統的兩個變種。使用ZF模型,一階段系統具有53.9%的mAP。這比兩階段系統(58.7%)低4.8%。這個實驗驗證了級聯區域提議和目標檢測的有效性。在文獻[2],[39]中報道了類似的觀察結果,在這兩篇論文中,用滑動窗取代SS區域提議會導致~6%的退化。我們也注意到,一階段系統更慢,因為它產生了更多的提議。
4.2 在MS COCO上的實驗
我們在Microsoft COCO目標檢測數據集[12]上提供了更多的結果。這個數據集包含80個目標類別。我們用訓練集上的8萬張圖像,驗證集上的4萬張圖像以及測試開發集上的2萬張圖像進行實驗。我們評估了IoU∈[0.5:0.05:0.95]的平均mAP(COCO標準度量,簡稱為mAP@[.5,.95])和mAP@0.5(PASCAL VOC度量)。
5. 結論
本文提出了RPNs來生成高效、準確的區域提議,區域提議步驟通過與下游的檢測網絡共享卷積特征,變為幾乎是0成本的過程。我們的方法使得同一且基于深度學習的目標檢測系統能夠以接近實時的幀率運行,學習到的RPN也提高了區域提議的質量,從而提高了目標檢測精度。
總結
以上是生活随笔為你收集整理的目标检测系列(五)——Faster R-CNN译文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三大航空公司2022年合计预亏逾1000
- 下一篇: 三亚凤凰机场出现滚滚浓烟?机场回应:暂无