RCNN中的bounding box regression詳解
總結下上面大神所陳述的內容:
1.關於 公式1~4是怎麼來的,從原paper來看,作者是引入了scale-invariant translation 分別對於x和y,即對於xy座標引入同一個scale,加上作者在他的另一篇論文Rich feature hierarchies for accurate object detection
and semantic segmentation 中闡述的“ proposal region不能和ground truth相差太遠”(兩者iou>0.6)如果相差太遠是無法得到boundingbox regression的,所以在公式1~2中相當於將dx和dy regularize 在一定的數值範圍內,即dx = (Gx-Px)/Pw 這裡Gx是近似groundtruth 的 predicted 值。
同理對於dw和dh,作者引入log-space translation, 也是將(Gw,Pw)這對差距規劃入一個小的範圍內,即 dw = log(Gw/Pw)。所以在最終的loss function中就相當於平均分配了xy 和wh的loss比例,不會因為wh的loss過大忽略了xy的loss,反之亦然。
2. 訓練該regression 輸入為((G, P)一組訓練example) + (CNN pool5的feature 即 lossfunction中的 SITA(P), 為了得到 parameter w* 。 其中(G,P) pair用來求出 t* 。lossfunction 第一部分為資料loss 第二部分為正則化。
測試階段 輸入為CNN pool5提取出的feature SITA(P), 通過線性模型 w* 乘以 SITA(P)就得出 dx,dy,dw,dh,這四個值有了就有了新的 bounding box