Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(2015)閱讀筆記

原文鏈接

一、解決問題

2016年前最前沿水平的物體檢測網絡是基於候選算法來預測物體位置的。像SPPnet和Fast R-CNN這些先進的算法減少了檢測網絡的運行時間,但是RP(Region Proposal)的計算卻仍然是瓶頸所在。

二、解決方法

候選區域網絡(RPN,region proposal network):該網絡與檢測網絡共享全圖像的卷積特徵,從而使近乎零成本的區域提出成爲可能。

(一)整體結構

Faster RCNN大體由兩部分構成,一是RPN結構,另一個是Fast RCNN結構。整體思路是使用RPN結構代替Fast RCNN的SS算法部分來提取RP。如下圖所示。
在這裏插入圖片描述
結構細節圖如下。
在這裏插入圖片描述
測試時的過程:原始圖像輸入至卷積結構(紅框1)進行特徵提取,得到整張圖像的特徵圖。將此特徵圖送入RPN(紅框2),經過一個3x3的卷積後分兩條路線進行迴歸(對位置進行初步的糾正)和分類(找到想要的前景,作爲感興趣域,注意,RPN中分類至區分前景和背景,不對前景進行細緻分類),進而得到RPs位置信息。根據這些位置信息在之前得到的特徵圖上提取對於的ROIs,再分別經過ROI池化層抽取到固定大小的特徵。分送入後面的全連接層進行分類(對ROI進行識別)和迴歸(精準糾正位置信息)。

(二)RPN

RPN也可看做兩部分,一是與Fast RCNN公用的卷積部分(紅框1),二是用來實現尋找RP功能的獨有部分(紅框2)。工作的詳細流程如下:
1.卷積部分對輸入圖像進行特徵圖的提取。
2.對1步驟中得到的特徵圖進行3x3的卷積操作,相當於每個點又融合了周圍3x3的空間信息,擴大了感受野。得到新的特徵圖。
3.對2步驟得到的特徵圖按照錨點提取滑動窗。每個特徵圖上的點提取三個尺度不同長寬比共k個滑動窗(默認k=9,對應9個錨點,位置一樣,但形狀和大小不一樣)。
4.對k個滑動窗分兩路進行操作。
第一路爲分類:將滑動窗進行1x1卷積再經過一個二分類的softmax得到是前景或者背景的對應概率,也就是說對於每個滑動窗分別得到前景和背景的2個概率得分。
第二路爲迴歸:將滑動窗進行1x1卷積直接進行位置移動的迴歸,每個滑動窗分別得到窗口中心座標和窗口的寬度、高度(x,y,w,h)4個參數的迴歸結果。
此處RPN的迴歸同Fast R-CNN中的bounding-box迴歸相比數有區別的。 Fast R-CNN中基於RoI的bounding-box迴歸的輸入是任意size的RoIs進行Pool操作提取後的(size相同且固定)。而在RPN中,用來bounding-box迴歸的輸入是擁有k個size的錨點,爲了解決不同尺度變化的問題,同時訓練和學習了k個不同的迴歸器,這k個迴歸器並不分享權重。
5.做NMS(非極大值抑制,即根據分類的得分對這些ROI進行排序,然後選擇其中的前N個ROI);
RPS輸出的維度爲:2N+4N = 6N

(三)錨點

錨點是在紅框2中經過3x3卷積後特徵圖上的每個點的位置對應的不同尺度和縱橫比下的匹配。下圖中的256-d表示特徵圖的通道數爲256。對每個滑動位置使用3個尺度和3個縱橫比產生k = 9個錨點。對於大小爲W x H(通常爲~2,400)的卷積特徵圖,總共有W x H x k個錨點。
在這裏插入圖片描述

(四)訓練

1.四步交替訓練的方式

