Faster R-CNN論文翻譯和PPT講解

本論文是目標檢測領域必看的一篇論文,論文下載地址點這裏,2015年發表,任少卿,何凱明,RBG,孫劍,響噹噹的大佬

對Faster RCNN的損失函數的一些具體討論我在https://blog.csdn.net/u012925946/article/details/103883410博客鏈接中有詳細描述

Faster RCNN的一個PPT詳細步驟 講解:

鏈接:https://pan.baidu.com/s/1YdSBv7e8UuyY1WJCkzRq9A 
提取碼:kacp

摘要:

先進的目標檢測網絡需要依賴region proposal區域提議來假設目標的位置。

Fast RCNN 中region proposal成爲瓶頸,我們引入RPN共享全圖的卷積特徵,計算成本幾乎爲0

RPN與Fast RCNN檢測器共享卷積特徵,合併爲單一網絡,使用“注意力”機制,由RPN指導網絡檢測位置

使用VGG模型,可達到GPU上,5fps,200ms,ILSVRC2015競賽第一。

一、引言

Fast RCNN 除去區域提取,接近實時

區域提議通常採用廉價的特徵,經濟的推理方案,

如選擇搜索(貪婪的合併低級特徵像素塊)CPU中2秒一張,還是慢

EageBox,每張圖2.0秒

區域推薦在GPU上工程化重現,也容易忽略和下游檢測網絡共享計算的機會

RPN每張10ms,是全卷積網絡可以end-end訓練; 同時在網格上回歸位置和目標分數

不同於圖像金字塔,濾波器金字塔(多尺寸,多比例),我們是迴歸參考金字塔(在此3*3上還原出原圖中的對應大小區域)

二、相關工作

用於目標檢測的深度網絡:R-CNN端到端訓練CNN來對提議的區域(proposal regions)進行分類。只分類,不預測目標邊界。

在OverFeat方法中,從圖像金字塔計算卷積特徵來分類、定位、檢測。假定單一目標,用全連接層預測包圍框邊界,全連接層再變成卷積層檢測多類目標。

SPP網絡自適應大小池化,共享卷積

三、Faster

由兩部分模型組成:CNN區域推薦、Fast 目標檢測器。整體是單個的同一的網絡。

3.1RPN

輸入尺寸任意,輸出一系列object proposals和scores(前景的分數)

ZFmodel有5個共享卷積層,VGG16有13個共享卷積層

爲了region proposals , 我們在feature map上滑動一個小網絡,小網絡輸入大feature mao 上的n*n的空間窗口。每次滑動映射到低維特徵圖上,ZFmodel是256維,VGG是512維,然後ReLU

然後到2個全連接層,reg,cls  論文中n=3。輸入圖像的有效感受野是很大的(ZF171個,VGG228個)

這種架構通過一個n*n卷積層,後面是兩個1*1卷積層(reg\cls)來實現

3.1.1Anchors

每個滑動窗口同時預測k個proposals,因而reg層有4k個輸出來編碼k個方框;cls輸出2k個分數來評估是前景的概率

k個proposals是參數化的,anchor在滑動窗口的中心,與一個尺度和長寬比相關。W*H的卷積特徵圖(通常2400)共有W*H*k個anchors

平移不變的錨點 translation invariant

我們的方法一個重要特性就是平移不變性,無論是錨點還是計算錨點的區域。如果目標平移,proposal也應該平移並且在任意位置可以預測出proposal。作爲比較,MultiBox方法使用k-means方法產生800個錨點,但是這並不是平移不變性。

平移不變性也減少了模型的大小。MultiBox方法有(4+1)*800維的全連接層,我們的方法有(4+2)*9維的卷積層輸出(如果k=9個anchors的話),因此,對於VGG16來說,我們有28000個參數,也就是512*(4+2)*9個參數。MUltiBox中,6100000個參數,是1536*(4+1)*800,對於GoogleNet來說。考慮到特徵投影層,我們的方法仍然有少一個數量級的參數量。我們期待在PASCAL這樣的小數據集上能介紹過擬合風險。

多尺度錨點作爲迴歸參考 Multi-Scale Anchors as Regression References

我們設計的錨點方法提出了一個新方案來解決多尺度多長寬比,如圖1

