R-CNN

这是阅读的第一篇物体检测论文,也是首次全文翻译的。LeNet论文50多页,只翻译了Andrew Ng推荐的部分,ResNet论文附录涉及到物体检测相关,准备以后再完成。总体来说比读LeNet轻松很多,翻译应该也通顺不少了。

Rich feature hierarchies for accurate object detection and semantic segmentation
Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik
UC Berkeley


Abstract

近年来在标准PASCAL VOC数据集上的物体检测性能进入了平稳期。成绩最佳的方法是将多个低级图像特征和高级环境结合的复杂组合系统。在本论文中,我们提出了一个简单、可扩展的检测算法,相对于VOC 2012的最好成绩,将均值平均精度(mean average precision——mAP)提升了30%多,达到了53.3%的mAP。我们的方法有两个关键创新点:

  1. 使用高容量的CNN(ConvNet)对 region proposals 计算 feature vectors。从经验驱动特征(SIFT、HOG)到数据驱动特征(CNN feature map),提高特征对样本的表示能力
  2. 采用大样本下(ILSVRC)有监督预训练和小样本(PASCAL)微调(fine-tuning)的方法解决小样本难以训练甚至过拟合等问题

因为我们把region proposal与CNNs结合,所以我们把该方法称为R-CNN:有着CNN特征的region。我们也把R-CNN和近期提出的基于相似CNN结构的滑动窗口检测器OverFeat进行比较。我们发现R-CNN在200类ILSVRC-2013检测数据集上性能胜出一大截。系统源代码在此

1. Introduction

特征很重要。过去十年在各个图像识别任务上的进展主要基于SIFT和HOG的使用。但如果我们查看标准图像识别任务PASCAL VOC物体检测的性能,在2010-2012年间其进展缓慢,通过构建集成系统和成功方法的小变体来取得少量提升。
SIFT和HOG都是分块取向的直方图,是一种我们能粗略地与V1中的复杂细胞关联起来的表达。V1是灵长类动物的视觉通路的第一皮层区域。但我们也知道识别在流程中的不同阶段都发生了,这说明图像识别需要有一个分层的,多阶段的,能计算出有更多形象的特征的流程。

福岛(Fukushima)的”新认知机neocognitron”模式识别模型是一个早期尝试,它是由生物启发的分层的平移不变性模型。但它缺乏监督学习算法。LeCun它们的研究显示经由SGD的反向传播能有效的训练CNN,一类可用于扩展新认知机的模型。

CNN曾在1990年代广泛应用,但由于SVM的出现不在流行。2012年Krizhevsky通过展示在ILSVRC上的更高准确率,重燃了大家对CNNs的兴趣。他们的成功基于在120万张带标注图片上训练的大CNN(对LeNet的小改动如ReLU和dropout)。

在ILSVRC 2012 workshop上广泛的讨论了ImageNet结果的重要性。中心议题是:如何将CNN在ImageNet上的分类结果扩展到PASCAL VOC上的物体检测上?

我们通过将图像分类和物体检测连接起来解答了这个问题。本论文是第一篇提出CNN相比基于HOG的系统,能在PASCAL VOC上产出更高的物体检测性能的。为了达成这一结果,我们主要着眼于两个问题:用深度学习局部化物体,并只用少量标注样本训练一个大容量模型。

不像图像分类,检测需要在图像中局部或物体。一种方法是将局部化设计为回归问题。与我们同步的Szegedy的研究显示这一策略在实践中进展并不顺利(他们在VOC 2007 mAP只有30.5%,而我们是58.5%)。另一选择是建立一个滑动窗口检测器。CNN已经被这样使用了至少20年,特别是在有限物体种类如脸和行人。为了保持高空间分辨率,这些CNN通常只有两个卷积和池化层。我们也考虑过采用滑动窗口技术,但我们的网络单元很多,有5个有着很大感受野(195*195像素)和步长(32*32)的卷积层,这让从滑动窗口中获得精确的局部化结果成为未决的问题。

作为代替,我们通过在“使用区域识别”范式上操作来解决了CNN局部化问题,它曾成功于物体检测和语义分割。在测试时,我们的方法为输入图片生成了近2000个种类无关的region proposal,使用一个CNN从每个proposal抽取出一个定长的特征向量,再用种类相关的SVMs为每个region进行分类。我们使用了一个简单的技术(仿射变换 affine image warping)来从每个region proposal生成固定大小的CNN的输入,从而无视region形状的不同。图1展现了我们方法的overview和结果的亮点。由于我们的系统将region proposal与CNN结合,所以我们将它称为R-CNN:带CNN特征的Regions。

Alt text

我们也把R-CNN和近期提出的基于相似CNN结构的滑动窗口检测器OverFeat进行比较。我们发现R-CNN在200类ILSVRC-2013检测数据集上性能胜出一大截。mAP得分是31.4%和24.3%。

物体检测面临的另一个挑战是标注数据的不足,当前可用的数量是无法训练一个大CNN的。常见的解决方案是无监督的预训练和监督的调优。本论文第二大创新点是证明用大辅助数据集(ILSVRC)进行监督预训练,再用小数据集(PASCAL)进行特定领域调优这一范式,在数据不足时有效地训练一个高容量的CNN。在我们的实验里,对检测的调优提升了8%的mAP得分。在调优后,我们的系统在VOC 2010上取得了54%的mAP得分。而高度调优的基于HOG的DPM(deformable part model)得分是33%。我们也之处了Donahue同期的工作,证明Krizhevsky的AlexNet无需调优就能用作一个黑盒特征抽取器,在一系列的识别任务上都取得了卓越的成绩。

我们的系统效率也很高。分类相关的计算是一个相当小的矩阵向量乘积和非极大值抑制(greedy non-maximum suppression)。这一计算量属性是由所有类都共享特征产生的,而且region feature维度的量级比过去用的低了两级。

提升我们的方法的重要途径是理解我们的失败尝试。因此我们也报告了在Hoiem检测分析工具上的结果。利用这个结果,我们使用了一个简单的限位框回归方法,显著地降低了错误定位。

在介绍技术细节之前,我们需要提起的一点是,由于R-CNN在region上操作,所以它天然地能扩展到语义分割任务。只需要略微修改,我们就在PASCAL VOC分割任务上获得了不错的结果:在2011测试集上平均分割准确率为47.9%

2. Object detections with R-CNN

我们的物体检测系统由三个模块组成:

  1. 第一个生成类别无关的region proposals。这些proposal为我们的检测器提供候选
  2. 第二个模块是一个大的卷积神经网络,从每个region中提取固定长度的特征向量
  3. 第三个模块是特定类别的SVM的集合

本节将陈述每个模块的设计方案,描述它们所用测试时间,如何训练它们的参数,并展示在PASCAL VOC 2010-12和ILSVRC 2013上的成绩。

2.1 Module design

Region proposals 近期许多论文提供了生成类别无关的region proposal的方法。如:objectness,selective search,category-independent object proposals,constrained parametric min-cuts(CPMC),multi-scale combinatorial grouping,还有Ciresan,它通过在整齐隔开的方形切块上使用CNN来检测有丝分裂细胞,也是region proposals的一个特殊案例。我们使用selective search,好与之前的检测工作进行可控比较。

Feature extraction 我们用Caffe中的AlexNet实现,从每个region proposals中提取一个4096维的特征向量。227*227的RGB图片经过去均值化后,通过5个卷积层和两个全连接层的前向传输,得到特征。[24, 25]里有更多的网络结构细节。
为了从region proposal中提取特征,我们需要将图片转换为CNN所需的大小(227 * 227)。我们大小不定的region有多种转换方式,我们选择了最简单的一种。不管其大小和长宽比,我们直接将其拉伸到所需尺寸。在变形之前,我们扩大限位框使其在原框周围有$p$个图片上下文像素(我们使用$p = 16$)。图2是变形后的region随机抽样。附录A中讨论了其它变形方式。

Alt text

2.2 Test-time detection

在测试时,我们在图片上运行selective search来获得近2000个region proposals(我们均使用其“fast mode”)。我们将region变形并用CNN前向传输进行特征抽取。然后对于每一类,我们用训练好的该类的SVM对特征进行打分。对于图片中所有的regions,使用非极大值抑制(每个类独立运行)来拒绝一个region——如果它和一个已选择的region的IoU高于一个训练好的阈值。

Run-time analysis 使检测高效的原因有二。

  1. 所有类型共享同一个CNN参数
  2. 与之前的方式相比,CNN提取的特征向量维度要低很多。如使用视觉词袋(bag of visual word)编码的空间范式。
    用于UVA检测系统的特征是我们的两个量级那么大(360k和4k)

共享的结果是计算region proposals和特征所需时间(一张图片需要GPU 13秒,CPU 53秒)分摊到所有类别上。唯一与类别相关的计算是特征和SVM参数的点乘与非极大值抑制。实践中,所有点乘批量化为一个矩阵乘积。特征矩阵是2000*4096而SVM参数是4096*N,N是类别数量。

这一分析说明R-CNN在不需要借助辅助手段如hashing的情况下,能放大到数千个物体类别。就算有十万类,在现代多核CPU上结果的矩阵乘法也只需10秒。这样的效率不仅仅是因为使用了region proposals和共享特征。UVA系统由于使用了高维特征,会慢上两个数量级。它存储十万个线性预测期需要134GB的内存,而我们的低维特征只需1.5G。

将R-CNN与近期Dean使用DPMs和hashing的scalable detection对比也非常有趣。他们报告称在引入一万个干扰类时,在VOC 2007上有16%的mAP,每张图片需处理5分钟。而使用我们的方法,一万个类别的情况下CPU只需运行1分钟。而且因为没有使用辅助手段,让mAP保持在了59%。

2.3 Training

Supervised pre-training 我们在一个大辅助数据集上(ILSVRC Classification 2012 )分别地预训练CNN,只有图片级的标注(没有限位框)。预训练是用开源的CNN库Caffe完成的。简单地讲,我们的CNN接近Krizhevsky的AlexNet,比它在ILSVRC 2012 classification上的top-1 错误率高2.2%。这一差别是由训练过程中的一些简化导致的。

Domain-specific fine-tuning 为了让我们的CNN适应新的任务(检测)和领域(warped proposal windows)。我们只用warped proposal windows样本,继续用SGD训练CNN的参数。除了用随机初始化的(N+1)路分类层(N是物体类别数量,1是背景)替换原来的ImageNet 1000路分类层,CNN的结构不变。对于VOC数据集,N=20;对于ILSVRC 2013,N=200。对于输入的region proposals,我们把所有与其的$IoU \geqq 0.5$的gt所属类认为是正样本,其余的类是负样本。SGD的学习率设置为0.001(预训练初始值的1/10),让调优能取得进展同时又不完全颠覆其初始态。在每一次SGD迭代,我们都取32个正样本window(遍及所有类)和96个背景样本window,形成一个128的mini-batch。我们将bias设置得偏向正样本,因为比起背景来它们过于稀少。

Object category classifiers 假设我们要训练一个二分类器来检测汽车。很确定的是一个紧紧包围汽车的region是一个正样本,而和汽车毫无关系的,是一个负样本。不太确定的是怎么标注一个与汽车部分重叠的region。我们用IoU重叠阈值来解决此问题,低于阈值的被定义为负样本。阈值为0.3,是从一个验证集中,对{0,0.1,…,0.5}进行格点搜索(grid search)选出来的。我们发现这个阈值需要小心选择。如果设置为0.5,会让mAP下降5%。类似的,设置为0会让mAP下降4%。每个gt限位框所属的类都简单的设置为正样本。

一旦特征抽取出,训练标签打上后,我们开始为每个类优化一个线性SMV。由于训练数据大到无法装入内存,我们采用了标准的hard negative mining方法。Hard negative mining收敛得很快,实际运用中,对所有图片处理一遍后mAP便停止增长了。

在附录B里我们探讨了正负样本在调优和SVM训练时定义不一样的原因。同时我们还讨论了训练SVM而不是直接使用调优后的CNN的最后一个softmax层中的权衡。

2.4 Result on PASCAL VOC 2010-12

我们按照VOC的最佳实践在VOC 2007数据集上验证了我们的设计决策和超参数。我们用VOC 2012训练集上调优了CNN,并在VOC 2012训练和验证集上优化了我们的SVMs。对于两大不同算法,我们只各提交了测试结果到评价服务器一次(是否进行限位框回归)。

表1是VOC 2010上的完整结果。我们把我们的结果和4个强大的基线比较,包括SegDPM。它把DPM检测器和语义分割系统的输出结合,还用了inter-detector context和图片分类器的重评估。最贴切的对比是来自Uijlings的UVA系统,因为我们用了一样的region proposal算法。他们的方法为了对region分类,建立了一个四层的空间范式,并将它移植到密集抽样的SIFT,Extended OpponentSIFT和RGB-SIFT ,每个向量用一个4000字的码表来量化。分类是由一个histogram intersection kernel SVM完成。与他们的多特征、非线性核SVM方式相比,我们的mAP提升巨大,从35.1%到53.7,同时速度也要快很多。我们的方法在VOC 2011/12测试集上取得了类似的成绩。

Alt text

2.5 Results on ILSVRC2013 detection

我们用了与PASCAL VOC同样的系统超参数在200类ILSVRC 2013 detection数据集上运行了R-CNN。同样,是否进行了限位框回归的结果各自提交了一次。

图3将R-CNN和比赛当时的结果以及之后的OverFeat的结果进行了比较。R-CNN的mAP为31.4%,相比第二的OverFeat的24.3%领先巨大。为了提供各类的AP分布的感受,还画出了箱线图,同时文末的表8也给出了每个类的AP。比较中的大部分都使用了CNN(OverFeat,NEC-MU,UvA-Euvision,Toronto A和UIUC-IFP),说明CNN如何应用于物体检测的细微差别,能导致巨大的产出差异。

Alt text

在第4部分,我们会给出ILSVRC 2013 detection数据集的综述,并提供我们在之上运行R-CNN时做出的一些选择的细节。

3. Visualization, ablation, and modes of error

3.1 Visualizing learned features

第一层的卷积核直接就能可视化,也很容易理解$^{[25]}$。他们捕获有向边和反色(opponent colors)。理解后续的层就困难了起来。Zeiler和Fergus提供了一个有吸引力的视觉逆卷积化方法$^{[42]}$。我们提出了一个简单(且互补的)无参方法,能直接展示网络学到了什么。

我们的想法就是挑出网络中的一个单元(特征),把它当做一个物体检测器。也就是在一个大的留存region proposal集合(1000万)上计算这个单元的激活值,并将regions按激活值从大到小排序,执行非极大值抑制,然后显示得分最高的region。我们的方法通过展示单元激活了哪些region,让它们“为自己说话”。为了看到不同的视觉模式,也为了了解unit的不变性,我们没有进行平均。

我们可视化了$pool_5$层里的units,也就是网络里第5个也是最后一个卷积层后的maxpool层。$pool_5$的Feature map有6 * 6 * 256 = 9215维。不考虑边界影响的话,每个$pool_5$单元有一个原输入227*227像素中的195*195像素的感受野。一个中间的$pool_5$单元有着近全局的视野,靠边的单元有着小一点的、切割过的支持。

Alt text

图4中的每一行都是我们在VOC 2007 训练验证集上调优的CNN的一个$pool_5$单元的激活值最高的16个region。256个有着不同功能的unit,我们可视化了6个(附录D中有更多)。这些选出来的单元有代表性地显示了网络学到的东西。在第二行,我们看到了一个针对狗脸和点阵的单元。第三行是一个红团检测器。还有检测人脸以及更抽象的纹理如文字和窗户里的三角结构。显然网络学到了,将少量分类调优的特征结合起来,得到了一种遍及形状、纹理、颜色和材质的表达。后续的全连接层$fc_6$就能在这些丰富的特征上建立大量的组合模型。

3.2 Ablation studies

Performance layer-by-layer, without fine-tuning 为了理解那一层对检测性能最重要,我们分析了VOC 2007数据集上最后三层的结果。 $pool_5$已在3.1里描述过了,最后两层总结如下。
$fc_6$全连接于 $pool_5$,它将4096*9216的权重矩阵乘上 $pool_5$的feature map(形成一个9216维的向量),再与biases向量相加。再将向量中的元素进行半波整流(half-wave rectified)$x \leftarrow max(0,x)$。

$fc_7$是网络最后一层。它将一个4096*4096的权重矩阵乘以$fc_6$的输出,类似的加上biases并整流。

我们先从没有在PASCAL上调优的CNN(只在ILSVRC 2012上预训练)结果看起。一层一层的性能分析(表2 1-3行)暴露了$fc_7$的特征比$fc_6$要差。这意味着29%,1680万参数可以从CNN中移除,还不会导致mAP下降。更惊人的是将$fc_6$和$fc_7$都移除也有一个不错的结果,尽管$pool_5$的参数只有整个网络的6%。CNN的表达能力主要来自其卷积层,而不是更大更密的全连接层。这一发现说明了对任意大小的图片,只用CNN的卷积层计算一个密集feature map的性能潜力,有点HOG的感觉。这样的表达力允许包括DPM在内滑动窗口检测器在$pool_5$的特征上进行试验。

Alt text

Performance layer-by-layer, with fine-tuning 现在来看看调优后的层性能分析。提升非常惊人(表2 4-6行):调优将mAP提升了8%,达到54.2%。调优带来的提升在$fc_6$和$fc_7$比$pool_5$大,说明$pool_5$从ImageNet学习到的特征是通用的,提升主要来自于建立在它们之上的领域特定的非线性分类器。

Comparison to recent feature learning methods 近期有在PASCAL VOC上进行一些特征学习方法的尝试。我们看了两个近期基于可变形的部分模型(deformable part models)的方法。我们还加入了标准HOG-based DPM的结果$^20$作为比较。

第一个DPM特征学习方法DPM ST用“sketch token”概率直方图将HOG特征进行增广(augment)。直觉上说,sketch token是穿过图片块中心的轮廓的紧密分布(a tight distribution of contours passing through the center of an image patch)。sketch token概率是在每个像素上使用随机森林计算,用于将35*35的块分类到150个sketch token之一或背景。

第二个方法DPM HSC用稀疏编码sparse code直方图HSC替换了HOG。要计算HSC,需要对每个像素用一个学习后的100个7*7灰度像素的字典进行稀疏编码激活。激活结果通过三路整流(完全和半波both half-waves),spatially pooled,$l_2$归一化,然后power transformed $(x \leftarrow sign(x) \left| x \right|^{\alpha})$

所有R-CNN变体都大大超出这3个DPM(表2 8-10行)。与最新版的一个只用HOG特征的DPM相比,我们的mAP高20%:54.2% vs. 33.7%——61%的相对提升。

3.3 Network architectures

本论文中的大部分结构都使用了AlexNet。不过我们发现结构的选择对检测效果影响很大。表3是在VOC 2007上测试的Simonyan和Zisserman近期提出的16层网络$^{[43]}$的结果。这个网络是ILSVRC 2014 classification上表现最好的之一。它有着均匀的13层3*3卷积层,散布着5个max-pooling层,最后加上3个全连接层。我们将这个OxfordNet称为O-Net,TorontoNet称为T-Net。

