Bounding-Box regression
最近一直看檢測有關的Paper, 從rcnn, fast rcnn, faster rcnn, yolo, r-fcn, ssd,到今年cvpr最新的yolo9000。這些paper中損失函數都包含了邊框迴歸,除了rcnn詳細介紹了,其他的paper都是一筆帶過,或者直接引用rcnn就把損失函數寫出來了。前三條網上解釋比較多,後面的兩條我看了很多paper,才得出這些結論。 為什麼要邊框迴歸。 什麼是邊框迴歸。 邊框迴歸怎麼做的。 邊框迴歸為什麼寬高,座標會設計這種形式。 為什麼邊框迴歸只能微調,在離Ground Truth近的時候才會生效。 為什麼要邊框迴歸。
這裡引用王斌師兄的理解,如下圖所示:
對於上圖,綠色的框表示Ground Truth, 紅色的框為Selective Search提取的Region Proposal。那麼即便紅色的框被分類器識別為飛機,但是由於紅色的框定位不準(IoU<0.5), 那麼這張圖相當於沒有正確的檢測出飛機。 如果我們能對紅色的框進行微調, 使得經過微調後的視窗跟Ground Truth 更接近, 這樣豈不是定位會更準確。 確實,Bounding-box regression 就是用來微調這個視窗的。 邊框迴歸是什麼。
繼續借用師兄的理解:對於視窗一般使用四維向量 (x,y,w,h) ( x, y, w, h) 來表示, 分別表示視窗的中心點座標和寬高。 對於圖 2, 紅色的框 P 代表原始的Proposal, 綠色的框 G 代表目標的 Ground Truth, 我們的目標是尋找一種關係使得輸入原始的視窗 P 經過映射得到一個跟真實視窗 G 更接近的迴歸視窗 G^ \hat G。
邊框迴歸的目的既是:給定 (Px,Py,Pw,Ph) (P_x, P_y, P_w, P_h)尋找一種映射 f f, 使得 f(Px,Py,Pw,Ph)=(Gx^,Gy^,Gw^,Gh^) f(P_x, P_y, P_w, P_h) = (\hat{G_x}, \hat{G_y}, \hat{G_w}, \hat{G_h}) 並且 (Gx^,Gy^,Gw^,Gh^)≈(Gx,Gy,Gw,Gh) (\hat{G_x}, \hat{G_y}, \hat{G_w}, \hat{G_h}) \approx (G_x, G_y, G_w, G_h) 邊框迴歸怎麼做的。
那麼經過何種變換才能從圖 2 中的視窗 P 變為視窗