关于RCNN中Bounding-box regression的个人理解
前言
RCNN可以说是深度学习应用到目标检测领域一个不小的贡献。最近看了RNN的文章,对里面的Bounding-box regression回归不甚理解,google一番,把学到的东西写在这里。
参考的文章。
为啥要回归
鉴于bounding box太长,下面简写为bb,bounding box regression 简写为bbr。
首先,原始的bb是用selective research选出来的,这相当于是外部的算法,硬加到了CNN中。当然,经过一大堆的过滤和NMS(非最大值抑制),我们可以认为一张图就得到了一个“暂时最优”的bb。也就是detection暂时的工作结果。
但是,这样就可以了吗?以下图为例:
红色框是我们预先propose出来的。绿色的框是Ground truce,也就是label,是最优的。这两个框显然不太重合。那么问题来了,如果有一种办法,能够让我们在经过了一大堆CNN计算之后,得到的这个“暂时最优” 的框“挪动” 那么一下,更接近Ground truce,岂不是美滋滋。
怎么“挪动”
挪动这个词只是形象的说法。其实就是平移+缩放。
令
令
令
那么平移我们可以表示为:
缩放我们可以表示为:
论文中对那些
这样我们就得到了变换的一般形式:
最优化变换,也就是回归
按照上面的逻辑,每一张图片都有一个最优的变换:
也就是说,一个d对应着一个t,用i表示一张图片的序号:
看到这里就清楚了,如果我们把d换成我们一般问题里的x,把t换成一般问题 里的y。现在就是要找一个x→y的关系,使得新来的x经过这个关系的一顿操作之后得到的结果,和最优的结果“差不多”。
需要说明的是,得到d的输入并不是P这四个数,而是CNN pool5层的features,记为
换成这里的逻辑,就是要找到一个权重矩阵
最优一项是一个惩罚项,可能是为了防止过拟合。这就简单了,用最小二乘法解就可以了。
这样的话,如果在test模型的时候,经过一堆CNN和其他的计算,我们得到了一个“暂时最优”的bb。经过我们在训练时候bbr得到的那个变换