边框回归(Bounding Box Regression)详解


  • 然后再做尺度缩放(Sw,Sh), Sw=exp(dw(P)),Sh=exp(dh(P)), 对应论文中:
    G^w=Pwexp(dw(P)),(3)
    G^h=Phexp(dh(P)),(4)

    观察(1)-(4)我们发现, 边框回归学习就是dx(P),dy(P),dw(P),dh(P)

    这四个变换。下一步就是设计算法那得到这四个映射。

    线性回归就是给定输入的特征向量 X, 学习一组参数 W, 使得经过线性回归后的值跟真实值 Y(Ground Truth)非常接近. 即YWX

    。 那么 Bounding-box 中我们的输入以及输出分别是什么呢?

    Input:

    RegionProposalP=(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) 和尺度缩放(tw,th)


    这也就是 R-CNN 中的(6)~(9):

    tx=(GxPx)/Pw,(6)

    ty=(GyPy)/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)

    差距最小, 得到损失函数为:

    Loss=iN(tiw^Tϕ5(Pi))2

    函数优化目标为:

    W=argminwiN(tiw^Tϕ5(Pi))2+λ||w^||2

    利用梯度下降法或者最小二乘法就可以得到 w

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

    这边我重点解释一下为什么设计的tx,ty

    为什么除以宽高,为什么tw,th

    会有log形式!!!

    首先CNN具有尺度不变性, 以图3为例:


    边框回归(Bounding Box Regression)详解

    x,y 坐标除以宽高

    上图的两个人具有不同的尺度,因为他都是人,我们得到的特征相同。假设我们得到的特征为ϕ1,ϕ2

    ,那么一个完好的特征应该具备ϕ1=ϕ。ok,如果我们直接学习坐标差值,以x坐标为例,xi,pi 分别代表第i个框的x坐标,学习到的映射为f, f(ϕ1)=x1p1,同理f(ϕ2)=x2p2。从上图显而易见,x1p1x2p1

    。也就是说同一个x对应多个y,这明显不满足函数的定义。边框回归学习的是回归函数,然而你的目标却不满足函数定义,当然学习不到什么。

    宽高坐标Log形式

    我们想要得到一个放缩的尺度,也就是说这里限制尺度必须大于0。我们学习的tw,th

    怎么保证满足大于0呢?直观的想法就是EXP函数,如公式(3), (4)所示,那么反过来推导就是Log函数的来源了。

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

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

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

    limx=0log(1+x)=x

    现在回过来看公式(8):

    tw=log(Gw/Pw)=log(Gw+PwPwPw)=log(1+GwPwPw)

    当且仅当GwPw

    =0的时候,才会是线性函数,也就是宽度和高度都必须近似相等。

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

    总结

    里面很多都是参考师兄在caffe社区的回答,本来不想重复打字的,但是美观的强迫症,让我手动把latex公式巴拉巴拉敲完,当然也为了让大家看起来顺眼。后面还有一些公式那块资料很少,是我在阅读paper+个人总结,不对的地方还请大家留言多多指正。