邊框回歸(Bounding Box Regression)

介紹

原文地址: https://blog.csdn.net/zijin0802034/article/details/77685438/

因為做目標檢測和人臉識別時,當前比較流行的是anchor-based方案,會涉及到邊框回歸的問題,在此記錄為了從原理入手,加深自己的理解。首先提出如下幾個問題:

1. 為什么要做邊框回歸?

2. 什么是邊框回歸?

3. 邊框回歸怎么做?

4. 邊框回歸的寬高為什么要設(shè)計成這個樣子?

5. 為什么邊框回歸只能微調(diào),在離ground truth近的時候才能生效?

1. 為什么要做邊框回歸?


Fig 1

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

2. 什么是邊框回歸?

對于窗口一般使用四維向量(x,y,w,h)來表示, 分別表示窗口的中心點坐標和寬高。 對于圖 2, 紅色的框 P 代表原始的Proposal, 綠色的框 G 代表目標的 Ground Truth, 我們的目標是尋找一種關(guān)系使得輸入原始的窗口 P 經(jīng)過映射得到一個跟真實窗口 G 更接近的回歸窗口\hat{G} 。


Fig 2

邊框回歸的目的既是:給定(P_{x}, P_{y},P_{w},P_{h} )尋找一種映射f, 使得f(P_{x}, P_{y},P_{w},P_{h} )=(\hat{G} _{x}, \hat{G} _{y},\hat{G} _{w},\hat{G} _{h} )并且(\hat{G} _{x}, \hat{G} _{y},\hat{G} _{w},\hat{G} _{h} )\approx (G_{x},G_{y},G_{w},G_{h})

3. 邊框回歸怎么做?

那么,經(jīng)過何種變換才能從Fig 2中的窗口P變成窗口\hat{G} 呢?比較簡單的思路是:平移 + 尺度縮放

3.1 先做平移 (\Delta x, \Delta y),其中\Delta x=P_{w} d_{x} (P), \Delta y=P_{h} d_{y} (P),這是論文中的:

??????????????????????????????????????????????????????????????????????????  \hat{G}_{x} =P_{w}d_{x}(P)  +P_{x} ,(1)

??????????????????????????????????????????????????????????????????????????  \hat{G}_{y} =P_{h}d_{y}(P)  +P_{y} , (2)

3.2 再做尺度縮放(S_{w},S_{h}),其中S_{w} =exp(d_{w} (P)),S_{h} =exp(d_{h} (P)),對應(yīng)論文中的:

?????????????????????????????????????????????????????????????????????????? \hat{G} _{w} =P_{w} exp(d_{w} (P)), (3)

?????????????????????????????????????????????????????????????????????????? \hat{G} _{h} =P_{h} exp(d_{h} (P)), (4)


觀察(1)-(4)我們發(fā)現(xiàn), 邊框回歸學(xué)習(xí)就是d_{x} (P)d_{y} (P),d_{w} (P),d_{h} (P)這四個變換。下一步就是設(shè)計算法那得到這四個映射。線性回歸就是給定輸入的特征向量 X, 學(xué)習(xí)一組參數(shù) W, 使得經(jīng)過線性回歸后的值跟真實值 Y(Ground Truth)非常接近. 即Y\approx WX。 那么 Bounding-box 中我們的輸入以及輸出分別是什么呢?

Input

Region Proposal → P=(P_{x}, P_{y},P_{w},P_{h} ),這是什么?輸入就是這四個數(shù)值嗎?其實真正的輸入時這個窗口對應(yīng)的CNN特征,也就是R-CNN中Pool5 feature(特征向量)。(注:訓(xùn)練階段輸入還包括Ground Truth,也就是下邊提到的t^* =(t_{x},t_{y},t_{w},t_{h})

Output

需要進行的平移變換和尺度縮放d_{x} (P),d_{y} (P),d_{w} (P),d_{h} (P) 或者說是 \Delta x, \Delta y ,S_{w},S_{h}。 我們的最終輸出不應(yīng)該是 Ground Truth 嗎? 是的, 但是有了這四個變換我們就可以直接得到 Ground Truth, 這里還有個問題, 根據(jù)(1)~(4)我們可以知道, P 經(jīng)過d_{x} (P),d_{y} (P),d_{w} (P),d_{h} (P)得到的并不是真實值 G, 而是預(yù)測值\hat{G} 。 的確, 這四個值應(yīng)該是經(jīng)過 Ground Truth 和 Proposal 計算得到的真正需要的平移量(t_{x},t_{y})和尺度縮放(t_{w},t_{h})。這也就是 R-CNN 中的(6)~(9):

??????????????????????????????????????????????????????????????????????????? t_{x} =\frac{(G_{x} - P_{x})}{P_{w} } , (5)

?????????????????????????????????????????????????????????????????????????? t_{y} =\frac{(G_{y} - P_{y})}{P_{h} } , (6)

??????????????????????????????????????????????????????????????????????? ?? t_{w} =\lg (\frac{G_{w} } {P_{w} } ) , (7)

??????????????????????????????????????????????????????????????????????????? t_{h} =\lg (\frac{G_{h} } {P_{h} } ) , (8)

那么目標函數(shù)可以表示為d_{*}(P)=\omega ^T\phi _{5}  (T),\phi _{5} (P)是輸入Proposal的特征向量,\omega _{*} 是要學(xué)習(xí)的參數(shù)(*表示x,y,w,h,也就是每一個變換對應(yīng)一個目標函數(shù)),d_{*}(P)是得到的一個預(yù)測值,我要讓預(yù)測值與真實值t_{*} =(t_{x},t_{y},t_{w},t_{h})差距最小,得到的損失函數(shù)為:

?????????????????????????????????????????????????????????????????????????? Loss=\sum_{i}^N(t_{*}^i- \hat{w} _{*}^T\phi _{5}(P^i ) ) ^2

函數(shù)優(yōu)化目標為:

???????????????????????????????????????????????????????????????????????? Loss=argmin_{\omega _{*} } \sum_{i}^N(t_{*}^i- \hat{w} _{*}^T\phi _{5}(P^i ) ) ^2 +\lambda ||\hat{w} _{*} ||^2

利用梯度下降法或者最小二乘法就可以得到w_{*}

為什么寬高尺度設(shè)計成這種形式?

這里重點需要解釋下為什么設(shè)計的t_{x} ,t_{y} 為什么要除以寬高,為什么t_{w} ,t_{h} 會有log形式??!

首先CNN具有尺度不變性,以下圖為例:


Fig 3


x,y 坐標除以寬高

上圖的兩個人具有不同的尺度,因為他都是人,我們得到的特征相同。假設(shè)我們得到的特征為?1,?2,那么一個完好的特征應(yīng)該具備?1=?。ok,如果我們直接學(xué)習(xí)坐標差值,以x坐標為例,xi,pi分別代表第i個框的x坐標,學(xué)習(xí)到的映射為f,f(?1)=x1?p1,同理f(?2)=x2?p2。從上圖顯而易見,x1?p1≠x2?p1。也就是說同一個x對應(yīng)多個y,這明顯不滿足函數(shù)的定義。邊框回歸學(xué)習(xí)的是回歸函數(shù),然而你的目標卻不滿足函數(shù)定義,當然學(xué)習(xí)不到什么。

寬高坐標Log形式

我們想要得到一個放縮的尺度,也就是說這里限制尺度必須大于0。我們學(xué)習(xí)的tw,th 怎么保證滿足大于0呢?直觀的想法就是EXP函數(shù),如公式(3), (4)所示,那么反過來推導(dǎo)就是Log函數(shù)的來源了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容