a圖像金字塔(DPM使用),b濾波器金字塔(CNN方法使用),a方法如HOG,深度卷積特徵等,有用,但耗時。方法二就是在特徵圖上滑動一個多尺度長寬比的濾波器。

方法b中,如在DPM中,使用不同大小的5*7和7*5的濾波器,分別對模型進行訓練,叫濾波器金字塔。ab方法常聯合採用

作爲比較,方法c,我們的方法叫錨點金字塔, a pyramid of anchors,計算成本更低,方法引入多尺度多比例的分類和迴歸。這隻依賴單一尺度的圖像和特徵圖,使用單一尺寸的濾波器,在特徵圖上滑窗。(個人:單一尺度指的默認3*3尺度,然後以不同大小長款的9中anchor映射回原圖,來作爲region proposal),效果如表8

基於這種設計,我們可以簡單的在單一尺度的圖像上計算卷積特徵,這也是Fast RCNN這樣做的。多尺度anchors是共享卷積特徵的關鍵組件,且在處理多尺度時不帶來額外的計算成本

3.1.2 損失函數

在訓練RPNs時,我們給每個anchors設計一種二分類結果,判斷是否是目標。我們給兩種錨點分類正標籤:1,anchors和真實BBox有最高IOU的錨點 或者2,與BBox的IOU超過0.7的錨點。這種情況下,一個BBox可能給多個anchors分配正標籤。通常條件2可以確定正樣本,但是少數情況下找不到正樣本,所以需要條件1

我們給IOU和所有BBox低於0.3的anchors負標籤。那些不是正也不是負的anchors對訓練沒有幫助,捨棄。

根據這些定義,我們最小化Fast RCNN的多任務損失函數。損失函數定義爲:

 

i是每個mini-batch中anchor的索引,Pi是預測它是目標的概率,錨點Ground True時Pi*爲1,否則爲0

ti是向量,代表bounding box四個參數化座標的向量,ti*代表Ground Ture的真實邊框的座標向量。

分類loss , Lcls是兩個類別上的對數損失log loss。

迴歸loss, Lreg = R(ti - ti*)代表R論文[2]中定義的魯棒損失函數robust loss,(smooth  L1)。

pi*Lreg標識的迴歸loss只是在正例anchors即pi*=1被激活,否則被禁用。

cls和reg層的輸出分別有pi和ti組成

這兩項分別由Ncls和Nreg進行標準化normalized,權重由λ平衡。在現有的實現中,cls由方程1中通過最小批量數據mini-batch的大小Ncls=256來進行歸一化。reg由anchor位置的數量(VGG大約2400個)來歸一化。默認λ=10,因此cls和reg的權重大致相等。

表9中,實驗顯示,實驗結果對λ不敏感,注意到上面的歸一化normalization也是不必要的,可以簡化。

對於邊框的迴歸,我們採用四個座標的參數化:

x,y,w,h是box的中心位置、高、寬。變量 x 是預測的框, xa 是anchor box , x*是Ground Box

這可以被認爲是從anchor到接近ground-truth的迴歸。

然而,我們的方法與之前基於RoI的方法不同,在[1][2]中對任意大小RoI池化的特徵進行邊框迴歸,迴歸權重被所有區域共享。

我們的公式中,用於迴歸的特徵再特徵映射上具有相同的空間大小3*3,。爲了應對變化的尺寸,k個bounding box迴歸器需要被學習,每個迴歸器所代表的一種尺寸及一種比例,k個迴歸器不共享權重。這樣,由於錨點的設計,及時具有固定的anchors,仍然可以預測不同尺寸的邊框。

(個人:Fast中使用RoI, 現在不用了)

3.1.3 訓練RPNs

RPN可以被反向傳播和隨機梯度下降SGD端到端的訓練,我們遵循以圖像爲中心的採樣策略來訓練網絡。每個mini-batch從一張圖像中產生,包含多個正例和負例anchor樣本。對所有錨點的損失函數會偏向負樣本,因爲他們占主導地位。因而我們從一張圖中隨機採樣256個樣本來計算損失函數,政府錨點比例1:1,如果正樣本不夠則負樣本補充。

