目标检测RCNN

目标检测的RCNN算法,

原文地址:https://arxiv.org/pdf/1311.2524.pdf
RCNN将候选区域(region proposal)与 CNN 结合,分为四个步骤:
1.利用原图片生成1k~2k个候选区域(使用Selective Search方法)
2.对每个候选区域,使用CNN提取特征
3.将特征送入每一类的SVM分类器中,判断是否属于该类
4.修正候选框位置

原论文中的结构图:
在这里插入图片描述

候选区域的生成

过去使用滑动窗口的方法去寻找可能存在物体的候选框,工作量非常大,且很难实现。

RCNN中是用Selective search算法找出图像中可能存在目标的侯选区域(region proposals)
Selective search论文:Selective Search for Object Recognition
SS算法又是先引用Efficient Graph-Based Image Segmentation论文的方法得到最初的许多分割区域,然后依据各个区域的相似度逐渐合并为最后想要生成的框
在这里插入图片描述
在这里插入图片描述

图片放缩和经过CNN提取特征

经过SS生成的2k个框的大小不是一样的,使用CNN提取特征向量时,需要接受固定大小的输入,因此需要对这2k个框进行放缩到同样的大小。
论文提供了几种图片放缩的方式(B、C、D三种):
A列:不同大小的生成框
B列:用生成框在原图中的周围像素填充
C列:不用生成框在原图中的周围像素填充(用区域的像素均值填充或另外指定一个像素填充)
D列:直接将图片拉伸到固定大小(会造成图片扭曲/失真)

但是论文中提到还是使用了D方法,可能有什么不被察觉的优势吧
在这里插入图片描述
论文中CNN接受图片的大小为227 × 227 pixels,经过上面的放缩使所有框都变为227 × 227 pixels大小。

训练CNN:
论文中使用有监督预训练(Supervised pre-training),也就是迁移学习。 图片分类标注好的训练数据非常多,但是物体检测的标注数据却很少,如果从头训练CNN数据量不够。
预训练:Paper中使用Alexnet的网络和其参数,作为初始的参数值,然后再fine-tuning训练。
fine-tuning:在PASCAL VOC数据集上,用selective search生成候选框,将这些候选框作为训练数据,对上面预训练的CNN模型进行fine-tuning训练(需要将AlexNet最后一层的1000个类改为21,其中20个VOC的类,加一个背景)。

下图是AlexNet的结构图:
在这里插入图片描述
针对不同的数据集,N不一样,论文中说到:For VOC, N = 20 and for ILSVRC2013, N = 200.
在这里插入图片描述

在这里插入图片描述
定义候选区域与ground-truth(真正包含物体的精确框、人工标注的框)的IoU>0.5为正样本,否则为负样本。
batch-size为128,包含96个负样本和32个正样本,这样采样是因为正样本相比负样本少很多。
在训练CNN的时候会在网络的后面加上一个分类层,在训练完毕后,我们会移除最后的分类层,直接提取到前面的FC层,AlexNet的FC层为4096维向量,将提取到的这个特征向量传给下一步。

小结:对AlexNet模型进行迁移学习,对这个模型进行训练,使得这个网络能很好地提取出图片的特征,然后将第一步SS生成的2k个候选框输入CNN生成2000个4096维的特征向量。

基于特征向量训练SVM分类器

对每一个类别都有一个SVM分类器,来判断一个特征向量是否属于该类别,N个类别就有N个SVM分类器。

训练SVM分类器时,定义ground-truth boxes作为正样本,和ground-truth的IOU小于0.3的样本作为负样本,其他的框忽略。(至于为什么要这样定义,论文中说是依据经验,这样定义训练效果好)

训练好SVM后,一个后选区域对应的一个4096维的特征向量经N个SVM得到N个结果(表示该区域是该类物品的概率/置信度),2000个候选区域得到2000*N的概率矩阵。

这时,需要使用非极大值抑制方法(nms),去除重复框(因为SS生成的2000个框,可能多个框指向同一个物品)。

非极大值抑制的流程如下:

  1. 设置一个置信度的阈值conf,低于该阈值conf的候选对象排除掉,对剩余的框进行下面操作,
  2. 根据置信度得分进行排序(即SVM的输出概率)
  3. 选择置信度最高的比边界框添加到最终输出列表中,将其从边界框列表中删除
  4. 计算所有边界框的面积
  5. 计算置信度最高的边界框与其它候选框的IoU。
  6. 删除IoU大于阈值area的边界框
  7. 重复上述过程,直至边界框列表为空。
    对每个类都要单独进行非极大值抑制(即概率矩阵的每一列),对应的输出列表即为检测到该类物品的候选框。
    注意:
    阈值conf:对每一类进行NMS时,当一个框的置信度大于阈值conf时,才认为这个框预测的是该类对象。
    阈值area:当两个框的IOU大于阈值area时认为这两个框是描述同一个物品,只保留置信度最大的框。

在这里插入图片描述

Bounding-Box regression

在这里插入图片描述
P:候选框
G^:预测框
G:真实的框
就是把P映射到G^,目标是让G^和G能更加接近。
每个框包含4个信息(x,y,w,h)分别表示框的中心点坐标位置和宽高。
在这里插入图片描述
Paper中用了四个变换把P变换到G^,我们需要求的就是
dx(P ), dy(P ), dw(P ), and dh(P )这四个函数。
在这里插入图片描述
Paper中将候选框的特征向量经四个线性变换得到预测值G^的四个坐标,训练时,t表示真实的ground-truth,
在这里插入图片描述
训练完成后,将第三步SVM中,每一类的输出列表的候选框经Bounding-Box regression调整得到最后的预测框。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值