RCNN中分类与回归思想

回复 星标
更多

RCNN中分类与回归思想

510748

本文是对目标检测开山之作RCNN体现的诸多思想与方法(上)的续作,也就是《下篇》,可以对照着阅读,本篇重点强调了分类与回归的思想,特别是回归:为什么回归?怎么回归?既体现了思想,又体现了方法的精妙,所以专门写成一篇,与各位共同探讨、切磋。

一、分类

针对每个类别训练一个SVM的二分类器。开始之前先解释一下IOU:计算矩形框A、B的重合度的公式:IOU=(A∩B)/(A∪B),重合度越大,说明二者越相近。

正负样本:如果某个region proposal和当前图像上的所有ground truth中重叠面积最大的那个的IOU大于等于0.5,则该region proposal作为这个ground truth类别的正样本,否则作为负样本

输入:f7的特征,f7的输出维度是2000*4096

输出:是否属于该类别

训练结果:得到SVM的权重矩阵W,W的维度是4096*20。

二、回归

1、为什么最后还要用回归?

目标检测不仅是要对目标进行识别,还要完成定位任务,所以最终获得的bounding-box也决定了目标检测的精度。

定位精度可以用算法得出的物体检测框Region Proposal与实际标注的物体边界框Ground Trut的IoU值来近似表示。

如下图所示,绿色框为Ground Truth,卡宴车辆的实际框;黄色框为SS算法得出的建议框,即Region Proposal。尽管黄色框中也识别正确,但绿色框和黄色框IoU值并不够大,因此检测精度并不够高。采用回归器是为了对建议框进行校正,使得校正后的Region Proposal与Ground Truth更接近, 来提高最终的检测精度。RCNN论文中采用bounding-box回归使mAP提高了3~4%。

510748

2 、如何回归

510748

  • 绿色窗口G表示实际框Ground Truth
  • 黄色框口P表示建议框Region Proposal
  • 红色窗口

510748

表示Region Proposal进行回归后的预测窗口,以下或用G_cap表示

现在的目标是找到P到G_cap的线性变换,使得G_cap

与G尽可能的相近,这就转化为可以用最小二乘法解决的线性回归问题。下面推导:

定义P窗口的数学表达式:

510748

,分别表示第一个i窗口的中心点坐标、第i个窗口的宽和高;

G窗口的数学表达式为:

510748

510748

窗口的数学表达式为:

510748

窗口的变换共有四种情形,所以定义四种变换函数,

510748

通过平移对x和y进行变化,

510748

通过缩放对w和h进行变化,即下面四个式子所示:

510748

问题一:由P、G可以直接得到

510748

,为什么还要插入

510748

,这是什么梗啊?

我们来推导并证明,假设按照P、G的关系,我们有:

510748

如果我们用t*直接代替d*,不是问题很简单吗,为什么非要搞得这么复杂呢?这里边有两个解释:

· 这是在训练阶段,你可以知道t*,但到测试阶段,你并不知道,所以训练阶段可以用,毫无问题,但测试阶段无法使用。

· 用t*直接代替d*的求解,这是CNN的外部问题,测试阶段没有目标G,所以为了在测试阶段使用,我们应该有个参数,通过这个参数实现d*到t*映射

问题二:这个参数怎么设计?由什么来决定?

这个参数必然是由原来图像的Region Proposal决定的,由大标题三中内容知道f7的输出为2000*4096,每个Region Proposal有4096个特征,这是经过全连接层之后的组合特征,这4096个特征决定了,1、定位是否精确;2、是哪个类别。现在我们做回归,是为了校正检测精度,并不关心类别,所以不需要组合特征,而是需要经过最后一道卷积层之后的特征,因为这个层的特征是各种卷积核对于图像特征最终的提取,包括颜色、纹理、大小、轮廓等。

510748

都是一个AlexNet 网络Pool5层特征

510748

的线性函数,即

510748

,这里

510748

就是所需要学习的回归参数。损失函数即为:

510748

损失函数中加入正则项,是为了避免归回参数w过大。其中,回归目标由训练输入对(P,G)按下式计算得来:

510748

①构造样本对。为了提高每类样本框回归的有效性,对每类样本都仅仅采集与Ground Truth相交IoU最大的Region Proposal,并且IoU>0.6的Region Proposal作为样本对(Pi,Gi),一共产生20对样本对【20个类别】;

②单独训练每种类型的回归器,输入样本对N个:

510748

以及

510748

所对应的AlexNet网络Pool5层特征

510748

③利用t*式和输入样本对

510748

计算

510748

④利用

510748

510748

根据损失函数进行回归,得到使损失函数最小的参数

三、测试过程

1、输入图片,利SS方法得到2000个region proposal。

2、对所有region proposal变换到固定尺寸227*227,作为已用Image Net训练好的CNN网络的输入,得到f7层的4096维特征,所以f7层的输出是2000*4096。

3、对每个类别,把提取到的特征输入到用这个类别已训练好的svm分类器,进行打分,权重矩阵是4096*20,得分矩阵是2000*20,表示每个region proposal属于某一类的得分。

4、采用非极大抑制算法(non-maximun suppression)对得分矩阵中的每一列中的region proposal进行剔除,就是去掉重复率比较高的几个region proposal,得到该列中得分最高的几个region proposal。对每一列都这样操作,这样最终每一列(即每个类别)都可以得到一些region proposal。

5、用N=20个回归器对第4步得到的20个类别的region proposal进行回归,直接用在训练阶段产生的pool5特征的权重W。最后得到每个类别的校正后的bounding box。

此帖已被锁定,无法回复
新窗口打开 关闭