第一步:訓練RPN。該網絡使用ImageNet預先訓練的模型對CNN部分進行初始化,並針對區域提出的任務進行微調端對端。
第二步:我們使用由步驟1 RPN生成的RP作爲Fast R-CNN的數據,並對其單獨訓練。該檢測網絡也由ImageNet預訓練模型初始化。此時,兩個網絡不共享卷積層。
第三步,我們使用Fast R-CNN網絡來初始化RPN,並進行訓練,但固定了共享卷積層,只調整了RPN特有的層。現在這兩個網絡共享卷積層。
第四步:保持共享卷積層固定,我們微調Fast R-CNN的獨特層。因此,兩個網絡共享相同的卷積層並形成統一的網絡。
可以運行類似的交替訓練以進行更多迭代,但實驗顯示改進幅度很小。

2.損失函數

(1).RPN損失函數

整體損失函數

L(pi,ti)=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)L({pi},{ti})=\frac{1}{N_{cls}}∑_{i}L_{cls}(p_{i},p^{*}_{i})+λ\frac{1}{N_{reg}}∑_{i}p^{*}_{i}Lreg(ti,t^{*}i)其中,ii是一個小批量數據中錨點的索引,pip_{i}是錨點ii作爲目標的預測概率。如果錨點標籤爲正,真實標籤pip^{*}_{i}爲1,如果標籤爲負,則爲0。tit_{i}是表示預測邊界框4個參數化座標的向量,而tit_{i}^{*}是與正錨點相關的真實邊界框的向量。NclsN_{cls}爲一個mini-batch中經過紅框2中3xe卷積後特徵圖格子的數量。NregN_{reg}爲一個mini-batch中錨點的數量。λλ默認爲10,所以1Ncls:=λ1Nreg\frac{1}{N_{cls}} := λ\frac{1}{N_{reg}}

分類損失函數

LclsL_{cls}是兩個類別上(目標或不是目標)的對數損失。

迴歸損失函數

Lreg(ti,ti)=SmoothL1(titi)L_{reg}(t_{i},t^{*}_{i})=Smooth_{L1}(t_{i}−t^{*}_{i})smoothL1(x)={(x)=0.5x2,x<1x0.5,otherwisessmooth_{L1}(x)= \begin{cases} \mathcal(x)=0.5x^{2}, &\text{$|x|<1$}\\ \mathcal|x|−0.5, &\text{$otherwises $} \end{cases}piLregp^{*}_{i}L_{reg}表示迴歸損失僅對於正錨點激活。cls和reg層的輸出分別由pip_{i}tit_{i}組成。

(2)Fast RCNN損失函數

總體損失函數

L(p,u,tu,v)=Lcls(p,u)+λ[u1]Lloc(tu,v)L(p,u,t_{u} ,v) = L_{cls}(p,u) + λ[u ≥ 1]L_{loc}(t u ,v)當u=0時(背景)λ=0,即識別爲背景的情況下,位置迴歸不參與損失函數計算。當u=1,2,3,…,k(第1,2,3,…,k類)時,λ=1。

分類損失函數

交叉熵損失函數。因爲標籤是one-hot形式,所以只由真實類別u對應的softmax結果概率覺得。Lcls(p,u)=logpu L_{cls}(p,u)=-logp_{u}

位置迴歸損失函數

smooth L1損失函數,比較真實分類u對應的預測平移縮放參數tu=(tux,tuy,tuw,tuh)t_{u}=(t_{ux},t_{uy},t_{uw},t_{uh}) 和真實平移縮放參數v=(vx,vy,vw,vh)v=(v_{x},v_{y},v_{w},v_{h}) 的差距:
Lloc(tu,v)=ix,y,w,hsmoothL1(tuivi) L_{loc}(t_{u},v)=∑_{i∈{x,y,w,h}}smooth_{L1}(t_{ui}−v_{i}) smoothL1(x)={(x)=0.5x2,x<1x0.5,otherwisessmooth_{L1}(x)= \begin{cases} \mathcal(x)=0.5x^{2}, &\text{$|x|<1$}\\ \mathcal|x|−0.5, &\text{$otherwises $} \end{cases}

三、效果

更快更準,真正意義上實現了端到端的訓練。

參考

Faster R-CNN論文翻譯——中英文對照
Faster R-CNN論文詳解

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