Bounding Box回歸


簡介

Bounding Box非常重要,在rcnn, fast rcnn, faster rcnn, yolo, r-fcn, ssd,到今年cvpr最新的yolo9000都會用到。
先看圖

對於上圖,綠色的框表示Ground Truth, 紅色的框為Selective Search提取的Region Proposal。那么即便紅色的框被分類器識別為飛機,但是由於紅色的框定位不准(IoU<0.5),那么這張圖相當於沒有正確的檢測出飛機。 如果我們能對紅色的框進行微調, 使得經過微調后的窗口跟Ground Truth 更接近, 這樣豈不是定位會更准確。 確實,Bounding-box regression 就是用來微調(注意這個字眼--微調)這個窗口的。

1、邊框回歸是什么?

對於窗口一般使用四維向量(x, y, w, h)來表示, 分別表示窗口的中心點坐標和寬高(注意這里是中心點,其實都一樣)。對於圖 2, 紅色的框 P 代表原始的Proposal, 綠色的框 G 代表目標的 Ground Truth, 我們的目標是尋找一種關系使得輸入原始的窗口 P 經過映射得到一個跟真實窗口 G 更接近的回歸窗口G。

邊框回歸的目的既是:給定(Px, Py, Pw, Ph)尋找一種映射f,使得f(Px,Py,Pw,Ph) = (Gx,Gy,Gw,Gh)並且(Gx,Gy,Gw,Gh)約等於f。

做邊框回歸

那么經過何種變換才能從圖 2 中的窗口 P 變為窗口G呢?比較簡單的思路就是:平移加尺度放縮。
第一步:先做平移

其中
第二步:再做尺度縮放

其中

邊框回歸學習的不是最終的G估計值,而是
下一步就是設計算法得四個映射

線性回歸就是給定輸入的特征向量 X, 學習一組參數 W, 使得經過線性回歸后的值跟真實值 Y(Ground Truth)非常接近. 即Y≈WX 。 那么 Bounding-box 中我們的輸入以及輸出分別是什么呢?

輸入:
其實真正的輸入是這個窗口對應的 CNN 特征,也就是 R-CNN 中的 Pool5 feature(特征向量)。(注:訓練階段輸入還包括 Ground Truth, 也就是下邊提到的t∗=(tx,ty,tw,th))

輸出:
這四個值應該是經過 Ground Truth 和 Proposal 計算得到的真正需要的平移量(tx,ty) 和尺度縮放(tw,th) 。
這也就是 R-CNN 中的(6)~(9):

目標函數為是輸入Proposal的特征向量,W*是要學習的參數,d(p)是預測值, 我們要讓預測值跟真實值t∗=(tx,ty,tw,th)差距最小, 得到損失函數為:
所以結果就很明顯了,t*是label而w是權值,fai是輸入,它們來做一個回歸,利用梯度下降法或者最小二乘法就可以得到 w∗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM