0.回顾一下RCNN
大家一般都是从RCNN开始了解Bounding Box Regression的,所以这里简单回顾一下RCNN
RCNN算法流程可分为4步:
1.一整图像生成1K~2K个候选区域(使用Selective Search方法)
2.对每个候选框区域使用深度网络提取特征
3.特征送入每一类的SVM分类器,判别是否属于该类
4.使用回归器精细修正候选框位置
这里我要说的就是RCNN的第四步,即“边界框回归”
主要围绕着这六个问题来解析Bounding Box Regression:
1.为什么要边框回归?
2.什么是边框回归?
3.边框回归细节
4.为什么使用相对坐标差?
5.为什么宽高比只能取对数?
6.为什么IoU较大时边界框回归可视为线性变换?
1.为什么要边框回归?
对于上图,绿色的框表示Ground Truth, 红色的框为Selective Search提取的Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5), 那么这张图相当于没有正确的检测出飞机。 如果我们能对红色的框进行微调, 使得经过微调后的窗口跟Ground Truth 更接近, 这样岂不是定位会更准确。 确实,Bounding-box regression 就是用来微调这个窗口的。
2.边框回归是什么?
对于窗口一般使用四维向量 ( x , y , w , h ) (x,y,w,h)(x,y,w,h)来表示, 分别表示窗口的中心点坐标和宽高。 对于图 2, 红色的框 P 代表原始的Proposal, 绿色的框 G 代表目标的 Ground Truth, 我们的目标是寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实窗口 G 更接近的回归窗口G ^ \widehat{G}
G 。
3.边框回归细节
RCNN论文里指出,边界框回归是利用平移变换和尺度变换来实现映射 。
注意:当输入的Proposal 与 Ground Truth 相差较小时(RCNN设置的是IOU>0.6)可以认为这种变换是一种线性变换,那么我们就可以用线性回归模型对窗口进行微调,只有当Proposal和Ground Truth比较接近时(线性问题),我们才能将其作为训练样本训练我们的线性回归模型,否则会导致训练的回归模型不work(当Proposal跟Ground Truth离得较远,就是复杂的非线性问题了,此时用线性回归建模显然不合理)。这个也是G-CNN: an Iterative Grid Based Object Detector多次迭代实现目标准确定位的关键。
那么什么是线性回归?
线性回归就是给定输入的特征向量 X, 学习一组参数 W, 使得经过线性回归后的值跟真实值 Y(Ground Truth)非常接近.,即Y≈WX
那么这个映射关系中我们的输入以及输出分别是什么呢?
4.为什么使用相对坐标差?
一句话概括:进行尺度归一化。 一句话概括:进行尺度归一化。一句话概括:进行尺度归一化。
5.式(4)为什么宽高比要取对数(为什么不直接使用宽高比值来作为目标进行学习)?
一句话概括:保证缩放尺度的非负性。 一句话概括:保证缩放尺度的非负性。一句话概括:保证缩放尺度的非负性。
要得到一个放缩的尺度,这里必须限制尺度大于0。那么,我们学习的
怎么保证满足大0呢?
最直观的想法就是引入EXP函数,如公式(4)所示,那么反过来推导就是Log函数的来源了。
6.为什么IoU较大时边界框回归可视为线性变换?
本文参考多篇文章、视频、论文、汇总而成
关于RCNN中Bounding-box regression的个人理解
CSDN
CSDn
知乎
BiliBili
有问题欢迎大家指正,如果感觉有帮助的话请点赞支持下👍📖🌟