边框回归(Bounding Box Regression)个人理解手记

本文仅是个人参考他人大佬观点的个人笔记,很多只为方便个人理解理解,不喜勿喷(新人瑟瑟发抖)。
原文链接:https://blog.****.net/zijin0802034/article/details/77685438

边框回归为处理何种情况

边框回归(Bounding Box Regression)个人理解手记
图中红框为最开始确定的锚框,绿框为Ground Truth,很明显二者相差较大,这就是(IoU<0.5)的情况,就是与Ground Truth交并比最大的锚框的交并比也很小,而边框回归就是为了处理这种情况。

边框回归具体做什么

边框回归(Bounding Box Regression)个人理解手记
P按原文作者说法就是原始的proposal,即最开始确定的锚框(大概?)。G就是Ground Truth了。那么 G^\hat{G} 就是最终要求输出的预测框。
借用原文作者的话:

边框回归的目的既是:给定(Px,Py,Pw,Ph)(Px,Py,Pw,Ph)寻找一种映射ƒ, 使得f(Px,Py,Pw,Ph)=(Gx^,Gy^,Gw^,Gh^)f(Px,Py,Pw,Ph)=(G \hat x,G \hat y,G \hat w,G \hat h) 并且(Gx^,Gy^,Gw^,Gh^)(Gx,Gy,Gw,Gh)(G \hat x,G \hat y,G \hat w,G \hat h)≈(Gx,Gy,Gw,Gh)

边框回归如何实现

基本上就是一个平移和一个收缩
1.平移:
G^x=Pwdx(P)+Px,(1) \hat G_x=P_wd_x(P)+P_x,(1) G^y=Phdy(P)+Py,(2) \hat G_y=P_hd_y(P)+P_y,(2)
2.缩放:
G^w=Pwexp(dw(P)),(3)\hat G_w=P_wexp(d_w(P)),(3)G^h=Phexp(dh(P)),(4) \hat G_h=P_hexp(d_h(P)),(4) 这里的四个参数dx,dy,dh,dw之后的 tx,ty,th,tw样是偏差量,最终输出的预测框G^\hat{G}dx,dy,dh,dw 这四个偏差量与锚框计算而得。
再算出真实框与锚框之间的偏差量:
tx=(GxPx)/Pw,(6)t_x=(G_x−P_x)/Pw,(6)ty=(GyPy)/Ph,(7)t_y=(G_y−P_y)/P_h,(7)tw=log(Gw/Pw),(8)t_w=log(G_w/P_w),(8)th=log(Gh/Ph),(9)t_h=log(G_h/P_h),(9)
那么dx,dy,dh,dw 这四个参数从何而来呢?
现在就确定目标函数 d(P)=wTΦ5(P)d_∗(P)=w^T∗Φ_5(P) ,其中Φ5(P)Φ_5(P)是proposal的特征向量,可知,这个偏差量是根据特征图来确定的,就是根据特征图进一步提供锚框趋近于真实框的精度。

原文重点:为什么高宽尺度要这样设计呢?也就是问为什么偏差量要用那种公式计算呢

首先要清楚尺度不变性,两个框大小不一,但内容即提取特征一致。

x,y为什么要除以高宽?

按原文理解,简而言之就是,两框提取特征一致,那么用最终模型算出来的偏差量也会是一样的(如果不除以高宽),在没有用高宽对输入进行转化的情况下,输出一致,而很明显,原文两张图的偏差量不应一致,明显与高宽有关系。所以除以高宽是必须的。

高宽坐标log形式

这个方面原文解释的很简单且清楚,就不多赘述。