1. 程式人生 > >Faster RCNN 的細節補充

Faster RCNN 的細節補充

一、faster rcnn的結構

 

 

 通過上面的結構,我們知道該faster rcnn前面以VGG16為框架,加入RPN層,最後做分類層。

 

二、RPN接面構

RPN層的引入,極大提升檢測框的生成速度。RPN是指以下結構:

前面的卷積結果過來後,分兩路來前進,上面是分類路徑(2×9),下面是座標迴歸路徑(4×9)。RPN屬於FCN網路。

 

三、anchors

每個畫素點為中心產生9個anchor,每個anchor對應一個分類分數和迴歸分數。256是圖片經過前面的卷積後得到的特徵的維度,這裡是ZF得到的256維度特徵,VGG是512。對該特徵

進行reshape成2×9和4×9。

圖片的左上角產生9個anchors後,以滑窗的形式遍歷整個圖,對於1000×600的圖片來說就產生20000個anchors,忽略跨界anchor大概剩下6000個anchors。注意這裡訓練時忽略跨界anchors,但測試時不忽略,而採取剪下到邊界的方法。

 

四、bounding box regression原理

綠色是gt box,紅色是anchor,由圖可知anchor的預測不好,沒有包含飛機翼。那麼我們現在就對該紅框使用迴歸技術使其儘量擬合綠框。注意這裡只有當紅色靠近綠框才使用迴歸,太遠的誤差大,屬非線性迴歸。

給動(Px,Py,Pw,Ph)尋找一種對映使f(Px,Py,Pw,Ph)=(Gxˆ,Gyˆ,Ghˆ,Gwˆ)≈(Gx,Gy,Gh,Gw)

(Gx^,Gy^,Gw^,Gh^)≈(Gx,Gy,Gw,Gh)">

先做平移

再做尺度縮放

迴歸就是學習dx(p),dy(P),dw(P),dh(P)四個變換。

輸入是P=(Px,Py,Pw,Ph)和gt的t=(tx,ty,tw,th)

而gt與proposal的真正平移量和尺度縮放量是

那麼目標函式是d(P)=wΦ(P), Φ(P)是輸入proposal的特徵向量,w是要學習的引數,d(P)是預測值,我們要使預測值d(P)和真實偏差值t的差距最小,使用平方差函式有

函式優化就是針對該目標函式進行最小化

 

使用梯度下降求解w。

 

那麼補充下:

1、為什麼寬高尺度會設計成這種形式:tx,ty除以寬高,th,tw含log?

因為CNN具有尺度不變性,

 

圖片經上面變化後,t的值不變。如果直接學習座標差,則就前後發生了改變,即x1-p1不等於x2-p2。

而尺度變化中尺度必須大於0,自然想到exp函式,反過來就是log函式的來源了。

 

2、為什麼anchor靠近gt時,即IOU較大時,才認為是線性變換?

tx和ty顯然是線性組合。而tw和th中含有log,我們回憶下

高數裡面:

因此:

我們看這公式,當且僅當Gw-Pw=0時,才會是線性函式,即gt的寬高和anchor的寬高必須近似相等。