人臉檢測中的bounding box regression詳解

0. 引言

在人臉檢測算法如R-CNN、Fast RCNN中都用到了bounding box迴歸,迴歸的目標是使得預測的物體窗口向groundtruth窗口相接近。我一開始沒理解如何能迴歸出一個框來,看完下文就理解了^^


下文轉載自:Faster RCNN解析


1. 爲什麼要做Bounding-box regression?

圖10  示例

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


2. 迴歸/微調的對象是什麼?



3. Bounding-box regression(邊框迴歸)

那麼經過何種變換才能從圖11中的窗口P變爲窗口呢?比較簡單的思路就是:





注意:只有當ProposalGround Truth比較接近時(線性問題),我們才能將其作爲訓練樣本訓練我們的線性迴歸模型,否則會導致訓練的迴歸模型不work(當ProposalGT離得較遠,就是複雜的非線性問題了,此時用線性迴歸建模顯然不合理)。這個也是G-CNN: an Iterative Grid Based Object Detector多次迭代實現目標準確定位的關鍵。


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

輸入:

這個是什麼?輸入就是這四個數值嗎?其實真正的輸入是這個窗口對應的CNN特徵,也就是R-CNN中的Pool5feature(特徵向量)。(注:訓練階段輸入還包括 Ground Truth,也就是下邊提到的)

輸出:

需要進行的平移變換和尺度縮放,或者說是。我們的最終輸出不應該是Ground Truth嗎?是的,但是有了這四個變換我們就可以直接得到Ground Truth,這裏還有個問題,根據上面4個公式我們可以知道,P經過,得到的並不是真實值G,而是預測值

的確,這四個值應該是經過 Ground Truth 和Proposal計算得到的真正需要的平移量和尺度縮放

這也就是R-CNN中的:


那麼目標函數可以表示爲是輸入Proposal的特徵向量,是要學習的參數(*表示,也就是每一個變換對應一個目標函數),是得到的預測值。我們要讓預測值跟真實值差距最小,得到損失函數爲:

函數優化目標爲:

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

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