所有的共享卷積層由ImageNet分類預訓練得來。隨機初始化所有的新層,以0均值,0.01方差高斯分佈。調整ZF模型所有的層,以及VGG網絡conv3_1及之上的層以節約內存,使用0.001學習率,20K個mini-batch,在PASCAL_VOC上。使用momentum=0.9,權重衰減0.0005,使用caffe平臺。

3.2 RPN和Fast R-CNN共享卷積

目前爲止,我們描述了訓練RPN網絡,還沒考慮到利用這些利用這些區域來檢測的CNN網絡。對檢測檢測網絡來說,我們使用Fast R-CNN。圖2將展示如何共享卷積

RPN和Fast R-CNN是單獨訓練的,我們需要一種技術讓兩個網絡之間共享卷積。我們有三種方法

一,交替訓練。

二,近似聯合訓練。二者訓練時合併成一個網絡,如圖2,每次SGD迭代是,前向傳播產生一些region proposals,在訓練Fast R-CNN時將proposals看做固定的。反向傳播嚮往常一樣進行。對於共享層,反向傳播信號從RPN loss和Fast R-CNN loss二者的組合來進行。這個解決方案很容易實現,但是忽略了關於proposal邊界框的導數,也就是網絡的響應,因而是近似的。在試驗中,這個方法產生了近似的結果,且與交替訓練比節約了25%-50%的訓練時間

三,非近似的聯合訓練。RPN預測的邊界框也是輸入函數。Fast R-CNN中RoI Pooling層接受卷積特徵以及預測的邊界框 作爲輸入,理論上有效的反向傳播其也應該包括關於邊界座標的梯度。在近似聯合訓練中這些梯度被忽視。在非近似聯合訓練中,我們需要一個可微的RoI Pooling層,這是一個很重要的問題,可以通過[15]提出的ROI 扭曲層給出解決方案。這不在本文範圍中。

4步交替訓練

本文中採用四步交替訓練,交替優化學習共享特徵。首先按照3.1.3中訓練RPN,網絡被ImageNet初始化,在端到端的region proposal任務中fine-tune。第二步,使用第一步中的RPN對Fast R-CNN進行單獨訓練。這個檢測網絡也由ImageNet初始化,此時兩個網絡不共享卷積層。在第三步中,我們使用檢測器網絡來初始化RPN訓練,但是我們修正共享的卷積層,並且只對RPN特有的層進行微調。現在這兩個網絡共享卷積層。最後,保持共享卷積層的固定,我們對Fast R-CNN的獨有層進行微調。因此,兩個網絡共享相同的卷積層並形成統一的網絡。類似的交替訓練可以運行更多的迭代,但是我們只觀察到可以忽略的改進。

3.3 實現細節

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

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

跨越圖像邊界的anchors boxes需要小心處理,訓練時我們忽略跨越邊界的 anchors,所以他們對loss沒有貢獻。對典型的1000*600的圖像來說,一共大約有20000(60*40*9)個anchors.忽略跨越邊界的anchots,每張圖大約剩下6000個可以訓練,如果這些跨邊界的不忽略,則會在目標函數總引入大的且難以糾正的誤差項,且訓練不會收斂。但在測試時,我們仍然將全卷積RPN應用於整張圖,這可能產生超過邊界的proposal region,我們裁剪到圖像邊界。

有些RPN proposals互相高度重合,爲了減少冗餘,我們在proposal region中使用cls scores來使用NMS。我們固定NMS的閾值爲0.7,每張圖大約剩下2000個proposal regions,NMS並不會損害最終的檢測精確性,但是可以大大減少proposals數量。NMS之後,我們使用前N個proposal regions來進行檢測。接下來,我們使用2000個RPN的proposals來訓練Fast R-CNN,但是在測試時評估不同數量的proposals

4 實驗

4.1 PASCAL VOC上的實驗

在檢測基準數據集VOC2007上全面評估了模型。PASCALVOC2007有大約5000張訓練圖片,20類,5000張測試圖像,還提供了了VOC2012的測試結果。對於ImageNet預訓練網絡,我們使用5個卷積層3個全連接的"快速版本"ZF模型以及13個卷積層,3個全連接的VGG16,主要評估檢測的檢測精度mean Average Precision(mAP),以內這是檢測目標的實際指標(而不是關注目標proposal代理度的量)

