深度學習論文翻譯解析(十三):Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

戰爭熱誠發表於2020-09-07

論文標題:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

  標題翻譯:基於區域提議(Region  Proposal)網路的實時目標檢測

論文作者:Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun

論文地址:https://arxiv.org/abs/1506.01497

Faster RCNN 的GitHub地址:https://github.com/rbgirshick/py-faster-rcnn

參考的Faster R-CNN翻譯部落格:https://github.com/SnailTyan/deep-learning-papers-translation

宣告:小編翻譯論文僅為學習,如有侵權請聯絡小編刪除博文,謝謝!           

  小編是一個機器學習初學者,打算認真研究論文,但是英文水平有限,所以論文翻譯中用到了Google,並自己逐句檢查過,但還是會有顯得晦澀的地方,如有語法/專業名詞翻譯錯誤,還請見諒,並歡迎及時指出。

前言

  Faster RCNN 是何凱明等大神在 2015年提出目標檢測演算法,該演算法在 2015年的 ILSVRC 和 COCO競賽中獲得多個第一。該演算法在Fast RCNN基礎上提出了RPN候選框生成演算法啊,使得目標檢測速度大大提高。

  《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks收錄於Neural Information Processing Systems (NIPS), 2015( Meachine Learning領域的頂會)。R-CNN和Fast R-CNN引領了近兩年目標檢測的潮流,Fast R-CNN對R-CNN進行了加速,而這篇Faster R-CNN則進一步對Fast R-CNN進行了加速,使得這種基於CNN的目標檢測方法在real-time上看到了希望,使之運用到工程上成為了可能。

  下面對RCNN系列演算法進行比較:

1,R-CNN

  (1) image input

  (2) 利用 Selective Search 演算法在影像中從上到下提取 2000 個左右的 建議視窗(Region Proposal)

  (3)將每個 Region Proposal縮放(warp)成 227*227 的大小並輸入到 CNN,將 CNN的 fc7 層的輸出作為特徵

  (4)將每個Region Proposal 提取的CNN特徵輸入到 SVM進行分類

  (5)對於SVM分好類的Region Proposal 做邊框迴歸,用 Bounding Box 迴歸值矯正原來的建議視窗,生成預測視窗座標

缺陷

  (1)訓練分為多個階段,步驟繁瑣:微調網路 + 訓練SVM + 訓練邊框迴歸器

  (2)訓練耗時,佔用磁碟空間大;5000張影像產生幾百G的特徵檔案

  (3)速度慢:使用GPU,VGG16模型處理一張影像需要 47s

  (4)測試速度慢:每個候選區域需要執行整個前向CNN計算

  (5)SVM和迴歸是事後操作,在SVM和迴歸過程中CNN特徵沒有被學習更新

