边框回归(Bounding Box Regression)详解以及数学公式详解

  • 为什么要边框回归?
  • 什么是边框回归?
  • 边框回归怎么做?
  • 边框回归宽高,坐标为什么这样设计?
  • 为什么边框回归 只能微调,在离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^。
在这里插入图片描述
边框回归的目的既是:给定(Px,Py,Pw,Ph)寻找一种映射f, 使得f(Px,Py,Pw,Ph)=(G^x, G^y, G^w, G^h) 并且,(G^x, G^y, G^w, G^h) ≈ (Gx,Gy,Gw,Gh)。

边框回归怎么做?

现在要解决的就是要怎么让图二中的窗口P变成窗口G^呢。思路就是平移+尺度缩放。
1.先做平移,平移(Δx,Δy),Δx = Pwdx(P),Δy = Phdy(P),这是R-CNN论文中的,

G^x = Pwdx(P)+ Px , (1)

G^y = Phdy(P)+ Py , (2)
dx(P)是平移的尺寸除以Pw,即一个比例。对照后面的解释即可理解。
然后再做尺度缩放(Sw,Sh), Sw=exp(dw(P.)), Sh=exp(dh(P.)), Sw=exp(dw(P.)), Sh=exp(dh(P.)), 对应论文中:

G^w = Pw * exp(dw(P )) , (3)

G^h = Ph * exp(dh(P.)) , (4)
取exp是因为缩放倍数不能为负数,利用exp将其转换成>=0的数,即使为负,那么经过exp也会变成一个很小的数。
观察(1)-(4)我们发现,边框回归学习就是dx(P.), dy(P.), dw(P.), dh(P.) 这四个变换。下一步就是设计算法那得到这四个映射。
线性回归就是给定输入的特征向量 X, 学习一组参数 W, 使得经过线性回归后的值跟真实值 Y(Ground Truth)非常接近. 即Y≈WX 。 那么 Bounding-box 中我们的输入以及输出分别是什么呢?

Input:
RegionProposal→P=(Px,Py,Pw,Ph),这个是什么? 输入就是这四个数值吗?其实真正的输入是这个窗口对应的 CNN 特征,也就是 R-CNN 中的 Pool5 feature(特征向量)。 (注:训练阶段输入还包括 Ground Truth, 也就是下边提到的t∗=(tx,ty,tw,th)

Output:
需要进行的平移变换和尺度缩放 dx(P.),dy(P.),dw(P.),dh(P.), 或者说是Δx,Δy,Sw,Sh 。 我们的最终输出不应该是 Ground Truth 吗? 是的, 但是有了这四个变换我们就可以直接得到 Ground Truth, 这里还有个问题, 根据(1)~(4)我们可以知道, P 经过 dx(P.),dy(P.),dw(P.),dh(P.)得到的并不是真实值 G, 而是预测值G^。 的确, 这四个值应该是经过 Ground Truth 和 Proposal 计算得到的真正需要的平移量(tx,ty)(tx,ty) 和尺度缩放(tw,th)(tw,th) 。
这也就是 R-CNN 中的(6)~(9):
tx=(Gx−Px)/Pw,(6)

ty=(Gy−Py)/Ph,(7)

tw=log(Gw/Pw),(8)

th=log(Gh/Ph),(9)

那么目标函数可以表示为 d∗(P.)=wT∗Φ5(P.), Φ5(P.)是输入 Proposal 的特征向量,w∗是要学习的参数(*表示 x,y,w,h, 也就是每一个变换对应一个目标函数) , d∗(P.)是得到的预测值。 我们要让预测值跟真实值t∗=(tx,ty,tw,th)差距最小, 得到损失函数为:
在这里插入图片描述
函数优化目标为:
在这里插入图片描述
利用梯度下降法或者最小二乘法就可以得到 w∗。

为什么宽高尺度会设计这种形式?

这边我重点解释一下为什么设计的tx,tytx,ty为什么除以宽高,为什么tw,thtw,th会有log形式!!!

首先CNN具有尺度不变性, 以图3为例:
在这里插入图片描述

x,y 坐标除以宽高

上图的两个人具有不同的尺度,因为他都是人,我们得到的特征相同。假设我们得到的特征为ϕ1,ϕ2,那么一个完好的特征应该具备ϕ1=ϕ。ok,如果我们直接学习坐标差值,以x坐标为例,xi,pi 分别代表第i个框的x坐标,学习到的映射为ff, f(ϕ1)=x1−p1,同理f(ϕ2)=x2−p2。从上图显而易见,x1−p1≠x2−p1。也就是说同一个x对应多个y,这明显不满足函数的定义。边框回归学习的是回归函数,然而你的目标却不满足函数定义,当然学习不到什么。

宽高坐标Log形式

我们想要得到一个放缩的尺度,也就是说这里限制尺度必须大于0。我们学习的tw,thtw,th怎么保证满足大于0呢?直观的想法就是EXP函数,如公式(3), (4)所示,那么反过来推导就是Log函数的来源了。

为什么IoU较大,认为是线性变换?

当输入的 Proposal 与 Ground Truth 相差较小时(RCNN 设置的是 IoU>0.6), 可以认为这种变换是一种线性变换, 那么我们就可以用线性回归来建模对窗口进行微调, 否则会导致训练的回归模型不 work(当 Proposal跟 GT 离得较远,就是复杂的非线性问题了,此时用线性回归建模显然不合理)。这里我来解释:

Log函数明显不满足线性函数,但是为什么当Proposal 和Ground Truth相差较小的时候,就可以认为是一种线性变换呢?大家还记得这个公式不?参看高数1。

在这里插入图片描述
现在回过来看公式(8):

tw=log(Gw/Pw)=log(Gw+Pw−PwPw)=log(1+Gw−PwPw)tw=log⁡(Gw/Pw)=log(Gw+Pw−PwPw)=log(1+Gw−PwPw)
当且仅当Gw−Pw=0的时候,才会是线性函数,也就是宽度和高度必须近似相等。

对于IoU大于指定值这块,我并不认同作者的说法。我个人理解,只保证Region Proposal和Ground Truth的宽高相差不多就能满足回归条件。x,y位置到没有太多限制,这点我们从YOLOv2可以看出,原始的边框回归其实x,y的位置相对来说对很大的。这也是YOLOv2的改进地方。

参考:
边框回归(Bounding Box Regression)详解

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值