Bounding box regression原理简单理解:

如上图所示,绿色框为飞机的ground truth(gt),红色框为提取的foreground anchors,也就是说被分类器标记为飞机,但是红色框为位置不准确,不是我们想要的。所以要对红色框进行微调。

窗口形状用四维向量表示,中心点坐标x,y,宽和高w,h,所以任意anchor的坐标表示为(x,y,w,h)。我们最终目标就是寻找一个关系使得输入原始的anchor A经过映射得到与真实窗口G更接近的G':

说明:

这里的A是anchor的坐标,不是图像的输入特征。带有下标x,y,w,h分别表示输入坐标A表示,GT的坐标表示。

F是变换关系 ,经过变换以后得到G',最终目的就是使得G'越来越接近GT

简单思路:

先平移:(dx,dy,dw, dh)表示四个变换参数,目的就是通过线性变换获得着四个参数。

 

 

 

 

再缩放:

解决过程:

既然已经知道了我们的最终目标是得到四个变换参数,也就是得到上述公式中的

线性回归就是输入特征向量X,学习一组参数W,使得经过线性回归之后的值跟真实值Y非常接近,即Y=WX。对于上述问题,我们输入是cnn卷积之后的feature map,定义为∅,同时还有训练传入A与GT之间的变换变量,即(tx,ty,tw,th)是传入anchor和GT之间的真实偏差,输出是

那么目标函数是

(特别说明:anchor与GT位置比较接近的时候,才可近似认为上述线性变换成立)

换句话说,∅(A)表示对应anchor的feature map特征矩阵,经过W变换矩阵,得到预测值dx,dy,dw,dh,让预测值偏差和真实偏差tx,ty,tw,th差距最小。所以根据这个目的设计如下损失函数:

 

 

注:为了方便描述,这里以L1损失为例介绍,而真实情况中一般使用soomth-L1损失如下:

t(anchor与gt之真实偏移)的计算方法

总结:对于bouding box regression网络回归分支,输入卷积之后的feature ∅,监督信号是Anchor与GT之间的差距(tx,ty,tw,th),即训练的目标是:输入∅,回归网络输出每个anchor的平移量和变换尺度(tx,ty,tw,th),显然就可以用来修正Anchor了。

本文章是学习了大佬们的作品,做了简单的笔记分享,如有问题欢迎大家批评指正,鄙人感激不尽