【Faster RCNN 】bounding box regression详解

引言

在人脸检测算法如R-CNN、Fast RCNN中都用到了bounding box回归,回归的目标是使得预测的物体窗口向groundtruth窗口相接近。我一开始没理解如何能回归出一个框来,看完下文就理解了

 

1. 为什么要做Bounding-box regression?

【Faster RCNN 】bounding box regression详解

图10  示例

如图10所示,绿色的框为飞机的Ground Truth,红色的框是提取的Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5),那么这张图相当于没有正确的检测出飞机。如果我们能对红色的框进行微调,使得经过微调后的窗口跟Ground Truth更接近,这样岂不是定位会更准确。确实,Bounding-box regression 就是用来微调这个窗口的。

 

2. 回归/微调的对象是什么?

【Faster RCNN 】bounding box regression详解

 

3. Bounding-box regression(边框回归)

那么经过何种变换才能从图11中的窗口P变为窗口呢?比较简单的思路就是:

【Faster RCNN 】bounding box regression详解

 

【Faster RCNN 】bounding box regression详解

 

注意:只有当Proposal和Ground Truth比较接近时(线性问题),我们才能将其作为训练样本训练我们的线性回归模型,否则会导致训练的回归模型不work(当Proposal跟GT离得较远,就是复杂的非线性问题了,此时用线性回归建模显然不合理)。这个也是G-CNN: an Iterative Grid Based Object Detector多次迭代实现目标准确定位的关键。

 

线性回归就是给定输入的特征向量X,学习一组参数W,使得经过线性回归后的值跟真实值Y(Ground Truth)非常接近。即【Faster RCNN 】bounding box regression详解。那么Bounding-box中我们的输入以及输出分别是什么呢?

输入:

【Faster RCNN 】bounding box regression详解这个是什么?输入就是这四个数值吗?其实真正的输入是这个窗口对应的CNN特征,也就是R-CNN中的Pool5feature(特征向量)。(注:训练阶段输入还包括 Ground Truth,也就是下边提到的【Faster RCNN 】bounding box regression详解)

输出:

需要进行的平移变换和尺度缩放【Faster RCNN 】bounding box regression详解,或者说是【Faster RCNN 】bounding box regression详解。我们的最终输出不应该是Ground Truth吗?是的,但是有了这四个变换我们就可以直接得到Ground Truth,这里还有个问题,根据上面4个公式我们可以知道,P经过【Faster RCNN 】bounding box regression详解,得到的并不是真实值G,而是预测值【Faster RCNN 】bounding box regression详解

的确,这四个值应该是经过 Ground Truth 和Proposal计算得到的真正需要的平移量【Faster RCNN 】bounding box regression详解和尺度缩放【Faster RCNN 】bounding box regression详解

这也就是R-CNN中的:

【Faster RCNN 】bounding box regression详解

 

那么目标函数可以表示为【Faster RCNN 】bounding box regression详解是输入Proposal的特征向量,【Faster RCNN 】bounding box regression详解是要学习的参数(*表示【Faster RCNN 】bounding box regression详解,也就是每一个变换对应一个目标函数),【Faster RCNN 】bounding box regression详解是得到的预测值。我们要让预测值跟真实值【Faster RCNN 】bounding box regression详解差距最小,得到损失函数为:

【Faster RCNN 】bounding box regression详解

函数优化目标为:

【Faster RCNN 】bounding box regression详解

利用梯度下降法或者最小二乘法就可以得到【Faster RCNN 】bounding box regression详解