2,Fast-RCNN

  (1)image input

  (2)利用Selective Search 演算法在影像中從上到下提取 2000個左右的建議視窗(Region Proposal)

  (3)將整張圖片輸入 CNN,進行特徵提取

  (4)把建議視窗對映到 CNN 的最後一層卷積 feature map上

  (5)通過 ROI pooling層使每個建議視窗生成固定尺寸的 feature map

  (6)利用Softmax Loss(探測分類概率)和 Smooth L1 Loss(探測邊框迴歸)對分類概率和邊框迴歸(Bounding Box Regression)聯合訓練

  相比於 R-CNN,主要兩處不同

  (1)最後一層卷積層後加了一個 ROI pooling layer

  (2)損失函式使用了多工損失函式(multi-task loss),將邊框迴歸直接加入到 CNN 網路中訓練改進

  相比如R-CNN,其改進如下

  (1)測試時速度慢:R-CNN把一張圖新分解成大量的建議框,每個建議框拉伸形成的影像都會單獨通過 CNN 提取特徵,實際上這些建議框之間大量重疊,特徵值之間完全可以共享,造成了運算能力的浪費

            Fast R-CNN 將整張影像歸一化後直接送入CNN,在最後的卷積層輸出的 feature map上,加入建議框資訊,使得在此之前的CNN運算得以共享

  (2) 訓練時速度慢:R-CNN在訓練時,是在採用SVM分類之前,把通過CNN提取的特徵儲存在硬碟上,這種方法造成了訓練效能低下,因為在硬碟上大量的讀寫資料會造成訓練速度緩慢

             Fast R-CNN 在訓練時候,只需要將一張圖新送入網路,每張影像一次性的提取CNN特徵和建議區域,訓練資料在GPU記憶體裡直接進Loss層,這樣候選區域的前幾層特徵不需要再重複計算且不再需要把大量資料儲存在硬碟上

  (3)訓練所需空間大:R-CNN中獨立地SVM分類器和迴歸器需要大量特徵作為訓練樣本,需要大量的硬碟空間

                 Fast R-CNN把類別判斷和位置迴歸統一用深度網路實現,不再需要額外儲存

  (4)由於ROI pooling層的提出,不需要再input進行Crop和Wrap操作,避免畫素的損失,巧妙的解決了尺度縮放問題

3,Faster R-CNN

  (1)image input

  (2)將整張圖片輸入CNN,進行特徵提取

  (3)用 RPN 先生成一堆Anchor box,對其進行裁剪過濾後通過Softmax判斷 anchors屬於前景(foreground)或者後景box,形成較精確的 proposal(注:這裡的較精確是相對於後面全連線層的再一次 box regression 而言)

  (4)把建議視窗對映到CNN的最後一層卷積feature map上

  (5)通過 ROI pooling層使每個ROI生成固定尺度的 feature map

  (6)利用Softmax Loss(探測分類概率)和Smooth L1 Loss(探測邊框迴歸)對分類概率和邊框迴歸(Bounding box regression)聯合訓練

  相比Fast R-CNN,主要兩處不同

  (1)使用RPN(Region Proposal Network)代替原來的Selective Search方法產生建議視窗

  (2)產生建議視窗的 CNN和目標檢測的CNN共享

  相比Fast R-CNN,其改進如下

  (1)如何高效快速產生建議框?

    Faster R-CNN 創造性地採用卷積網路自行產生建議框,並且和目標檢測網路共享網路,使得建議框數目從原有的約 2000 個減少為 300個,且建議框的質量也有本質的提高

  R-CNN系列的時間對比:

摘要

  最先進的目標檢測網路依靠區域提議演算法來假設目標的位置。SPP-net【1】和Fast R-CNN【2】等研究已經減少了這些檢測網路的執行時間,使得區域提議計算成為一個瓶頸。在這項工作中,我們引入了一個區域提議網路(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是多個比賽中獲得第一名輸入的基礎。程式碼可公開獲得。

1,引言

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

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

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

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

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

  RPN旨在有效預測具有廣泛尺度和長寬比的區域提議。與使用影像金字塔(圖1,a)或濾波金字塔(圖1,b)的流行方案【8】【9】【1】相比,我們引入新的“錨”(anchor)盒作為多種尺度和長寬比的參考。我們的方案可以被認為是迴歸參考金字塔(圖1,c),它避免了列舉多種比例或長寬比的影像或濾波器。這個模型在使用單尺度影像進行訓練和測試時執行良好,從而有利於執行速度。

  為了將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 和COCO2015競賽中,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】能夠對共享卷積特徵進行端到端的檢測器訓練,並顯示了令人信服的準確性和速度。

   從上面的三張圖可以看出,Faster R-CNN由以下幾部分組成:

  (1)資料集,image input

  (2)卷積層CNN等基礎網路(比如VGG-16, ResNet, MobileNet等基礎網路),提取特徵得到feature map

  (3-1)RPN層,再在經過卷積層提取到的 feature map上用一個 3*3 的 slide window,去遍歷整個 feature map,在遍歷過程中每個 window 中心按照 rate, scale(1:2  1:1  2:1)生成 9個 anchors,然後再利用全連線對每個 anchors 做二分類(是前景還是背景)和初步 bbox regression,最後輸出比較精確的 300個 ROIs

  (3-2)把經過卷積層 feature map 用 ROI pooling固定全連線層的輸入維度

  (4)最後把經過RPN輸出的 ROIs對映到 ROI pooling的feature map 上進行 bbox迴歸和分類。

3, Faster R-CNN

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

3.1  區域提議網路

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

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

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

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

3.1.2  損失函式

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

  根據這些定義,我們對目標函式Fast R-CNN【2】中的多工損失進行最小化,我們對影像的損失函式定義為:

   其中,i表示一個小批量資料中錨點的所有,pi 是錨點 i 作為目標的預測概率,如果錨點位正,真實標籤 pi* 為1,如果錨點位負,則為0,ti 是表示預測邊界框 4個引數化座標的向量,而 ti 是與正錨點相關的真實邊界框的向量。分類損失 Lcls 是兩個類別上(目標或不是目標)的對數損失。對於迴歸損失,我們使用 Lreg ,其中R是在【2】定義的魯棒損失函式(平滑項 L1),項 pi*Lreg 表示迴歸損失僅對正錨點啟用,否則被禁用 pi=0,cls和reg層的輸出分別由 pi 和 ti 組成。

   這兩個項用 Ncls 和 Nreg 進行標準化,並由一個平衡引數 lambda 加權。在我們目前的實現中(如釋出的程式碼中),方程(1)中 cls 項通過小批量資料的大小(即 Ncls=256)進行歸一化,reg項根據錨點位置的數量(即 Nreg~2400) 進行歸一化。預設情況下我們設定 lambda的值不敏感(表9)。我們還注意到,上面的歸一化不是必須的,可以簡化。

   對於邊界框迴歸,我們採用【5】中的4個座標引數化:

   其中,x, y, w和 h 表示邊界框的中心座標及其寬和高,變數 x, xa和 x* 分別表示預測邊界框,錨盒和實際邊界框(類似於 y, w, h)。這可以被認為是從錨盒到鄰近的實際邊界框的迴歸。

  然而,我們的方法通過與之前的基於ROI(感興趣區域)方法【1】【2】不同的方法來實現邊界框迴歸。在【1】【2】中,對任意大小的 ROI 池化的特徵執行邊界框迴歸,並且迴歸權重由所有區域大小貢獻。在我們的公式中,用於迴歸的特徵在特徵對映上具有相同的空間大小(3*3)。為了說明不同的大小,學習一組 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.00005的重量衰減【37】,我們的實現使用 Caffe【38】。

3.2 RPN 和 Fast R-CNN 共享特徵

  到目前為止,我們已經描述瞭如何訓練用於區域提議生成的網路,沒有考慮將利用這些提議的基於區域的目標檢測CNN。對於檢測網路,我們採用 Fast R-CNN【2】。接下來我們介紹一些演算法,學習由 RPN 和Fast R-CNN 組成的具有共享卷積層的統一網路(圖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】。在重新縮放的影像上,最後卷積層上的 ZF 和 VGG網路的總步長為 16個畫素,因此在調整大小(~500*375)之前,典型的PASCAL 影像上的總步長為~10個畫素。即使如此大的步長也能提供良好的效果,儘管步幅更小,精度可能會進一步提高。

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

  跨越影像邊界的錨盒需要小心處理。在訓練過程中,我們忽略了所有的跨界錨點,所以不會造成損失。對於一個典型的 1000*600影像,總共將會有大約 20000(approx 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 2007基準資料集上的測試結果。對於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在測試時使用排名最高的100個提議仍然會導致有競爭力的結果(55.1%),表明排名靠前的RPN提議是準確的。相反的,使用排名靠前的 6000個RPN提議(無NMS)具有相當的mAP(55.2%),這表明NMS不會損害檢測mAP並可能減少誤報。

  接下來,我們通過在測試時分別關閉 RPN的 cls 和 reg 輸出來調查 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顯示了詳細的數字。

   在表5中我們總結了整個目標檢測系統的執行時間。根據內容(平均大約 1.5s),SS需要1~2秒,而使用VGG-16的Fast R-CNN 在 2000 個 SS提議上需要 320ms(如果在全連線層上使用 SVD【2】,則需要 223 ms)。我們的 VGG-16系統在提議和檢測上總共需要 198ms。在共享卷積特徵的情況下,單獨 RPN 只需要 10ms計算附加層。我們的區域計算也較低,這要歸功於較少的提議(每張圖片 300個)。我們採用的ZF Net的系統,幀速率為 17 fps。

  對超引數的敏感度。在表8中,我們調查錨點的設定。預設情況下,我們使用3個尺度和3個長寬比(表8中的mAP為 69.9%)。如果在每個位置只使用一個錨點,那麼mAP的下降幅度將是 3~4%。如果使用 3個尺度(一個長寬比)或3個長寬比(1個尺度),則mAP更高,表明使用多種尺度的錨點作為迴歸參考是有效的解決方案。在這個資料集上,僅使用具有1個長寬比(69.8%)的3個尺度與使用具有3個長寬比的3個尺度一樣好,這表明尺度和長寬比不是檢測準確度的解決維度。但我們仍然在涉及中採用這兩個維度來保持我們的系統靈活性。

  在表9中,我們比較了公式(1)中 lambda 的不同值。預設情況下,我們使用 lambda=10,這使方差(1)中的兩個項在歸一化之後大致相等的加權。表9顯示,當 lambda 在大約兩個數量級(1到100)的範圍內時,我們的結果只是稍微受到影響(大約 1%)。這表明結果對寬範圍內的 lambda 不敏感。

  分析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更快。

  一階段檢測與兩階段提議 + 檢測。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@【0.5, 0.95】)和mAP@0.5(PASCAL VOC度量)。

  我們的系統對這個資料集做了一些小的改動。我們在 8 個 GPU上實現訓練我們的模型,RPN(每個GPU1個)和Fast R-CNN(每個GPU上2個)的有效最小批次大小為 8 個。RPN步驟和Fast R-CNN步驟都以 24萬次迭代進行訓練,學習率為 0.003,然後以 0.0003的學習率進行8萬次迭代。我們修改了學習率(從 0.003而不是 0.001開始),因為小批次資料的大小發生了改變。對於錨點,我們使用3個長寬比和4個尺度(加上64**2),這主要是通過處理這個資料集上的小目標來激發的。此外,在我們的 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資料集上改進了mAP@0.5(但對PASCAL VOC的影響可以忽略不計)。

  其餘的實現細節與PASCAL VOC 相同。特別的是,我們繼續使用 300個提議和單一尺度(s=600)測試。COCO資料集上的測試時間仍然是大約 200ms 處理一張影像。

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

  接下來我們評估我們的Faster R-CNN系統。使用COCO訓練集訓練,在COCO測試開發集上Faster R-CNNN有 42.1% 的mAP@0.5和 21.5% 的mAP@[0.5,0.95]。與相同協議下的Fast R-CNN相比,mAP@0.5要高 2.8% ,mAP@[.5, .95]要高 2.2% (表11)。這表明,在更高的IoU閾值上,RPN對提高定位精度表現出色。使用COCO訓練集訓練,在COCO測試開發集上Faster R-CNN有 42.7% 的mAP@0.5和 21.9% 的mAP@[.5, .95]。圖6顯示了MS COCO測試開發資料集中的一些結果。

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

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

5,總結

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

   參考文獻:https://blog.csdn.net/weixin_43198141/article/details/90178512

相關文章