【目标检测/分割】R-CNN CVPR'14

Rich feature hierarchies for accurate object detection and semantic segmentation

作者:Ross GirshickJeff DonahueTrevor DarrellJitendra Malik

发表时间:(Submitted on 11 Nov 2013 (v1), last revised 22 Oct 2014 (this version, v5))

故事:

     1980年Fukushima从生物发现中得到启发,提出neocognitron。Neocognitron是一种层级式的位移不变的模式识别模型,但缺少一种可监督的训练算法。LeCun于1989年提出利用Stochastic gradient descent反向传播,用来训练CNN网络。而CNN网络是一种neocognitron扩展模型。

    CNN在1990年代引起了广泛关注,但从SVM兴起后便不再热门。直到2012年Krizhevsky在ILSVRC中用CNN取得大幅度成绩提升后,CNN才重新被关注。Krizhevsky主要改进了原CNN网络的激活函数(ReLU)并使用了dropout正则方法。

    2012年ILSVRC的workshop对CNN能否被用于目标检测发起很大讨论。本文第一个借助PASCAL VOC任务,表明了CNN可以在目标检测应用中起到比HOG类特征更好的实验效果。由于本文提出的监测系统融合了region proposals和CNN特征,作者将该系统命名为R-CNN:Regions with CNN features。

本文贡献:

1. 提供了一套CNN用于detection的行之有效的方法流程:区域proposal,CNN提取区域特征,SVM分类,Bounding Box Regression。这比同时期提出的regression方法的效果好很多。

2. 提出一种预训练方法,用以应对比ILSVRC任务小很多的目标检测数据集的CNN模型训练方法。

算法模型:

1. 测试阶段:

    用SS在图中预选2000个区域,将区域及周围p个像素点resize到CNN网络的输入大小(AlexNet的227×227),得到每个候选区域的CNN特征。将2000组CNN特征输入SVM分类器,得到2000个有分数的候选框,再对每个类别采用贪婪非极大值抑制,去掉对同一类别重复预测的IoU大于一定阈值的候选框。

2. 训练阶段:

    首先用AlexNet在ILSVRC上预训练,本文作者比2012年的top-1 error 提高了2.2个百分点。然后把SGD的学习率从预训练时的1e-2减小到1e-3,在PASCAL VOC的20类别中又加background类,形成21个类别输出,进行微调训练。

2.1. 数据集的构建:每个batch中有32个“正例”和96个“负例”,因为SS算法搜索到的候选框中大部分都是背景框,所以将采样做如此偏置操作。当候选框和真值框的IoU大于0.3时被作为正例,作者采用了grid search方法对该值进行了仔细挑选,因为当设为0.5时。

2.2 为什么要将CNN特征输入SVM分类器而不是直接使用CNN的分类输出?

    作者最初只是将在ImageNet上预训练的CNN作为特征提取器,训练了SVM分类器,并得到SVM分类器的最佳参数(只有ground truth被认为是正例,IoU与某类的样例小于0.3被认为是负例,大于0.3而小于0.7的框则被忽略)。而后在进行对CNN的微调时发现结果不如目前选择的这组参数好,作者假设该种原因是训练CNN使用的数据量不足,因而采用了另一种策略(与ground truth的IoU大于0.5即被视为正例,小于0.5即被视为背景区域),相当于数据增强,但缺陷在于,这种CNN网络对于位置的预测精确度不足。

    在附录中,作者说实验中直接采用CNN的softmax输出会导致mAP掉5个百分点,可能因为CNN的训练数据对位置的精确性要求不足。因而作者推测在fine-tune过程中更好的调整参数可能会使CNN的分类输出更好,不再需要SVM。

2.3 Bounding Box Regression方法

    借鉴了DPM论文的BBR方法,利用SS给出的候选区域的CNN pool5特征回归出一个候选框,改善了本文detector的位置误差。

2.4 用于分割

    当时最好的分割方法为second-order pooling,该方法先用CPMC方法生成一组候选区域,然后将SIFT和HOG的扩展特征进行二阶池化,再用SVR方法得到各个候选区域的质量分数。

    本文也用CPMC方法生成候选区域,然后用类似检测的方法得到分割区域。区别在于,分割生成的候选区域并不规则,本文探索了三种方法,full方法将候选区域外接矩形;fg方法生成mask,将背景区域赋值为前景区域的均值,如此一来在归一化时,背景区域像素值变为0;full+fg方法将前两者得到的特征直接进行拼接。实验证明第三种方法的mAP分数略微好于second-order pooling。而且通过对比发现,fc6层的特征表示能力总是强于fc7层。

实验方法:

1. 结果可视化

AlexNet网络结构图
AlexNet结构图

作者取pooling5层的节点作为观察对象,保存使该层的输出值较大的图像,作为该层捕捉到的特征的解释。

2. 分析各层表示能力

作者分别去掉了原AlexNet中的倒数1层,倒数两层,倒数三层,接到PASCAL VOC的分类输出上。发现fc6层的输出结果——也即泛化能力——好于fc7层。这里可能没有读懂,是指没有在PASCAL VOC上进行任何训练吗。去掉fc7层后,节省了大量网络参数。

3. Hoiem方法分析错误类型。发现比DPM方法中把背景判断为正例的情况好。而且本文的BB方法有效减少了位置误差。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值