1. 程式人生 > >人臉檢測中的bounding box regression詳解

人臉檢測中的bounding box regression詳解

0. 引言

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

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的特徵向量,是要學習的引數(*表示,也就是每一個變換對應一個目標函式),是得到的預測值。我們要讓預測值跟真實值差距最小,得到損失函式為:

函式優化目標為:

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