轉自http://caffecn.cn/?/question/160,作者沁心風雨。
相比傳統的圖像分類,**目標檢測不僅要實現目標的分類,而且還要解決目標的定位問題,即獲取目標在原始圖像中的位置信息**。在不管是最初版本的RCNN,還之后的改進版本——Fast RCNN和Faster RCNN都需要利用邊界框回歸來預測(矯正)物體的目標檢測框,以提高最終的檢測精度。因此掌握邊界框回歸(Bounding-Box Regression)是極其重要的,這是熟練使用RCNN系列模型的關鍵一步,也是代碼實現中比較重要的一個模塊。接下來,我們對邊界框回歸(Bounding-Box Regression)進行詳細介紹。
1.問題理解(為什么要做Bounding-box regression?)
(圖1)
如圖1所示,綠色的框為飛機的Ground Truth,紅色的框是Selective Search提取的Region Proposal。那么即便紅色的框被分類器識別為飛機,但是由於紅色的框定位不准(IoU<0.5),那么這張圖相當於沒有正確的檢測出飛機。如果我們能對紅色的框進行微調,使得經過微調后的窗口跟Ground Truth 更接近,這樣豈不是定位會很准確。確實,Bounding-box regression就是用來微調這個窗口的。
2.問題數學表達(回歸/微調的對象是什么?)
(圖2)
對於窗口,一般使用四維向量(x,y,w,h)來表示,分別表示窗口的中心點坐標和寬高。對於圖2,紅色的框P代表原始的Proposal候選目標框,藍色的框$ \color{Blue}{\widehat{G}} $代表邊界框回歸算法預測的目標框,綠色的框G代表目標的Ground Truth真實目標框,紅色圓圈代表選候選目標框的中心點,綠色圓圈代表選真實目標框的中心點,藍色圓圈代表選邊界框回歸算法預測目標框的中心點。我們的目標是尋找一種關系使得輸入原始的窗口P經過映射得到一個跟真實窗口G更接近的回歸窗口$ \color{Blue}{\widehat{G}} $。
首先我們對邊界框回歸的輸入數據集進行說明。輸入到邊界框回歸的數據集為 ,其中
,
。
代表第
個帶預測的候選目標檢測框即region proposal。
是第
個真實目標檢測框即ground-truth。在RCNN和Fast RCNN中,
是利用選擇性搜索算法進行獲取;Faster RCNN中,
是利用RPN(Region Proposal Network,區域生成網絡)獲取。在
中,
代表候選目標框的中心點在原始圖像中的
坐標,
代表候選目標框的中心點在原始圖像中的
坐標,
代表候選目標框的長度,
代表候選目標框的寬度.
的四維特征的含義與
是一樣的。
那么邊界框回歸所要做的就是利用某種映射關系,使得候選目標框(region proposal)的映射目標框無限接近於真實目標框(ground-truth)。將上述原理利用數學符號表示如下:在給定一組候選目標框 ,尋找到一個映射
,使得
。
3.問題解決方案(Bounding-box regression)
那么經過何種變換才能從圖2的窗口P變為窗口$ \color{Blue}{\widehat{G}} $呢?
比較簡單的思路就是:
(1) 先做平移 ,
。
這實際就是R-CNN論文中的:
(2) 然后再做尺度縮放,
,
對應論文中:
觀察公式(1)-(4)我們發現,我們需要學習的是這四個變換。
下一步就是設計算法得到這四個映射。當輸入的Proposal與Ground Truth相差較小時(R-CNN設置的是IoU>0.6),可以認為這種變換是一種線性變換,那么我們就可以用線性回歸來建模對窗口進行微調。
注意:只有當Proposal和Ground Truth比較接近時(線性問題),我們才能將其作為訓練樣本訓練我們的線性回歸模型,否則會導致訓練的回歸模型不work(當Proposal跟GT離得較遠,就是復雜的非線性問題了,此時用線性回歸建模顯然不合理)。這個也是G-CNN:an Iterative Grid Based Object Detector多次迭代實現目標准確定位的關鍵。
線性回歸就是給定輸入的特征向量X,學習一組參數W,使得經過線性回歸后的值跟真實值Y(Ground Truth)非常接近,即。那么Bounding-box中我們的輸入以及輸出分別是什么呢?
輸入:Region Proposal -> ,這個是什么呢?輸入就是這四個數值嗎?其實真正的輸入是這個窗口對應的CNN特征,也就是R-CNN中的$ Pool_5 feature$。(注:訓練階段輸入還包括Ground Truth,也就是下面提到的
)。
輸出:需要進行的平移變換和尺度縮放,或者說是
。我們的最終輸出不應該是Ground Truth嗎?但是有了這四個變換,我們就可以直接得到Ground Truth,這里還有個問題,根據(1)~(4)我們可以知道,P經過
得到的並不是真實值G,而是預測值$ \color{Blue}{\widehat{G}} $。的確,這四個值應該是經過Ground Truth和Proposal計算得到的真正需要的平移量
和尺度縮放
。
這也就是R-CNN中的(6)~(9):
我們用 對
進行監督。
那么目標函數可以表示為,
是輸入Proposal的特征向量,
是要學習的參數(*表示x,y,w,h,也就是每一個變換對應一個目標函數),
是得到的預測值。我們要讓預測值跟真實值
差距最小,得到損失函數為:
函數優化目標為:
利用梯度下降法或者最小二乘法就可以得到 。
4.測試階段
根據3我們學習得到回歸參數,對於測試圖像,我們首先經過CNN提取特征
,測試的變化就是
,最后根據公式(1)~(4)對窗口進行回歸。
三、相關問題
3.1 為什么使用相對坐標差?
在式(6)~(7)中 ,那么為什么要將真實框的中心坐標與候選框的中心坐標的差值分別除以寬高呢?首先我們假設兩張尺寸不同,但內容相同的圖像,圖像如下圖所示。
那么我們假設經過CNN提取得到的特征分別為 和
。同時,我們假設
為第
個真實目標框的
坐標,
為第
個候選目標框的
坐標,邊界框回歸的映射關系為
。那么我們可以得出:
由於CNN具有尺度不變性,因此 。那么理論上
。但是觀察上圖就可明顯得出
,顯然由於尺寸的變化,候選目標框和真實目標框坐標之間的偏移量也隨着尺寸而成比例縮放,即這個比例值是恆定不變的。
因此,我們必須對 坐標的偏移量除以候選目標框的寬,
坐標的偏移量除以候選目標框的高。只有這樣才能得到候選目標框與真實目標框之間坐標偏移量值的相對值。同時使用相對偏移量的好處可以自由選擇輸入圖像的尺寸,使得模型靈活多變。也就說,對坐標偏移量除以寬高就是在做尺度歸一化,即尺寸較大的目標框的坐標偏移量較大,尺寸較小的目標框的坐標偏移量較小。
3.2 為什么寬高比要取對數?
同時在式(8)~(9)中 ,類比問題3.1,我們不禁要問為什么不直接使用寬高的比值作為目標進行學習,非得“多此一舉”取對數?我們想要得到一個放縮的尺度,也就是說這里限制尺度必須大於0。我們學習的$ t_w, t_h $ 怎么保證滿足大於0呢?直觀的想法就是EXP函數,如公式(3), (4)所示,那么反過來推導就是Log函數的來源了。結合式(3)~(4)可以看出:$ t_w $監督$ d_w(P) $,$ t_h $監督$ d_h(P) $。
3.3 為什么IoU較大時邊界框回歸可視為線性變換?
當輸入的 Proposal 與 Ground Truth 相差較小時(RCNN 設置的是 IoU>0.6), 可以認為這種變換是一種線性變換, 那么我們就可以用線性回歸來建模對窗口進行微調, 否則會導致訓練的回歸模型不 work(當 Proposal跟 GT 離得較遠,就是復雜的非線性問題了,此時用線性回歸建模顯然不合理)。Log函數明顯不滿足線性函數,但是為什么當Proposal 和Ground Truth相差較小的時候,就可以認為是一種線性變換呢?
在這里我們需要回顧下在高等數學中有關等價無窮小的結論:
也就是說當 趨向於0時,我們可有
,即可將
近似看成線型變換。接下來我們將式(4)的后兩個公式進行重寫:
也就是說,當 和
趨向於0時,即
和
時,上式(6)可以近似將對數變換看成線性變換。
和
時候選目標框和真實目標框非常接近,即IoU值較大。按照RCNN論文的說法,IoU大於0.6時,邊界框回歸可視為線型變換。