R-CNN

R-CNN,结合Region ProposalCNN的目标检测算法。使用Region Proposal (Selective Search)算法得到有可能是目标的若干图像局部区域,然后把这些区域分别输入到CNN中,得到区域的特征,加上SVM分类器,判断特征对应的区域是属于某类目标还是背景,最后进行边框回归。

Introduction

在R-CNN之前,目标检测已经到了瓶颈期,一些最好的方法都是结合底层图像特征和高层语义的复杂集成系统。而这篇论文在VOC2012的mAP达到了53.3%,比之前最好的方法高30%。该方法主要有两个关键点:1)一个是将CNN应用在了自底向上的区域候选框上,用来定位和分割目标;2)当标记的训练数据比较少时,采用有监督预训练,并进行微调,可以显著提高性能。

R-CNN

Overview

R-CNN的目标检测系统由三部分组成:第一步生成region proposal,采用selective search算法;第二步使用CNN提取固定长度的特征向量;第三步使用线性SVM分类。

Training

  • 有监督预训练:在ILSVRC2012分类数据集上预训练。
  • 微调:使用目标检测的数据进行微调,以0.001的学习速率进行SGD训练。对某个分类只要IoU>0.5就视该边框为正值。每次SGD迭代都采样38个正边框和96个背景。
  • 分类器:对某个分类,高IoU和低IoU都很好区分,但IoU处于中值时则很难定义生成的候选框是否包含了该物体。作者设定了一个阈值0.3(从一系列阈值中选择的,0,0.1,…,0.5),低于它的一律视为背景(负数)。另外,每个分类都优化一个SVM。由于负样本很多,因此还采用了hard negative mining方法。

Testing

  • 采用selective search提取约2000个region proposal,将每个region proposal缩放成227*227,利用CNN前向运算计算特征。然后,使用训练好的SVM对特征进行分类,最后采用NMS去除多余的region。
  • 运行时间分析:有两个因素使得检测效率较高,首先所有CNN参数对所有类别都是共享的,其次,由CNN计算出来的特征向量相比其他方法是低维特征。

一些问题

  1. 可以不进行特定样本下的微调吗?可以直接采用AlexNet网络的特征进行SVM训练吗?
  • ⽂中设计了没有进⾏微调的对⽐实验,分别就AlexNet⽹络的pool5、fc6、fc7层进⾏特征提取,输⼊SVM进⾏训练,这相当于把AlexNet网络作为特征提取器,类似HOG、SIFT等做特征提取⼀样,不针对特征任务。实验结果发现f6层提取的特征⽐f7层的mAP还⾼,pool5层提取的特征与f6、f7层相⽐mAP差不多;
  • 在PASCAL VOC 2007数据集上采取了微调后fc6、fc7层特征较pool5层特征⽤于SVM训练提升mAP⼗分明显;
  • 由此作者得出结论:不针对特定任务进⾏微调,⽽将CNN当成特征提取器,pool5层得到的特征是基础特征,类似于HOG、SIFT,类似于只学习到了⼈脸共性特征;从fc6和fc7等全连接层中所学习到的特征是针对特征任务特定样本的特征,类似于学习到了分类性别分类年龄的个性特征。
  1. 为什么微调时和训练SVM时所采⽤的正负样本阈值【0.5和0.3】不⼀致?
  • 微调阶段是由于CNN对⼩样本容易过拟合,需要⼤量训练数据,故对IoU限制宽松:与Ground Truth相交IoU>0.5的建议框为正样本,否则为负样本;
  • SVM这种机制是由于其适⽤于⼩样本训练,故对样本IoU限制严格:Ground Truth为正样本,与Ground Truth相交IoU<0.3的建议框为负样本。
  1. 为什么不直接采⽤微调后的AlexNet⽹络最后⼀层SoftMax进⾏21分类【20类+背景】?
  • 因为微调时和训练SVM时所采⽤的正负样本阈值不同,微调阶段正样本定义并不强调精准的位置,⽽SVM正样本只有Ground Truth;并且微调阶段的负样本是随机抽样的,⽽SVM的负样本是经过hard negative mining⽅法筛选的;导致在采⽤SoftMax会使PSACAL VOC 2007测试集上mAP从54.2%降低到50.9%。
  1. R-CNN速度慢在哪里?
  • RCNN存在着重复计算的问题(proposal的region有几千个,多数都是互相重叠,重叠部分会被多次重复提取feature)。

Reference

  1. Rich feature hierarchies for accurate object detection and semantic segmentation
  2. Caffe源码实现
  3. R-CNN论文详解