R-CNN

Papaer : Rich feature hierarchies for accurate object detection and semantic segmentation
Code :

摘要

R-CNN 是 R-CNN系列(R-CNN,Fast R-CNN,Faster R-CNN等等)系列的第一篇,起到了承上启下的作用。它开创性的将CNN提取图片特征的方式引入到了Object Detection任务当中,但是使用的框架还是传统的检测框架,包括Selective Search 生成候选框,CNN提取特征和SVM进行分类。本文的贡献除了使用CNN进行目标检测外,更加重要的贡献是面对小样本任务,在大数据集上进行预训练的模型该如何迁移学习。

算法

算法的整体框架如下所示

在这里插入图片描述
在测试阶段,首先,使用Selective Search 算法生成2k个左右的候选框,然后使用训练好的CNN模型进行特征提取,之后将提取出长度固定的特征向量在每个类对应的SVM上进行二分类,再利用IoU进行NMS得到具体的框,防止泛滥候选框泛滥。为了精确bbox,还根据pool5 feature做了个bbox regression来降低定位损失。部分实现细节如下所示

  • 目标检测任务训练样本的生成:使用Selective Search生成2k个左右的候选框,然后将候选框IoU满足阈值(0.5)的标记为对应类的正例,其他的为该类的负例,传递给CNN,SVM进行训练
  • 候选框到CNN的输入:作者探讨了各向异性缩放和各向同性缩放,最后选择了padding = 16的各向异性缩放,也就是将候选框向四周扩大16个pixel,然后不管图片的长宽比例,全部缩放到CNN输入的大小227*227
  • CNN的训练:相比于分类任务具有ILSVRC2013的数据集,目标检测的数据集相对较小,不足以用来训练CNN。因此,作者使用在Image Net数据集上pretrained model,进行finetune,finetune的方法为替换掉CNN的最后的全连接层为目标检测数据集对应的类别
  • SVM分类器:作者并没有将CNN模型的softmax层的输出作为分类器的输出,而是将特征提取出来后使用SVM分类,这是因为我们使用了宽松的标注数据,为了finetune CNN模型需要足够大的数据集。如果只将完整包含了物体的候选框作为训练集,训练集的数量不够。因此需要将部分包含物体的候选框也放到训练集中,但是任务目标是只有当bounding box把整个物体都包含进去了,我们才把它标注为物体类别。CNN的softmax层与任务目标之间存在gap,因此使用SVM这种适用于小样本学习的分类器进行二分类任务。对于SVM,标记正负样例的方法更加严格,我们只将ground truth对应的区域标记为正例,而将IoU<0.3的样例标记为负例。

作者还通过迁移学习的过程探讨了CNN不同层之间的作用,通用证明了一个理论,如果不对预训练的模型进行finetune,直接像HOG、SIFT一样做特征提取,不针对特定的任务。然后把提取的特征用于分类,结果发现使用pool 5的特征产生的结果和fc6 fc7相似,如果进行finetune,那么使用fc6 fc7的提取到的特征训练的svm分类器的精度就会上升。这说明不针对特定任务进行finetune,而是把CNN当做特征提取器,卷积层所学到的特征其实就是基础的共享特征提取层,CNN的表示能力主要来自于卷积层而不是全连接层,而fc6 fc7所学习到的特征是用于针对特定任务的特征。

总结

个人认为,R-CNN对于小样本学习的技巧和迁移学习的探讨相比CNN的引入更加让人印象深刻,R-CNN几乎在传统目标检测算法框架下达到了最好,下一步的改进方向应该是减少框架的瓶颈或是提升运算速度,1比2000的CNN运算代价还是很高的,尽量进行端到端的学习任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值