表2頂部展示了使用各種區域推薦方法進行訓練和測試Fast R-CNN的結果,這些方法使用ZF網絡。對於選擇性搜做SS,我們通過快速模式生成2000個proposals,對於EdgeBoxes,我們通過默認EB設置0.7的IOU來生成proposals。SS精度mAP58.7%,EB的 map是58.6%,RPN使用 300個proposals時是59.9%,效果最好。由於共享卷積計算,使用RPN比SS或者EB更快,較少的proposals也減少了區域方面全連接的成本,如表5

RPN的消融實驗(Ablation Experiments)爲了研究RPNs作爲區域推薦的性能,進行消融實驗。首先,顯示了在RPN,和Fast R-CNN監測網絡共享卷積層的效果。爲此,我們在四步訓練的第二步停止訓練。使用單獨的挽留過將結果略微減少到58.7%,(使用表2中RPN+ZF,不共享卷積),觀察到,由於第三步訓練中,使用檢測器調整的特徵來微調RPN才使得proposals質量得到了改善。

接下來,我們分析RPN對訓練Fast R-CNN造成的影響。爲此,我們使用2000peoposals的SS方法和ZF模型來訓練Fast R-CNN。固定檢測器,通過改變測試時使用的proposals來評估檢測的mAP,在這些消融試驗中,RPN不與檢測器共享卷積

測試階段使用300個RPN提議來替換SS,得到56.8%的mAP , 這個損失是因爲訓練測試時的不一致。這個結果作爲之後比較的baseline基準

令人驚訝的是,RPN測試時使用排名最高的100個peoposals仍然很準,55.1%,表明排名靠前的RPN很準。相反的,使用前6000個RPN(無NMS)具有相當的mAP,55.2%,說明NMS不會損害檢測到的mAP , 且可以減少誤報。

接下來,我們在測試時分別關閉cls和reg的輸出來分析RPN的作用。cls層在測試時被移除,(因此沒有NMS可用了),我們從沒有得分的一堆regions中隨機採樣N個proposals,在N= 1000時,55.8%,但是當N=100時,44.6%。這表明cls考慮了排名最高的peoposals的準確性。

另一方面,測試時移除reg層時,(proposals變成了anchor boxes),52.1%,這表明高質量的proposal主要是由於迴歸的邊界框,anchors boxes雖然有多個尺度長寬比,但是不足以進行準確的檢測。

我們還評估backbone對RPN的影響,使用VGG16來訓練,但是仍使用SS+ZF檢測器。mAP(RPN+ZF)從56.8%升至(RPN+VGG)59.2%,由於RPN+ZF與SS具有競爭性,(當一隻用於訓練和測試時都是58.7%),所以我們預期RPN+VGG比SS更好,以下實驗驗證了這個假設

VGG16的性能

表3顯示了VGG16的proposal和檢測結果。使用RPN+VGG,不同享特徵是68.5%,比SS高一點。SS是預先定義的,而RPN是主動訓練的並且更好的從網絡中收益。對於特徵共享的變種,69.9%,效果更好,且proposals的成本幾乎爲0。我們在VOC2007和2012的訓練評估trainval上結果是73.2%,圖5展示了VOC2007測試集的結果。在表4的VOC2012測試集中,VOC2007的trainval+test和VOC2012的trainval聯合訓練上取得70.4%的mAP ,表6,表7是詳細數字

表5中總結了整個檢測系統的運行時間。根據內容,SS花1-2秒,平均1.5秒。VGG-16的Fast R-CNN在2000個SS上需要320ms,如果在全連接層上使用SVD(???)則需要223ms。women de VGG16 在 proposal和檢測上共需要198ms。在共享卷積特徵的情況下,單獨RPN只需要10ms計算附加層,我們的region-wise計算也較低,這要歸功於較少的proposal,一張圖300個。ZF模型時幀率17fps

對超參的敏感度

在表8中,我們調查anchors的設置。3長款3比例時69.9%,每個位置只一個anchor時mAP下降是3%到4%,僅使用3個尺度(僅變長款或比例)mAP會更高些,表明多尺寸是作爲迴歸參考是有效的解決方案。在這裏,僅1個長寬比3個尺寸與3個尺寸3個長寬比效果一樣,表明尺寸和長寬比不是解決檢測準確度的解決維度。但是仍採用這兩個維度來保持系統靈活性。