为了在R-CNN中使用O-Net,我们下载了预训练的VGG_ILSVRC_16_layers权重。我们用了同样的流程调优T-Net和O-Net。唯一的区别是用了更小的minibatches(24个样本),为了能在GPU内存中放下。表3中的结果显示用了O-Net的R-CNN显著地超越了T-Net,mAP从58.5%到66.0%。当然要考虑到不可忽视的计算时间损失,O-Net的一次前向传播是T-Net时间的7倍。

Alt text

3.4 Detection error analysis

我们使用了来自Hoiem的卓越的检测分析工具$^{[23]}$,来发现我们方法的错误模式,理解并调优,并将我们错误类型与DPM的进行对比。分析工具的完整总结超出了本论文的范围,因此我们鼓励读者查阅$^{[23]}$来理解一些好的细节(如”normalized AP”)。因为分析在相关的情景中更好理解,我们把讨论放在了图5和图6的题注上。

Alt text

Alt text

3.5 Bounding-box regression

基于错误分析,我们使用了一个简单的方法来降低定位误差。由DPM使用的限位框回归所启发,我们训练了一个线性回归模型来对一个selective search region proposal在$pool_5$输出的特征上预测一个新的检测窗口。附录C是完整细节。表1、表2和图5中的结果显示这个简单的方法纠正了大量错误定位问题,将mAP提升了3到4个点。

3.6 Qualitative results

ILSVRC 2013上的有质量的检测结果在论文末的图8和图9。每张图片是从val2集上随机抽样的,所有检测器的所有precision大于0.5的预测都进行了显示。这些图片没有进行选择,用于对检测器实际效果有个印象。图10和图11是更有质量的结果。我们挑选了这些有趣、惊人或好玩图片。同样,只显示了precision大于0.5的结果。

4. The ILSVRC2013 detection dataset

在第2部分我们展示了ILSVRC2013 detection的结果。这个数据集不如PASCAL VOC同质,需要选择如何使用它。因为这些决策比较重大,我们在这一部分来讲述它。

4.1 Dataset overview

ILSVRC2013 detection数据集分为3部分:训练(395918),验证(20121)和测试(40152)。验证和测试集来自同一图片分布,它们和PASCAL VOC有类似的场景和相似的复杂度(物体数量,杂物数量,姿态变化性等)。验证测试集是尽力标注过的,即每张图片中的所有属于200个类的物体都被限位框标注了出来。而训练集与之相反,它是从ILSVRC 2013 classification数据中拿出来的。它们的图片中心有着各种朝向的物体,复杂度变化更多样。由于数量的问题,训练集并没有全力标注。任何训练集图片中的属于200个类的物体,都不一定被标注了出来。除了这些图片之外,每个类都有一个额外的负样本集。负样本由人工确认过不包含该类物体。本论文中没有使用负样本集。关于ILSVRC样本如何收集和标注的问题,请查阅[11,36]。

数据集划分的性质让训练R-CNN有了一些选择。训练集不能使用hard negative mining,因为标注并不完备。那么负样本从哪儿来?同样,训练图片和验证、测试集特性不一,到底该不该使用训练集?如果使用的话,用到何种程度?尽管我们没有尝试所有的选择,但我们基于先前的经验,提出来看起来最明显的方法。

我们的总体策略是大量依赖验证集,并把一些训练图片作为辅助正样本的来源。为了把验证集同时用作训练和验证,我们把它划分为大致相当数量的$val_1$和$val_2$。因为有些类在验证集中样本数量很少(最少的只有31个,超过一半的类样本少于110),产出一个类分布大致平衡的划分就很重要。为了实现这一点,我们生成了大量候选划分,选择了最大相对类失衡度(maximum relative imbalance)最小的那一个。每个候选划分生成如下:对验证集图片根据其类别数量作为特征进行聚类,再进行randomized local search,期望提升划分的平衡性。所选取的划分的相对不平衡最大值为11%,中位值为4%。样本划分和所用的代码将会公开,以供其它研究者比较。

4.2 Region proposals

我们用了和PASCAL detection同样的region proposal方法。在$val_1$,$val_2$和测试集上都使用的selective search的fast模式(训练集不是)。由于Selective search不具备缩放不变性,输出的regions数量与图片分辨率相关,因此做了一点修改。ILSVRC图片的大小不一,从很小到少数达到数百万像素的,因此我们在运行Selective search前,将每张图缩放到固定的宽(500像素)。在验证集上,Selective search平均在每张图上产出2403个region proposals,相比所有gt限位框,有着平均91.6%的召回率(0.5 IoU阈值)。相比PASCAL 98%的召回率低了不少,也说明在region proposals阶段还有很大提升空间。

4.3 Training data

我们的训练集一个图片和限位框的集合,里面有:所有$val_1$中的Selective search和gt限位框,以及训练集中每个类最多N个gt框(如果某个类在训练集中的gt框少于N,取所有的)。我们把这个数据集称为$val_1+train_N$。在消融测试(ablation study)中,我们展示了在$val_2$上不同的$N \in \{ 0,500,1000 \}$的mAP值(4.5部分)。

R-CNN如下三个流程需要训练样本:CNN调优,SVM检测器训练和限位框回归器训练。CNN调优阶段我们用了与PASCAL同样的设定,在$val_1+train_N$上运行了5万次SGD迭代。用Caffe在NVIDIA Tesla K20上调优用了13个小时。对于SVM训练,所有$val_1+train_N$中的gt框都用作对应类的正样本,并在$val_1$随机选出的5000张图片上进行hard negative mining。初始实验显示,使用5000张相比使用所有$val_1$样本进行negative mining,mAP只下降了0.5%,但训练时间缩短了一半。没有从训练集取负样本因为那里的标注不完备。没有使用额外的验证过的负训练样本集。限位框回归是在$val_1$上训练的。

4.4 Validation and evaluation

在将结果提交到评分服务器前,我们使用$val_2$数据集对我们数据使用选择,调优效果和限位框回归进行了验证。所有系统超参数(如SVM C超参数,region变形时padding的值,NMS阈值,限位框回归超参数)与PASCAL所用的一样。毫无疑问,有的超参数选择对于ILSVRC不是最优的,但我们工作目标是在ILSVRC上不进行昂贵的数据集调优的情况下,产出一个预训练的R-CNN。在$val_2$上选出最好的选择后,我们提交了两个结果,区别在于是否进行限位框回归。这些提交的SVM和限位框回归分别用了$val+train_{1k}$和$val$训练。CNN是在$val_1+train_{1k}$上调优的,避免了重复的调优和特征计算。

4.5 Ablation study

Alt text

表4是针对训练集、调优、限位框回归使用不同的数据集的效果。第一个结论是$val_2$的mAP与测试集十分接近。这给了我们使用$val_2$作为验证集的自信。第一个结果20.9%是一个用在ILSVRC2012 classification数据集预训练(未调优)的CNN的R-CNN获得的,它能使用少量的$val_1$样本作为训练(回忆$val_1$中半数类只有15到55个样本)。将训练集扩展到$val_1+train_{N}$让得分提高到24.1%,N是500还是1000本质上没有区别。用$val_1$的样本对CNN进行调优让结果来到了26.5%,不过因为正训练样本过少,这有点过拟合的样子。将调优训练集扩展到$val_1+train_{1k}$,也就是为每个训练集中的类增加了1000个来自train的正样本,将mAP显著地提高到了29.7%。限位框回归将结果提升到31.0%,相对于在PASCAL上观察到的提升要小。

4.6 Relationship to OverFeat

R-CNN和OverFeat关系很有趣:OverFeat可以看做(粗略的)一种R-CNN的特例。如果将Selective search替换为multi-scale pyramid of regular square regions,并将逐类的限位框回归换为一个限位框回归器,那么它们就很像了。值得一提的是OverFeat相对R-CNN有显著的速度优势:快了9倍,每2秒处理一张图片。快速产生自它的滑动窗口没有在图片层面变形,因此重叠的窗口计算很容易共享。共享是通过在整个网络中对任意大小的输入以卷积的形式实现的。对R-CNN的提速也有多种方法,需要未来完成。

5. Semantic Segmentation

region分类是Semantic Segmentation的一个标准技术,因此我们很容易地将R-CNN应用到了PASCAL VOC Segmentation竞赛。为了更好地与最前沿Semantic Segmentation系统(second-order pooling 称为 $O_2P$)进行比较,我们在他们的开源框架中工作。$O_2P$使用CPMC来为每张图片生成150个region proposal,并用支持向量回归SVR来预测每个region在每个类别上的质量。他们系统的高性能来自CPMC regions的质量以及对于多个特征类型的强有力的second-order pooling(SIFT和LBP的强化变种)。我们也提到了Farabet近期演示的使用CNN作为多范围逐像素的分类器在多个密集场景标注数据集(不包括PASCAL)上的良好结果。

我们按照[2,4]并用Hariharan提供的额外标注$^{[22]}$扩展了PASCAL segmentation训练集。在VOC 2011验证集上交叉验证了设计决策和超参数。最终结果只提交了一次。

CNN features for segmentation 我们评估了计算CPMC region特征的三种策略,每一个都会先将region周围的方形窗口变形为227227。第一个策略(full)忽略了region的形状并直接在变形后的窗口计算CNN特征,正如我们为detection任务做的那样。但是这些特征忽略了region的非矩形形状。两个有着极相似的限位框的region也许只有少量重叠。所以,第二个策略(fg)只在一个region的foreground mask上计算CNN特征。我们将背景替换为输入的均值,这样在减去均值后背景region均为0。第三个策略(full+fg*)简单地连接了前两个特征,我们的实验验证了它们的互补性。

Results on VOC 2011 表5是我们在VOC 2011验证集上与$O_2P$的结果比较总结(附录E是完整的逐类结果)。在所有的特征计算策略中,$fc_6$都胜过$fc_7$,因此后续讨论都指的是$fc_6$特征。fg策略稍微胜过full,说明mask之后的region shape提供了更强的信号,符合了我们的预期。不过full+fg得到了47.9%的准确率,说明full的特征提供的上下文环境是有很高信息量的。值得一提的是,在单核上用我们的full+fg特征训练20个SVR只需一个小时,而在$O_2P$特征上需要10+小时。

Alt text

表6是我们在VOC 2011测试集上,把我们最好的方法$fc_6(full+fg)$与两个强基线的对比结果。我们的方法在21个种类中的11个都得分最高,以及最高的全类准确率47.9%。看起来通过调优还能获得更佳的性能。

Alt text

6. Conclusion

近年,物体检测性能停滞不前。成绩最佳的方法是将多个低级图像特征和高级环境结合的复杂组合系统。在本论文中,我们提出了一个简单、可扩展的检测算法,相对于VOC 2012的最好成绩,将均值平均精度(mean average precision——mAP)提升了30%多。
我们通过两个创新点来达到了这一性能。首先是使用高容量的CNN(ConvNet)对 region proposals 计算 feature vectors。从经验驱动特征(SIFT、HOG)到数据驱动特征(CNN feature map),提高特征对样本的表示能力。采用大样本下(ILSVRC)有监督预训练和小样本(PASCAL)微调(fine-tuning)的方法解决小样本难以训练甚至过拟合等问题。我们推测这一“监督预训练/领域调优”方法会对很对缺乏数据的视觉问题很有效。

附录

A. Object proposal transformations

本论文使用的CNN需要固定大小227*227的输入。对于检测任务,我们认为物体候选区域是任意大小的图片矩形。我们考察了两个将物体候选变形为CNN输入的方法。

  1. 第一个(带上下文的最紧框)方法是将每个物体候选框在一个最紧的矩形里,再缩放到CNN所需尺寸。图7中的B列即是这种变形。一个变体(不带上下文的最紧框)去除了围绕在原始物体候选周围的上下文,在图7中的C列。
  2. 第二个方法是各向异向变形anisotropically scale。在图7的D列

在每个转换方法,我们都考虑引入原始候选周围的图片上下文。填充的数量P指额外引入的数量。图7在每个样本的第一行是p = 0的情况,底部行是p = 16像素。在所有方法里,如果对原始矩形的扩展超出了图片范围,则缺失数据用图片均值代替(在输入CNN被减去均值之前)。一系列实验显示上下文填充(p = 16像素)的异向变形超过其他方法一大截(3~5%mAP)。当然还有更多可能的方法,包括用平均扩展mean padding代替。这些工作留作未来进行。

Alt text

B. Positive vs. negative examples and softmax

未来的讨论基于两个设计选择。第一个是:为何在CNN调优阶段和训练物体检测SVM时正负样本定义不一致?让我们简短回顾下定义,对于调优阶段,我们为每一个gt找到其IoU最高的region proposals,如果IoU大于等于0.5,将gt对应的类标注为正。所有其它的region标注为背景。在训练SVM时,我们只取gt所对应的类作为正样本,并把一个和某类所有对象的IoU小于0.3的proposal标注为那个类的负样本。其余的都忽略。

从历史上说,因为我们从基于ImageNet预训练的CNN计算出的特征来训练SVM开始的,所以调优在那个时候还没被考虑,所以我们才这样定义的。在那样的设置下,我们发现在一系列选项(包括现在用于调优的定义)下,我们标注SVM训练集的定义是最优的。当我们开始进行调优时,一开始也用的同样定义。但是我们发现结果比当前的定义的结果要差得多。

我们的猜想是正负样本定义的区别从根本上来说不重要,然而当调优数据有限时,它就浮现出来了。当前我们的方案是引入很多“抖动jittered”样本(有着0.5到1之间的IoU的proposal,但不是gt的),将正样本的数量扩展到了近30倍。我们推测为了防止调优网络时过拟合,需要这样大量的样本。不过我们也注意到这些抖动样本似乎是次优的,因为网络不是在精确的定位下调优的。

这就引出了第二个问题:到底为何要在调优后再训练SVM?也许简单地用调优后的网络最后一层,一个21路的softmax regression classifier,作为物体检测器更加简洁。我们尝试过,但在VOC 2007上,mAP从54.2%掉到了50.9%。性能下降似乎是由多个因素组合导致的。包括调优使用的正样本定义没有重点精确定位,softmax分类器是用随机抽样的负样本训练而不是像SVM使用的那样,使用的hard negatives的一个子集。

