《Rich feature hierarchies for accurate object detection and semantic segmentation》
链接地址
发表会议: CVPR
Ross Girshick Jeff Donahue Trevor Darrell Jitendra Malik
UC Berkeley
Abstract:
在canonical PASCAL VOC数据集上测量的对象检测性能在过去几年中趋于稳定。性能最好的方法是复杂的集成系统,它通常将多个低级图像特征与高级上下文组合在一起。在本文中,我们提出了一种简单的、可扩展的检测算法,使得平均平均精度(mAP)比之前VOC 的最佳检测结果提高了30%以上,达到了53.3%的检测结果。我们的方法结合了两个关键的见解:(1),可以一次将高容量应用卷积神经网络(cnn)自下而上的地区建议为了定位和细分对象和(2)标记的训练数据稀缺时,监督为辅助训练的任务,其次是特定于域的微调,收益率显著的性能提升。由于我们将区域建议与CNNs相结合,我们将我们的方法称为R-CNN:具有CNN特征的区域。我们还将R-CNN与OverFeat进行了比较,后者是最近提出的一种基于类似CNN架构的滑动窗口检测器。我们发现,R-CNN在200类ILSVRC检测数据集上的性能大大优于OverFeat。完整的系统的源代码可以在http://www.cs.berkeley.edu/~rbg/rcnn。
1. Introduction:
功能问题。在过去的十年中,各种视觉识别任务的进展很大程度上是基于SIFT[29]和HOG[7]的使用。但是,如果我们看一下典型的视觉识别任务(PASCAL VOC对象检测[15])的性能,就会发现,在至期间,进展一直比较缓慢,通过构建集成系统和采用成功方法的小变体获得的进展很小。SIFT和HOG是块状定位直方图,我们可以将其与V1中的复杂细胞大致联系起来,V1是灵长类视觉通路的第一个皮层区域。但我们也知道,识别发生在下游的几个阶段,这表明可能有分级的,多阶段的过程,为计算特征,甚至是更多的信息,为视觉识别。
福岛的“新认知”[19],一个受生物启发的层次结构和移不变模式识别模型,就是这样一个过程的早期尝试。然而,neocognitron缺乏监督训练算法。基于Rumelhart等人的[33],LeCun等人的[26]证明了反向传播的随机梯度下降法对于训练卷积神经网络(CNNs)是有效的,这是一类扩展新认知元的模型
图1:对象检测系统概述。我们的系统(1)采用一个输入图像,(2)提取大约2000个自底向上的区域建议,(3)使用一个大的卷积神经网络(CNN)计算每个建议的特征,然后(4)使用类特定的线性支持向量机对每个区域进行分类。R-CNN在PASCAL VOC 上的平均精度(mAP)达到了53.7%。作为比较,[39]报告35.1%的地图使用了相同的区域建议,但是采用了空间金字塔和袋装可视化文字的方法。流行的可变形零件模型的性能为33.4%。在200类ILSVRC检测数据集上,R-CNN的mAP为31.4%,比之前最好的结果为24.3%的[34]有了很大的改善。
CNNs在20世纪90年代被大量使用(如[27]),但随着支持向量机的兴起,它就不再流行了,特别是在计算机视觉领域。,Krizhevsky等人[25]通过在ImageNet大尺度视觉识别挑战(ILSVRC)中表现出更高的图像分类精度,重新点燃了人们对CNNs的兴趣[9,10]。他们的成功源于对120万张标记图像的大型CNN的训练,以及对LeCun的CNN的一些扭转(例如,max(x,0)校正非线性和“dropout”正则化)。
ImageNet结果的重要性在ILSVRC研讨会上得到了激烈的讨论。核心问题可以归结为以下几个方面:ImageNet上的CNN分类结果在多大程度上可以推广到PASCAL VOC Challenge上的对象检测结果?
我们通过弥合图像分类和目标检测之间的差距,果断地回答了这个问题。本文首次表明,与基于更简单的类猪特征的系统相比,CNN可以显著提高PASCAL VOC上的目标检测性能。实现这一结果需要解决两个问题:用深度网络定位目标和用少量带注释的检测数据训练高容量模型。
与图像分类不同,检测需要在图像中定位(可能有很多)对象。一种方法将本地化定义为一个回归问题。然而,Szegedy et al.[38]等人的研究表明,这种方法在实际应用中可能效果不佳(他们报告的VOC含量为30.5%,而我们的方法仅为58.5%)。另一种方法是构建一个滑动窗口检测器。CNNs已经以这种方式使用了至少,通常用于约束对象类别,如人脸[32,40]和行人[35]。为了保持较高的空间分辨率,这些cnn通常只有两个卷积和池化层。我们还考虑采用滑动窗口方法。然而,在我们的网络中,有五个卷积层,接收域非常大(195×195像素),输入图像的步长(32×32像素),这使得在滑动窗口范例中的精确定位成为一个开放的技术挑战。
相反,我们通过在“区域识别”范式[21]中操作来解决CNN定位问题,该范式在对象检测[39]和语义分割[5]两方面都取得了成功。在测试时,我们的方法为输入图像生成大约2000个类别无关的区域建议,使用CNN从每个建议中提取一个固定长度的特征向量,然后使用类别特定的线性支持向量机对每个区域进行分类。我们使用一种简单的技术(仿射图像扭曲)来计算每个区域提议的固定大小的CNN输入,而不考虑区域的形状。图1概述了我们的方法,并突出显示了我们的一些结果。由于我们的系统将区域建议与CNN相结合,所以我们将此方法称为R-CNN:区域与CNN特征相结合。
在本文的更新版本中,我们通过在200类ILSVRC检测数据集上运行R-CNN,对R-CNN和最近提出的超壮举[34]检测系统进行了面对面的比较。OverFeat使用滑动窗口CNN进行检测,是目前ILSVRC检测中表现最好的方法。我们发现R-CNN的表现明显好于OverFeat,比例分别为31.4%和24.3%。
检测面临的第二个挑战是标记数据稀缺,目前可用的数量不足以训练一个大型CNN。这个问题的传统解决方案是使用无监督的预培训,然后进行监督微调(例如,[35])。本文的第二个主要贡献是证明了在一个大的辅助数据集(ILSVRC分类)上的有监督的预训练是在数据缺乏的情况下学习大容量CNNs的有效范例。在我们的实验中,检测的微调将地图性能提高了8个百分点。经过微调后,我们的系统在VOC 上的mAP为54%,而在高度调谐的、基于hogb的可变形部件模型(DPM)上为33%[17,20]。
我们的系统也相当高效。唯一的类特定计算是一个合理的小矩阵向量积和贪婪非最大抑制。这个计算特性来自于所有类别中共享的特性,并且这些特性的维数比以前使用的区域特性低两个数量级(cf.[39])。
类hog特性的一个优点是简单:更容易理解它们携带的信息(尽管[41]表明我们的直觉可能会让我们失望)。我们能深入了解CNN的表现方式吗?也许这些有着超过5400万个参数的紧密连接的层才是关键?他们不是。我们对CNN进行了“前脑叶白质切除术”,发现其参数中有相当大的比例(94%)可以被移除,而检测准确度只有中等程度的下降。相反,通过探测网络中的单元,我们可以看到卷积层学习了一组丰富的特性(图4)。
了解我们的方法的失效模式对改进它也至关重要,因此我们报告来自Hoiem等人的检测分析工具的结果。作为这种分析的直接结果,我们证明了一个简单的边界盒回归方法可以显著地减少错误定位,而错误定位是主要的错误模式。
在开发技术细节之前,我们发现由于R-CNN对区域进行操作,所以很自然地将其扩展到语义分割的任务中。通过小的修改,我们在PASCAL VOC的分割任务上也取得了有竞争力的结果,在VOC 测试集上平均分割准确率达到47.9%。
2. Object detection with R-CNN:
我们的目标检测系统由三个模块组成。第一个生成分类独立的区域建议。
1 .在同期的工作中,[12]显示,Krizhevsky等人的CNN在ImageNet上训练,能够很好地概括大范围的数据集和识别任务,包括场景分类、细粒度子分类和域适应。
这些建议定义了我们的探测器可用的候选检测集。第二个模块是一个大型的卷积神经网络,它从每个区域提取一个固定长度的特征向量。第三个模块是一组特定于类的线性支持向量机。在本节中,我们将介绍每个模块的设计决策,描述它们的测试时间使用情况,详细说明如何学习它们的参数,并在PASCAL VOC -12和ILSVRC上显示检测结果。
2.1. Module design:
地区的建议。最近的许多论文提供了生成分类独立的区域建议的方法。例如:客观的[1],选择性搜索[39],分类独立的对象建议[14],约束参数最小切割(CPMC)[5],多尺度组合分组[3],以及Cires an等人的[6],他们通过将CNN应用于规则间隔的方形作物来检测有丝分裂细胞,这是区域建议的一个特例。虽然R-CNN对特定的区域建议方法是不可知的,但是我们使用选择性搜索来与之前的检测工作进行受控比较(例如,[39,42])。
特征提取。我们使用Krizhevsky等人描述的CNN的Caffe[24]实现,从每个区域提案中提取4096维的特征向量。通过5个卷积层和2个全连通层,将一个均数减去227×227的RGB图像向前传播,计算特征。我们建议读者参考[24,25]以获得更多的网络架构细节。
为了计算区域建议的特征,我们必须首先将该区域的图像数据转换成与CNN兼容的形式(其架构需要固定的227×227像素大小的输入)。在任意形状区域的许多可能的转换中,我们选择最简单的。不管候选区域的大小或长宽比如何,我们都会将它周围的所有像素弯曲成所需的大小。在进行翘曲之前,我们扩展了紧边界框,这样在翘曲大小处,原始框周围正好有p个翘曲图像上下文像素(我们使用p = 16)。图2显示了扭曲训练区域的随机抽样。在附录A中讨论了翘曲的替代方法。
2.2. Test-time detection:
在测试时,我们对测试图像进行选择性搜索,以提取出大约2000个区域建议(我们在所有实验中都使用了选择性搜索的“快速模式”)。为了计算特征,我们对每个提议进行变形,并通过CNN进行传播。然后,对于每个类,我们使用针对该类训练的SVM对每个提取的特征向量进行评分。给定图像中所有得分区域,我们应用一个贪婪的非最大抑制(对每个类独立地),如果一个区域有一个相交-过并集(IoU)与一个高于学习阈值的得分较高的选定区域重叠,则该区域拒绝该区域
运行时分析。两个特性使检测变得高效。首先,所有CNN参数在所有类别中共享。其次,与其他常用的方法(如带有视觉词汇编码的空间金字塔)相比,CNN计算的特征向量是低维的。例如,在UVA探测系统[39]中使用的特征比我们的要大两个数量级(360k比4k维)。
这种共享的结果是,计算区域建议和功能(GPU上的13s/图像或CPU上的53s/图像)所花费的时间被分摊到所有类上。唯一的类特定计算是特征和SVM权值之间的点积和非最大抑制。在实践中,图像的所有点积都被批量化为单个矩阵-矩阵乘积。特征矩阵一般为2000×4096,支持向量机权矩阵为4096×N,其中N为类数
这个分析表明,R-CNN可以扩展到数千个对象类,而不需要使用类似哈希这样的近似技术。即使有100k个类,在现代多核CPU上得到的矩阵乘法也只需要10秒。这种效率不仅仅是使用区域建议和共享特性的结果。UVA系统,由于它的高维特性,将会慢两个数量级,同时需要134GB的内存来存储100k的线性预测器,相比之下,我们的低维特性只需要1.5GB。
将R-CNN与Dean等人最近关于使用DPMs和散列[8]进行可伸缩检测的工作进行对比也很有趣。他们报告说,在引入10k干扰类时,每张图的运行时间为5分钟,VOC 的地图约为16%。使用我们的方法,10k检测器可以在一分钟内在CPU上运行,因为没有进行近似,所以mAP将保持在59%(第3.2节)。
2.3. Training:
监督训练。我们在一个大的辅助数据集(ILSVRC分类)上对CNN进行了有区别的预训练,仅使用图像级注释(此数据不提供boundingbox标签)。使用开源的CNN图书馆[24]进行预培训。简而言之,我们的CNN几乎与Krizhevsky等人的[25]的表现相匹配,在ILSVRC分类3验证集上获得了最高的错误率2.2个百分点。这种差异是由于在训练过程中进行了简化。
特定领域的微调。为了使我们的CNN适应新的任务(检测)和新的领域(弯曲建议窗口),我们继续使用仅仅弯曲区域建议的CNN参数的随机梯度下降(SGD)训练。除了将CNN的ImageNetspecific 1000-way classification layer替换为一个随机初始化的(N + 1)-way classification layer(其中N是对象类的数量,加上1作为背景)之外,CNN的架构没有改变。VOC N = 20, ILSVRC N = 200。我们将所有IoU≥0.5的区域建议与地面真值框重叠作为该框类的积极因素,其余为消极因素。我们以0.001的学习率(初始训练前率的1/10)开始SGD,这允许进行微调,同时不影响初始化。在每个SGD迭代中,我们统一采样32个正窗口(在所有类上)和96个后台窗口,以构建一个大小为128的小批。我们倾向于正窗口的抽样,因为与背景相比,它们是非常罕见的。
对象的类别分类器。考虑训练一个二进制分类器来检测车辆。很明显,一个紧密包围汽车的图像区域应该是一个积极的例子。同样,很明显,与汽车无关的背景区域应该是一个负面例子。不太清楚的是如何标记部分与汽车重叠的区域。我们用IoU重叠阈值来解决这个问题,低于这个阈值的区域被定义为负值。重叠阈值0.3是通过对{0,0.1,…我们发现仔细选择这个阈值是很重要的。将其设置为0.5,就像在[39]中一样,将mAP减少5个点。类似地,将其设置为0会使mAP减少4个点。积极的例子被简单地定义为每个类的ground-truth边界框。
一旦特征提取和训练标签的应用,我们优化一个线性支持向量机每类。由于训练数据量太大,无法在内存中拟合,我们采用标准的硬负挖掘方法[17,37]。硬负挖掘收敛快,在实践中地图停止增加后,只有一个单一的通过所有的图像。
在附录B中,我们讨论了为什么在微调和支持向量机训练中定义正例和反例是不同的。我们还讨论了为什么有必要训练检测分类器,而不是简单地使用经过微调的CNN的最后一层(fc8)的输出。
2.4. Results on PASCAL VOC -12:
遵循PASCAL VOC的最佳实践[15],我们在VOC 数据集上验证了所有的设计决策和超参数(第3.2节)。对于VOC -12数据集的最终结果,我们对VOC 训练的CNN进行了微调,并对VOC 训练的SVMs进行了优化。对于两个主要的算法变体,我们只向评估服务器提交了一次测试结果(包含和不包含边界框回归)。
表1显示了VOC 的完整结果。我们将我们的方法与四种强基线进行比较,包括SegDPM[18],它将DPM检测器与一个语义分割系统[4]的输出相结合,并使用额外的检测器间上下文和图像分类器重新取心。最接近的比较是来自Uijlings等人[39]的UVA系统,因为我们的系统使用相同的区域建议算法。为了对区域进行分类,他们的方法构建了一个四层的空间金字塔,并使用密集采样的SIFT、扩展的反对者SIFT和RGBSIFT描述符对其进行填充,每个矢量用4000字的码本进行量化。采用直方图交核SVM进行分类。与它们的多特征、非线性核支持向量机方法相比,我们在mAP上取得了很大的改进,从35.1%提高到了53.7%,同时也快了很多(2.2节)。我们的方法在VOC /12测试中取得了相似的性能(53.3% mAP)。
2.5. Results on ILSVRC detection:
我们使用与PASCAL VOC相同的系统超参数对200级ILSVRC检测数据集运行R-CNN。我们遵循相同的协议,只向ILSVRC评估服务器提交了两次测试结果,一次带有和一次没有绑定盒回归。
图3将R-CNN与ILSVRC竞赛的参赛作品以及赛后的优胜成绩[34]进行了比较。R-CNN获得了31.4%的地图,远远超过了OverFeat获得的24.3%的第二好结果。为了更好地理解类之间的AP分布,本文还提供了箱形图,表7中给出了一个perclass APs表。大多数参赛作品(OverFeat、NEC-MU、UvAEuvision、Toronto A和UIUC-IFP)都使用了卷积神经网络,这表明CNNs在如何应用于目标检测方面存在显著的细微差别,从而导致了结果的巨大差异。
在第4节中,我们给出了ILSVRC检测数据集的概述,并提供了关于我们在其上运行R-CNN时所做选择的详细信息。
3. Visualization, ablation, and modes of error:
3.1. Visualizing learned features:
第一层过滤器可以直接可视化,很容易理解[25]。它们捕捉有方向的边缘和对手的颜色。理解后续的层更具挑战性。在[43]中,Zeiler和Fergus提供了一种视觉上有吸引力的反容量方法。我们提出一个简单的(和互补的)非参数方法,直接显示网络学习的内容。
表1:VOC检测平均精度(%)R-CNN是最直接可比的紫外线A和区域,因为所有的方法使用选择性搜索区域的建议。包围盒回归(BB)在c节中进行了描述。在发表时,SegDPM在PASCAL VOC排行榜中表现最好。†DPM和SegDPM使用上下文重取,其他方法不使用。
图3:(左)ILSVRC检测测试集的平均精度。*之前的方法使用外部训练数据(在所有情况下都使用来自ILSVRC分类数据集的图像和标签)。(右)每个方法200个平均精度值的箱形图。比赛后的超壮举结果的方框图没有显示出来,因为每个类的ap还没有提供(R-CNN的每个类的ap在表7中,也包含在上传到的技术报告源中;见R-CNN-ILSVRC-APs.txt)。红线表示AP的中位数,框底和框顶分别是第25和第75个百分位。晶须延伸到每种方法的最小AP和最大AP。每个AP都被绘制为胡须上的一个绿色点(使用缩放技术观看效果最佳)。
图4:6个pool5单元的顶部区域。接受域和激活值用白色表示。一些单元与概念对齐,如人(第一行)或文本(第4行)。其他单元捕获纹理和材料属性,如点阵列(第2行)和镜面反射(第6行)。
表2:VOC检测平均精度(%)。第1-3行显示R-CNN的性能,没有进行微调。第4-6行显示了CNN在ILSVRC 上的预训练结果,然后在VOC trainval上进行了微调(FT)。第7行包括一个简单的边界框回归(BB)阶段,它减少了定位错误(C部分)。第一个只使用HOG,而后面两个使用不同的特性学习方法来扩充或取代HOG。
其思想是在网络中挑出一个特定的单元(特性),并把它当作一个独立的对象检测器来使用。也就是说,我们计算单位的激活在一个大的区域提议集合上(大约1000万),从最高的提议到最低的激活排序,执行非最大的抑制,然后显示得分最高的区域。我们的方法让选择的单元“自己说话”,准确地显示它触发哪个输入。我们避免平均,以看到不同的视觉模式,并深入了解单位计算的不变性。
我们可视化来自layer pool5的单元,它是网络的第五个也是最后一个卷积层的maxpooling输出。pool5feature map为6×6×256 = 9216维。忽略边界效应,在原始的227×227像素输入中,每个pool5单元的接受域为195×195像素。泳池中央的一个单元几乎可以看到整个泳池,而靠近泳池边缘的一个单元则有一个更小的、修剪过的支撑物。
图4中的每一行显示了我们在VOC trainval上进行了微调的CNN的pool5单元的前16个激活。256个功能独特的单元中有6个是可视化的(附录D包括更多)。选择这些单元是为了展示网络学习的代表性样本。在第二行,我们看到一个单位,火灾的狗脸和dotarrays。第三行对应的单元是一个红色斑点探测器。还有人脸探测器,以及更抽象的图案,如文本和带有窗户的三角形结构。该网络似乎学习了一种表示方法,该方法将少量的类调优特性与形状、纹理、颜色和材料属性的分布式表示结合在一起。随后的全连接层fc6有能力对这些丰富特性的大量组合进行建模。
3.2. Ablation studies:
逐层性能,无需微调。为了了解哪些层对检测性能至关重要,我们分析了VOC 数据集上CNN最后三层的结果。第3.1节简要描述了层池5。最后两层总结如下。
层fc6完全连接到pool5。为了计算特征,它将一个4096×9216的权重矩阵乘以pool5特征图(以9216维向量的形式重新构造),然后添加一个偏差向量。该中间向量分段半波整流(x←max(0, x))。
fc7层是网络的最后一层。它是通过将fc6计算得到的特征乘以4096×4096的权矩阵来实现的,类似地添加一个偏置向量并应用半波整流。
我们从查看CNN的结果开始,没有对PASCAL进行微调,即所有CNN参数都只在ILSVRC 上进行了预训练。逐层分析性能(表2第1-3行)发现,fc7中的特性泛化得比fc6中的更差。这意味着29%,也就是大约1680万的CNN参数可以在不影响mAP的情况下被移除。更令人惊讶的是,删除fc7和fc6会产生非常好的结果,尽管pool5功能仅使用CNN参数的6%进行计算。CNN的大部分代表性力量来自于它的卷积层,而不是更大的密集连接层。这一发现表明,仅使用CNN的卷积层,在计算任意大小图像的稠密特征图(HOG意义上)方面具有潜在的实用价值。这种表现将使实验与滑动窗口探测器,包括DPM,在上面的pool5features。
性能逐层,微调。我们现在看一下我们的CNN在VOC 训练中调整参数后的结果。改进是显著的(表2行4-6):微调增加了8.0个百分点,达到54.2%。与pool5相比,fc6和fc7的微调带来的提升要大得多,这表明从ImageNet学习到的pool5特性是通用的,而大部分改进是通过在它们之上学习6个领域特定的非线性分类器获得的。
与当前特征学习方法的比较。相对较少的特征学习方法被用于PASCAL VOC的检测。我们来看看最近两种建立在可变形零件模型上的方法。作为参考,我们还包括了标准的hogbased DPM[20]的结果。
第一个DPM特征学习方法,DPM ST[28],用“草图标记”概率的直方图来增强HOG特征。直观地说,一个草图标记是一个紧密分布的等高线通过一个图像补丁的中心。草图令牌概率由一个随机森林计算每个像素,该森林经过训练,将35×35像素的patch分类为150个草图令牌或背景中的一个。
第二种方法,DPM HSC[31],用稀疏编码(HSC)的直方图代替HOG。为了计算HSC,使用100个7×7像素(灰度)原子的学习型字典在每个像素处求解稀疏编码激活。由此产生的激活是用三种方法来纠正(完整和half-waves),空间汇集、单元的2归一化,然后能力转换(x) | x (x←标志|α)。
所有的R-CNN变体都比三个DPM基线(表2行8-10)表现得更好,包括两个使用特征学习的。与只使用HOG特性的最新版本DPM相比,我们的地图提高了20个百分点以上:54.2% vs. 33.3%—相对提高了61%。HOG和sketch令牌的组合仅比HOG多出2.5个映射点,而HSC比HOG多出4个映射点(在内部与它们的私有DPM基线相比较时——两者都使用了DPM的非公共实现,其性能低于开源版本[20])。这些方法的map分别为29.1%和34.3%。
3.3. Detection error analysis:
我们应用了Hoiem等人的优秀检测分析工具[23]来揭示我们的方法的错误模式,了解微调如何改变它们,并查看我们的错误类型与DPM的比较。对分析工具的完整总结超出了本文的范围,我们鼓励读者参考[23]以理解一些更详细的细节(如“规范化AP”)。由于分析最好在相关情节的上下文中进行,所以我们在图5和图6的标题中进行了讨论。
3.4. Bounding-box regression:
在误差分析的基础上,实现了一种减少定位误差的简单方法。受DPM[17]中使用的边界盒回归的启发,我们训练了一个线性回归模型来预测一个新的检测窗口,该窗口给定了一个选择性搜索区域的5个特征。完整的细节在附录c中给出。表1、表2和图5中的结果显示了这种简单的方法修正了大量的定位错误,地图提升3到4点
3.5. Qualitative results:
本文最后对ILSVRC的定性检测结果如图8和图9所示。每个图像从val2set中随机采样,所有检测精度大于0.5的检测器都显示出来。请注意,这些都不是策划的,并给出了探测器实际运行的真实印象。图10和图11给出了更多定性结果,但这些结果都是经过策划的。我们选择每一张图片,因为它包含有趣的、令人惊讶的或有趣的结果。这里还显示了精度大于0.5的所有检测结果。
4. The ILSVRC detection dataset:
在第2节中,我们展示了ILSVRC检测数据集的结果。这个数据集的同构性不如PASCAL VOC,需要选择如何使用它。由于这些决策非常重要,所以我们将在本节中讨论它们。
图6:对对象特征的敏感性。每个图显示了在6个不同对象特征(遮挡、截断、边界盒区域、长宽比、视点、部分可见性)内执行最高和最低的子集的平均值(类上)规范化AP(参见[23])。我们为我们的方法(R-CNN)展示了带有和不带有微调(FT)、边界盒回归(BB)以及DPM voc-release5的图。总的来说,微调不会降低灵敏度(最大值和最小值之间的差异),但会显著改善几乎所有特性的最高和最低性能子集。这表明,微调不仅仅是简单地提高了性能最低的子集的长宽比和边界盒区域,这可能是一个基于我们如何扭曲网络输入的猜想。相反,微调改进了对所有特征的鲁棒性,包括遮挡、截断、视点和部分可见性。
4.1. Dataset overview:
ILSVRC检测数据集分为三个集合:train(395,918)、val(20,121)和test(40,152),其中每个集合中的图像数在括号中。val和test分划来自于相同的图像分布。这些图像与PASCAL VOC图像具有相似的场景和复杂性(对象的数量、杂乱程度、姿态可变性等)。val和test分隔符被详尽地注释,这意味着在每个图像中,来自所有200个类的所有实例都被用边界框标记。相比之下,该列车集是由ILSVRC分类图像分布绘制的。这些图像具有更可变的复杂性,并倾向于单一居中对象的图像。与val和test不同的是,列车图像(由于它们的数量很大)没有进行详尽的注释。在任何给定的火车映像中,来自200个类的实例可能被标记,也可能没有。除了这些图像集,每个类都有一组额外的负面图像。将手动检查负面映像,以验证它们是否包含关联类的任何实例。在这项工作中没有使用负像集。有关ILSVRC如何收集和注释的更多信息可以在[11,36]中找到。
这些分裂的性质为训练R-CNN提供了许多选择。火车图像不能用于硬负面挖掘,因为注释不是详尽的。负面例子从何而来?另外,列车图像的统计量与val和test的统计量不同。应该使用火车图像吗?如果应该,使用到什么程度?虽然我们还没有对大量的选择进行全面评估,但根据以往的经验,我们提出了似乎是最明显的选择。
我们的总体策略是严重依赖val集,并使用一些火车图像作为辅助来源的积极的例子。为了同时使用val进行培训和验证,我们将其大致分成大小相等的“val1”和“val2”集。因为有些类在val中很少有实例(最小的只有31个,一半的少于110个),所以生成一个近似类平衡的分区是很重要的。为了做到这一点,生成了大量的候选分割,并选择了最大相对阶级不平衡最小的分割。每一个候选分割是由val图像聚类生成的,使用它们的类计数作为特征,然后进行随机化的局部搜索,以改善分割平衡。这里使用的特定分割具有大约11%的最大相对不平衡和4%的中位数相对不平衡。val1/val2split和用于生成它们的代码将被公开,以允许其他研究人员在本报告中使用的val split上比较他们的方法。
4.2. Region proposals:
我们采用了与PASCAL上的检测相同的区域建议方法。选择性搜索[39]以“快速模式”运行在val1、val2中的每张图像上,并进行测试(但不运行在训练中的图像上)。一个小的修改是需要处理的事实,即选择性搜索不是规模不变的,因此产生的区域数量取决于图像的分辨率。ILSVRC图像的大小范围从非常小到几个百万像素,因此在运行选择性搜索之前,我们将每个图像的大小调整为一个固定的宽度(500像素)。在val上,选择性搜索的结果是每张图像平均有2403个区域建议,有91.6%的人回忆起所有的地面真实边界框(0.5 IoU阈值)。召回率明显低于帕斯卡,后者约为98%,表明在区域提案阶段有很大的改进空间。
4.3. Training data:
对于训练数据,我们形成了一组图像和方框,其中包括val1的所有选择性搜索和地面真相方框,以及每个至多N个地面真相方框来自train的类(如果一个类在train中有少于N个ground-truth盒子,那么我们将它们全部拿走)。我们将这个图像和方框的数据集称为val1+trainN。在消融研究中,我们对N∈{0,500,1000}在val2上显示mAP (Section 4.5)。
R-CNN需要三个步骤的训练数据:(1)CNN微调,(2)检测器SVM训练,(3)边界盒回归器训练。使用与PASCAL相同的设置,在val1+ trainn上对50k SGD迭代运行CNN微调。使用Caffe对一台NVIDIA Tesla K20进行微调需要13个小时。在支持向量机训练中,所有来自val1+trainN的ground-truth box都被作为各自类的正例。对随机选取的5000幅val1图像进行硬阴性挖掘。一项初步实验表明,与5000张图像子集(大约一半)相比,从val1的所有图像中挖掘负片只会导致mAP下降0.5个百分点,而SVM的训练时间则减少了一半。没有负面的例子,因为注释不是详尽的。没有使用额外的经过验证的负面图像集。对边界盒回归器进行val1训练。
4.4. Validation and evaluation:
在将结果提交给评估服务器之前,我们使用上面描述的训练数据验证了数据使用的选择以及微调和限制框回归对val2set的影响。所有系统超参数(如SVM C超参数、用于区域整经的填充、NMS阈值、边界盒回归超参数)都固定在PASCAL的相同值上。毫无疑问,其中一些超参数的选择对于ILSVRC来说是稍微次优的,但是这项工作的目标是在ILSVRC上产生一个初步的R-CNN结果,而不需要大量的数据集调优。在选择了val2上的最佳选项之后,我们向ILSVRC评估服务器提交了两个结果文件。第一次提交不使用限制盒回归,第二次提交使用限制盒回归。对于这些提交,我们扩展了SVM和boundingbox回归器训练集,分别使用val+train1k和val。我们使用了在val1+train1k上进行微调的CNN,以避免重新运行微调和特征计算。
4.5. Ablation study:
表3显示了对不同数量的训练数据、微调和boundingbox回归的影响的消融研究。第一个观察结果是,val2上的mAP与test上的mAP非常接近。这使我们确信,val2上的mAP是测试集性能的良好指示器。第一个结果是20.9%,这是R-CNN使用在ILSVRC分类数据集上预先训练的CNN所获得的结果(没有微调),并且允许访问val1中的少量训练数据(回想一下val1中的一半的类有15到55个示例)。将训练集扩展为val1+ trainn将性能提高到24.1%,N = 500和N = 1000之间基本没有区别。使用val1中的示例对CNN进行微调,使其略微提高到26.5%,但是由于正训练示例的数量很少,可能存在显著的过度拟合。将微调集扩展到val1+train1k,即每个类增加1000个积极的例子,这对mAP有很大的帮助,将mAP提升到29.7%。边界盒回归将结果提高到31.0%,这是一个比PASCAL中观察到的更小的相对增益。
4.6. Relationship to OverFeat:
R-CNN和OverFeat之间有一个有趣的关系:OverFeat(大致)可以被看作是R-CNN的一个特例。如果有人替代选择性搜索区域建议定期的多尺度金字塔广场区域和每个类限定框的解释变量更改为一个限定框回归量,那么系统将是非常相似的(模如何训练一些潜在的显著差异:CNN检测微调,使用支持向量机,等等)。值得注意的是,OverFeat比R-CNN有一个显著的速度优势:它比R-CNN快9倍,这是根据引用自[34]的每幅图2秒得出的结论。这个速度来自于OverFeat的滑动窗口。,区域建议)不会在图像层面扭曲,因此计算可以很容易地在重叠窗口之间共享。共享是通过在任意大小的输入上以卷积方式运行整个网络来实现的。加速R-CNN应该是可能的,在各种各样的方式,仍然作为未来的工作。
5. Semantic segmentation:
区域分类是一种标准的语义分割技术,使我们能够轻松地将R-CNN应用到PASCAL VOC的分割挑战中。为了便于与当前领先的语义分割系统(称为“二级池”O2P)[4]进行直接比较,我们在其开源框架内工作。O2P使用CPMC为每张图像生成150个区域建议,然后使用支持向量回归(SVR)为每个类预测每个区域的质量。他们的方法的高性能是由于CPMC区域的质量和多种特征类型(SIFT和LBP的丰富变种)的强大二阶池。我们还注意到Farabet等人最近使用CNN作为多尺度每像素分类器在几个密集场景标记数据集(不包括PASCAL)上展示了良好的结果。
我们遵循[2,4]并扩展了PASCAL分割训练集,以包括可用的额外注释作者:Hariharan等,[22]。设计决策和超参数在VOC 验证集中进行交叉验证。最终测试结果只评估一次。
CNN的特点,分割。我们评估了在CPMC区域上计算特征的三种策略,所有这些策略都是从将区域周围的矩形窗口扭曲为227×227开始的。第一种策略(full)忽略区域的形状,直接在扭曲的窗口上计算CNN的特征,这与我们在检测时所做的完全一样。然而,这些特征忽略了区域的非矩形形状。两个区域可能有非常相似的边界框,但是重叠很少。因此,第二种策略(fg)只计算区域前景掩码上的CNN特征。我们用均值输入代替背景,使背景区域在均值相减后为零。第三种策略(full+fg)简单地连接full和fg特性;我们的实验验证了它们的互补性。
表4:VOC 验证的分割平均准确率(%)列1表示O2P;2-7使用我们的CNN在ILSVRC 上的预训练。
VOC结果。表4总结了我们VOC验证集与O2P的结果。(每个类别的完整结果见附录E。)在每个特征计算策略中,layer fc6总是优于fc7,下面讨论fc6的特征。fg策略的表现略优于full,这表明掩蔽区域形状提供了更强的信号,与我们的直觉相匹配。然而,full+fg的平均准确率为47.9%,我们的最佳结果为4.2%(也略微优于O2P),这表明即使考虑到fg特性,full features提供的上下文也具有很高的信息量。值得注意的是,在单个核心上训练20个svr需要1个小时,而在O2P特性上训练则需要10个多小时。
在表5中,我们展示了VOC测试集的结果,并将我们的最佳性能方法fc6(full+fg)与两个强基线进行了比较。我们的方法在21个类别中的11个类别中获得了最高的分割精度,并且在所有类别中平均获得了最高的47.9%的整体分割精度(但是在任何合理的误差范围内都可能与O2P结果保持一致)。通过微调还可以获得更好的性能。
6. Conclusion:
近年来,目标检测性能停滞不前。性能最好的系统是将多个低层图像特征与来自对象检测器和场景分类器的高层上下文相结合的复杂集成。本文提出了一种简单、可扩展的目标检测算法,该算法相对于之前在PASCAL VOC 上的最佳检测结果提高了30%。
我们通过两个视角实现了这一表现。首先将大容量卷积神经网络应用于自底向上的区域建议中,对目标进行定位和分割;第二个是在标记的训练数据缺乏时训练大型cnn的范例。结果表明,对数据量大的辅助任务(图像分类)进行网络预训练,然后对数据量少的目标任务(检测)进行网络微调是非常有效的。我们推测“监督前训练/特定领域的细化”范式对于各种数据稀缺的视觉问题将是非常有效的。
最后,我们注意到,我们通过结合使用来自计算机视觉和深度学习(自下而上区域建议和卷积神经网络)的经典工具来实现这些结果是很重要的。这两者不是对立的科学研究路线,而是自然和必然的合作伙伴。
致谢这项研究得到了DARPA Mind 's Eye和MSEE项目的部分支持,得到了美国国家科学基金会IIS-0905647、IIS-1134072和IIS-1212798、MURI n000014 - 10-10-1 -0933等奖项的支持,并得到了丰田公司的支持。本研究中使用的gpu是由NVIDIA公司慷慨捐赠的。
表5:VOC 检测的分割准确率(%)我们比较了两个强大的基线:[2]的“区域和部分”(R&P)方法和[4]的二阶池化(O2P)方法。没有任何微调,我们的CNN实现了最高的分割性能,表现优于R&P和大致匹配O2P。
Appendix:
A. Object proposal transformations:
本工作中使用的卷积神经网络需要一个固定大小的227×227像素的输入。对于检测,我们考虑的对象建议是任意的图像矩形。我们评估了将对象建议转换为有效的CNN输入的两种方法。
第一个方法(“带上下文的最紧的正方形”)将每个对象建议封闭在最紧的正方形中,然后将正方形中包含的图像按比例缩放(等热带)到CNN输入大小。图7列(B)显示了这种转换。此方法的变体(“tightest square without context”)排除了围绕原始对象建议的图像内容。图7列©显示了这种转换。第二种方法(“warp”)各向异性地将每个对象建议缩放到CNN输入大小。图7列(D)显示了warp转换。
对于每个转换,我们还考虑在原始对象建议周围包含额外的图像上下文。上下文填充量§定义为在转换后的输入坐标系中原始对象提案周围的边框大小。图7显示了每个示例的最上面一行的p = 0像素,最下面一行的p = 16像素。在所有的方法中,如果源矩形延伸到图像之外,缺失的数据将被替换为图像均值(然后在将图像输入到CNN之前减去该均值)。一组试点实验表明,使用上下文填充(p = 16像素)的翘曲效果远远好于其他方法(3-5个地图点)。显然,可以有更多的替代方法,包括使用复制代替平均填充。对这些备选方案的详尽评价留作今后的工作。
B. Positive vs. negative examples and fc8:
两个奇怪的设计选择值得进一步讨论。第一个问题是:为什么在微调CNN和训练对象检测支持向量机时定义积极和消极的例子是不同的?为了简单回顾一下定义,为了进行微调,我们将每个对象建议映射到与之有最大IoU重叠(如果有的话)的ground-truth实例,如果IoU至少为0.5,则将其标记为匹配的ground-truth类的正值。所有其他的提案都被贴上了“背景”的标签。,所有类的反例)。为相比之下,我们只将ground-truth框作为其各自类的积极示例,并将与类的所有实例重叠的小于0.3 IoU的建议标记为该类的消极建议。落在灰色地带的建议(超过0.3个IoU重叠,但不是地面事实)被忽略。
图7:不同的对象建议转换。(A)相对于转换后的CNN输入的实际比例的原始对象建议;(B)与环境最协调;©没有上下文的最严密的正方形;(D)扭曲。在每一列和示例建议中,最上面一行对应上下文填充的p = 0像素,而最下面一行对应上下文填充的p = 16像素。
从历史上讲,我们之所以得出这些定义,是因为我们首先对ImageNet预先训练的CNN计算出的特征进行SVMs训练,所以当时并没有考虑进行微调。在这个设置中,我们发现用于培训支持向量机的特定标签定义在我们评估的选项集(包括我们现在用于微调的设置)中是最优的。当我们开始使用微调时,我们最初使用与支持向量机训练相同的正例和反例定义。然而,我们发现结果比我们目前使用的积极和消极的定义得到的结果要糟糕得多。
我们的假设是,在如何定义积极和消极方面的这种差异并不是根本重要的,而是来自于微调数据是有限的这一事实。我们当前的方案引入了许多“抖动的”示例(那些建议的重叠在0.5和1之间,但不符合基本事实),这将积极示例的数量增加了大约30倍。我们推测,在对整个网络进行微调以避免过度拟合时,需要这个大的11集。然而,我们也注意到,使用这些抖动的示例可能不是最优的,因为网络没有进行精确定位的微调。
这就引出了第二个问题:在进行了微调之后,为什么还要对SVMs进行培训呢?如果简单地应用微调网络(fc8)的最后一层,即21路softmax回归分类器作为对象检测器,则会更简洁。我们尝试了一下,发现VOC 的表现从54.2%下降到41.3%(12.9个百分点)!这种性能下降可能源于微调中使用的积极示例的定义,它不强调精确的本地化。
我们推测,如果有足够的检测训练数据,就可以像我们在SVM训练中所做的那样,简单地定义正例和反例,然后进行微调(或者从零开始训练),最后一层作为目标检测器。如果是真的,这将很好地简化R-CNN训练。
C. Bounding-box regression:
我们使用一个简单的边界盒回归阶段来提高本地化性能。在使用类特定的检测支持向量机对每个选择搜索建议进行评分后,我们预测使用类特定的边界盒回归器进行检测的新边界盒。这在本质上类似于可变形部件模型[17]中使用的边界盒回归。这两种方法的主要区别在于,这里我们从CNN计算的特征回归,而不是从推断的DPM部件位置计算的几何特征回归。
我们的训练算法的输入是一组N个训练对{(Pi, Gi)}i=1,…,其中Pi= (Pi x, Pi y, Pi w, Pi h)指定提案Pi的包围框中心的像素坐标以及Pi的宽度和高度(以像素为单位)。因此,除非需要,否则我们删除上标i。每个地面真值边界框G的指定方式相同:G = (Gx, Gy, Gw, Gh)。我们的目标是学习一个转换,它将一个被提议的boxP映射到一个ground-truth box G。
我们用四个函数来参数化这个变换dx§ dy§ dw§和dh§前两个指定了P的边界框的中心的比例不变平移,而后两个指定了P的边界框的宽度和高度的对数空间平移。学习这些函数后,我们可以将一个输入建议P转换成真实预测盒ˆG通过应用转换
每个函数d?§(在哪里?是x, y, h, w)被建模为一个线性函数的pool5features建议P,用φ5 §。(φ5的依赖性§对图像数据隐含假设。)因此我们有d ? § = wT ?φ5 §, w在哪里?是一个可学习模型参数的向量。我们学习w ?通过优化正则化最小二乘目标(ridge回归):
回归的目标是t?对于训练对(P, G)定义为
这是一个标准的正则化最小二乘问题,可以用封闭形式有效地求解。
在实现边界盒回归时,我们发现了两个微妙的问题。首先,正则化很重要:我们设置λ= 1000基于一组验证。第二个问题是,必须注意在选择使用哪个培训对(P, G)。直观地说,如果P与所有的基本真值框相距甚远,那么将P转换为基本真值框G的任务就没有意义了。使用P这样的例子会导致一个无望的学习问题。因此,我们只从提案P中学习,如果它附近至少有一个ground-truth box。当且仅当重叠大于阈值(我们使用验证集将其设置为0.6)时,我们通过将P分配给ground-truth框G来实现“接近性”,它与该框有最大的IoU重叠(如果重叠超过一个)。所有未分配的提案将被丢弃。我们对每个对象类都这样做一次,以便学习一组特定于类的边界盒回归器。
在测试时,我们对每个提案进行评分,并且只预测它的新检测窗口一次。原则上,我们可以迭代这个过程(即,对新预测的边界框重新打分,然后从中预测一个新的边界框,以此类推)。然而,我们发现迭代并不能改善结果。
D. Additional feature visualizations:
图12显示了20个pool5单元的附加可视化效果。对于每个单元,我们展示了24个区域建议,这些建议在VOC 测试的全部1000万个区域中最大限度地激活了该单元。
我们根据每个单元在6×6×256维pool5feature map中的(y, x, channel)位置进行标记。在每个通道中,CNN计算输入区域的相同函数,(y, x)位置只改变接受域。
E. Per-category segmentation results:
在表6中,我们展示了除了O2P方法[4]外,我们的六种分割方法在VOC val上的每个类别的分割精度。这些结果显示了在20个PASCAL类和后台类中哪些方法最强。
F. Analysis of cross-dataset redundancy:
辅助训练数据集要考虑的一个问题之间可能存在的冗余和测试集,即使目标检测的任务和整幅图像分类是大大不同的,这样横流冗余更令人担忧,我们还进行了一次彻底的调查,量化的程度帕斯卡测试图像中包含ILSVRC 训练集和验证集。我们的发现可能对有兴趣使用ILSVRC 作为PASCAL图像分类任务训练数据的研究人员有用。
我们对重复(和接近重复)的图像执行了两次检查。第一个测试基于flickr图像id的精确匹配,这些id包含在VOC 测试注释中(这些id是为后续的PASCAL测试集而故意保密的)。所有的PASCAL图片,以及大约一半的ILSVRC图片,都来自。在4952个匹配项中找到31个(0.63%)。
第二次检查使用GIST[30]描述符匹配,它在[13]中显示,在大型(> 100万)图像集合中,具有出色的近重复图像检测性能。在[13]之后,我们计算了所有ILSVRC trainval和PASCAL 测试图像的32×32像素扭曲版本的GIST描述符。
GIST描述符的欧几里德距离最近邻匹配显示了38张近似重复的图像(包括flickr ID匹配找到的31张)。匹配的JPEG压缩级别和分辨率略有不同,裁剪程度也较低。这些发现表明重叠很小,不到1%。对于VOC ,由于flickr id不可用,我们只使用GIST匹配方法。根据GIST匹配,VOC检测图像中有1.5%在ILSVRC 培训中。VOC 的数据略高,可能是因为这两个数据集在时间上比VOC 和ILSVRC 更接近。
G. Document changelog:
这份文件记录了R-CNN的进展。为了帮助读者理解它是如何随着时间变化的,这里有一个简要的变更日志来描述修订。
v1初始版本。
v2 CVPR相机准备修订。包括(1)从较高的学习速率开始进行微调(0.001而不是0.0001),(2)在准备CNN输入时使用上下文填充,以及(3)通过边界盒回归来修复定位错误,从而显著提高检测性能。ILSVRC检测数据集上的
v3结果以及与OverFeat的比较被集成到几个部分中(主要是第2部分和第4部分)。
表7:ILSVRC检测测试集的每级平均精度(%)。
图8:从val2上实现31.0%映射的配置中对val2set的示例检测。每幅图像都是随机采样的(这些都不是策划的)。所有精度大于0.5的检测都显示出来了。每个检测都使用预测类和来自检测器的精确回忆曲线的检测精度值进行标记。建议使用数码变焦观看。
图9:更多随机选择的示例。有关详细信息,请参见图8说明。建议使用数码变焦观看。
图10:策划的示例。我们选择每一张图片是因为我们觉得它令人印象深刻、令人惊讶、有趣或有趣。建议使用数码变焦观看。
图11:更多的示例。有关详细信息,请参见图10的说明。建议使用数码变焦观看。
图12:我们展示了VOC 测试中约1000万个区域中的24个区域,其中20个单元的激活度最高。每个蒙太奇是由单位的(y, x,通道)位置在6×6×256维池5特征图。每个图像区域都是用白色覆盖的单元接受域绘制的。激活值(我们通过除以通道中所有单位的最大激活值来正常化)显示在接受域的左上角。最佳观看数码变焦。