表9中我們比較了公式1中λ的不同,默認λ=10,使得兩個項目在歸一化之後大致相等的加權。表9展示,lambda大學在1-100範圍內,我們的結果只受到1%的影響,說明結果對寬範圍內的λ不敏感。

分析IOU召回率。使用實際邊界框來計算不同IOU時的召回率。值得注意的是,Recall-to-IoU度量與最終的檢測精度質檢的相關性是鬆散的。使用這個指標來診斷proposal方法比評估proposal方法更合適。

圖4中,我們顯示了,使用300,1000,2000個proposals,與SS和EB進行比較,根據這些方法產生的置信度,採用top-N作爲N個proposals,圖現實proposals從2000減少到300時,RPN方法更"優雅"。這就解釋了爲什麼RPN在使用300個proposals時仍然有較好的mAP了。這個屬性主要歸因於RPN中的cls項,proposals較少時,SS和EB下降比RPN快

one-stage和two-stage對比。OverFeat提出一種在卷積特徵映射的滑動窗口上使用迴歸器和分類器的檢測方法。是一種one-stage,類別判定的檢測流程。而我們是two-stage級聯方法,包括不知類別的proposals提議和特定類別的檢測。在OverFeat中,區域特徵來自一個在尺度金字塔上滑動的固定長寬比的滑動窗口。這些特徵用於同時確定目標的位置和類別。在RPN中,這些特徵來自3*3的滑窗,預測不同尺度長寬比的proposals。雖然兩種方法都是滑窗,region proposal只是Fast R-CNN的第一階段,下游檢測器致力於對proposal進行細化。在級聯的第二階段,區域的特徵被自適應的 pool,我們相信這些功能會帶來更準確的檢測結果。

爲了對比兩種系統的差異,我們通過一階段Fast R-CNN老模擬OverFeat系統,從而避免實現細節的其他差異。proposal有三個尺度,128,256,512,三個長寬比,進行密集的滑窗。訓練Fast R-CNN來預測特定類別的分數,並從滑窗中迴歸box的位置。由於OverFeat採用圖像金字塔,我們也從5個尺度中進行特徵提取。

表10比較了one-stage的兩個變種以及two-stage,使用ZF模型,一階段系統53.9%   二階段系統58.7%, 一階段低了4.8。實驗炎症梨級聯區域和目標檢測有效。一階段更慢,因爲有更多proposal

4.2 MS COCO的實驗

80類,8萬張訓練圖片,4萬張驗證圖片,2萬張測試,我們評估了IOU從[0.5  : 0.05  : 0.95]的mAP,簡稱[.5 , .95]

8個GPU訓練,RPN每個GPU一個,Fast R-CNN每個GPU2個,有效mini-batch=8, 24萬次迭代訓練learning rate=0.003,8萬次learning rate=0.0003.三個長寬比,四個尺度(64^2),爲了數據集中的小目標而添加的64^2.除此之外,Fast R-CNN步驟中,負樣本定義爲與Ground truth 的IOU在(0,0.5)質檢,而不是[0.1,0.5)之間。Fast R-CNN中[0,0.5)中的負樣本與SPPnet中[0.1,0.5)不同,0-0.5部分在SVM中會被訪問,但是Fast中不用SVM 了,因此改進了[email protected]

表11是在VGG16的COC上的結果

ILSVRC和COCO2015比賽中的Faster R-CNN 我們已經證明,RPN通過神經網絡完全學習了區域推薦,且特徵提取的越好效果越好。深度增加到100層也有效,使用ResNet-101代替VGG16,COCO驗證集效果41.5提升至48.4,ILSVRC2015第一名,超過第二8.5%,, RPN也是分割任務獲勝的基石。

4.3 從MS COCO 到PASCALVOC

大規模數據對改善性能至關重要。COCO數據集幫助VOC上的檢測結果的提升。COCO訓完,在VOC上評估(由於coco80類包含voc20類),voc2007上mAP76.1, 即使沒有VOC 數據,效果也比VOC07+12訓練的73.2好。我們在VOC上fine-tune,coco替代了ImageNet預訓練模型,voc2007可達78.8% 額外增加了5.6% ,表6顯示,VOC2007上,COCO+VOC訓練,效果最好,每張圖仍然200ms

5 結論

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

 

 

 

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