这些结果说明不用在调优后训练一个SVM,也有机会获得相近水平的性能。我们猜测,如果再额外压榨调优的潜能,现存的性能差距也许会变小。如果这是事实,那就可以在不损失检测性能的前提下,简化并加速R-CNN训练了。

C. Bounding-box regression

我们用了一个简单的限位框回归来提升定位性能。在对每一个Selective search proposal用类相关的SVM评分后,我们使用一个类相关的限位框回归器为这个检测预测一个新的限位框。这有点神似deformable part models使用的限位框回归。两个方法的主要区别是我们是基于CNN提取的特征进行回归,而不是基于DPM part location提取的几何特征。

训练算法的输入是一个N个训练对的集合$\{ (P^i,G^i)\}_{i=1,…,N}$,其中$P^i=(P^i_x,P^i_y,P^i_w,P^i_h)$对应proposal$P^i$的限位框中心坐标和其长宽。往后非必要时我们将不再标注上标i。每一个gt限位框G也是同样定义的:$G=(G_x,G_y,G_w,G_h)$。我们的目标是训练出一个变换来将proposal限位框P映射为gt限位框G。

我们把变换参数化为4个函数:$d_x(P),d_y(P),d_w(P),d_h(P)$
。前两个函数是对P的限位框中心的缩放不变性的变换。后两个函数是对限位框宽高的log-space变换。在训练这些函数后,我们能通过如下变换,将输入的proposal P映射为gt框$\hat{G}$:

每个函数$d_{\star}(P)$($\star$是x,y,w,h其中之一)建模为一个proposal P的$pool_5$特征的线性函数,标记为$ \phi_5(P)$。($ \phi_5(P)$对图片数据的依赖隐式地指定了)所以我们有了$d_{\star}(P) = W^T_{\star} \phi_5(P)$,其中$w_{\star}$是一个可训练的模型参数向量。我们通过优化正则化最小平方目标regularized least squares objective(ridge regression脊回归)来训练它。

训练对(P, G)的回归目标$t_{\star}$定义如下:

作为一个标准regularized least squares问题,它可以高效地用闭型解决。

我们在实现限位框回归时发现了两个微妙的问题。第一个是正则化非常重要:在验证集上,我们让$\lambda = 1000$。第二是在选择用哪对(P,G)时一定要小心。直观地说,如果P远离所有gt框,那么将P变换为G的任务就没有意义。用像P一样的样本会让训练毫无希望。因此,我们只从至少靠近一个gt框的proposal P中训练。我们用P和gt框G的IoU的值来定义“远近”,当且仅当IoU大于一个阈值时(在验证集我们设置为0.6)。所有未赋值的proposal都被丢弃。我们对每个物体类都进行一遍,得到逐类的限位框回归器。

在测试时,我们只对每个proposal评分并预测一次新检测窗口。从原理上讲,我们可以迭代这个流程(如,对新预测的限位框打分,再从它预测一个新的限位框)。不过,我们发现迭代对于结果并没有提升。

D. Additional feature visualizations

图12 显示了所有的20个$pool_5$单元
的可视化结果。每个单元我们显示了24个激活值最大的region proposal(从VOC 2007测试集近100亿个region中选出)。

我们用单元在6*6*256维的$pool_5$feature map中的坐标(y, x, channel)标注每个单元。在每个channel中,CNN的计算函数一致,变化的仅仅是(y, x)坐标对应的感受野。

E. Per-category segmentation results

表7中我们显示了VOC 2011 验证集中我们6个分割方法各自的逐类准确率,加入了$O_2P$方法的结果作为比较。结果显示了在20个类别和背景类中哪个方法表现最好。
Alt text

F. Analysis of cross-dataset redundancy

在额外的数据集训练时的一个顾虑是,在其中也许有和测试集的冗余。尽管物体检测和整图分类任务区别很大,让这种跨数据集冗余的没那么令人担心,我们仍然进行了对冗余图像的定量研究。我们的研究也许会对打算使用ILSVRC 2012用作PASCAL图片分类任务的训练集的人有帮助。

我们对重复(近重复)的图片进行了两个检测。第一个是基于flickr图片id的完整匹配,它在VOC 2007标注中包含了。所有PASCAL图片,半数的ILSVRC都收集自flickr.com。这一检查从4952张中找出了31个匹配的(0.63%)。

第二个检测是利用GIST描述符匹配,它被证明$^{[13]}$在大图片集(大于10亿)中对于近似图片检测有着非常好的效果。我们对所有ILSVRC 2012训练验证集和PASCAL 2007测试图片的32*32变形版本计算了GIST描述符。

对GIST描述符的欧几里得距离最近邻匹配找出了38个相近图片(包括了所有通过flickr ID匹配找到的31个)。这一匹配在JPEG压缩等级和分辨率不同时有轻微区别。这些发现说明数据集交叠很小,低于1%。对于VOC 2012,由于没有了id,我们是用来GIST匹配,找到了1.5%的重复。

Alt text

Alt text

Alt text

Alt text