R-CNN:Regions with CNN features
1)特点
1.将大容量卷积神经网络(CNNs)应用到自底向上的区域建议中,对目标进行定位和分割
2.当标记的训练数据稀缺时,监督辅助任务预训练然后微调特定区域,能显著地提升性能
3.可视化学习特征
2)检测系统
1.候选区域选择:选择性搜索(“Fast”)
N特征提取:
①参照AlexNet
②候选框内图像块缩放(各项同/异性)至相同大小227×227,减去均数,通过5个卷积层和2个全连接层,从每个区域提取4096维的特征向量
3.对每个类优化一个线性支持向量机,使用Bounding
文章目录
摘要1. 引言2. R-CNN对象检测2.1 模块设计2.2 Test-time detection2.3 Training2.4 Results on PASCAL VOC -122.5 Results on ILSVRC detection 3. Visualization, ablation, and modes of error3.1 Visualizing learned features可视化学习特征3.2 Ablation studies3.3 Network architectures3.4 Detection error analysis检测误差分析3.5 Bounding-box regression3.6 Qualitative results 4. The ILSVRC detection dataset4.1 Dataset overview4.2 Region proposals4.3 Training data4.4 Validation and evaluation4.5 Ablation study4.6 Relationship to OverFeat 5. Semantic segmentation6. 结论AppendixA. Object proposal transformationsB. Positive vs. negative examples and softmaxC. Bounding-box regressionD. Additional feature visualizationsE. Per-category segmentation resultsF. Analysis of cross-dataset redundancy摘要
在canonical PASCAL VOC数据集上测量的对象检测性能在过去几年中达到稳定(遇到瓶颈)。性能最好的方法是复杂的集成系统,它通常将多个低级图像特征与高级环境组合在一起。在本文中,我们提出了一种简单、可扩展的检测算法,该算法的平均检测精度(mAP)较之前VOC 的最佳检测结果提高了30%以上,检测结果为53.3%。我们的方法结合了两个关键点:(1)可以将大容量卷积神经网络(CNNs)应用到自底向上的区域建议中,对目标进行定位和分割;(2)当标记的训练数据稀缺时,监督辅助任务预训练,然后微调特定区域,能显著地提升性能。由于我们将区域建议与CNNs相结合,我们将我们的方法称为R-CNN:Regions with CNN features。我们还将R-CNN与OverFeat进行了比较,后者是最近提出的一种基于类似CNN架构的滑动窗口检测器。我们发现,R-CNN在200类ILSVRC检测数据集上的性能大大优于OverFeat。
完整源代码地址:http://www.cs.berkeley.edu/rbg /rcnn
1. 引言
图像特征非常重要。在过去的十年中,各种视觉识别任务的进展很大程度上是基于SIFT[29]和HOG[7]的使用。但是,如果我们看一下典型的视觉识别任务(PASCAL VOC对象检测[15])的性能,就会发现,在至期间,进展一直比较缓慢,通过构建集成系统和采用成功方法的小变体获得的进展很慢。
SIFT和HOG是块状定位直方图,我们可以将其与V1中的复杂细胞大致联系起来,V1是灵长类视觉通路的第一个皮层区域。但我们也知道,识别发生在下游的几个阶段,这表明可能需要有层次的、多阶段的过程来计算特征,而这些特征在视觉识别方面提供的信息甚至更多。
Fukushima’s “neocognitron”(感知机)[19],一个受生物启发的层次结构和移不变模式识别模型,就是这样一个过程的早期尝试。然而,neocognitron缺乏监督训练算法。基于Rumelhart等人的[33],LeCun等人的[26]证明了反向传播的随机梯度下降法对于训练卷积神经网络(CNNs)是有效的,这是扩展 “neocognitron”的一类模型。
CNNs在20世纪90年代被大量使用(例如[27]),但是随着支持向量机的兴起,它就不再流行了。,Krizhevsky等人[25]通过在ImageNet大尺度视觉识别挑战(ILSVRC)中表现出更高的图像分类精度,重新点燃了人们对CNNs的兴趣[9,10]。(AlexNet)他们的成功源于训练了一个拥有120万张标签图片的大型CNN,以及LeCun的CNN上的一些转折(例如,max(x;0)非线性校正和“dropout”正则化)。
ImageNet结果的重要性在ILSVRC研讨会上得到了激烈的讨论。核心问题可以归结为:ImageNet上的CNN分类结果在多大程度上可以推广到PASCAL VOC Challenge上的目标检测结果?
我们通过衡量图像分类和目标检测之间的差距来回答这个问题。本文首次表明,与基于更简单的HOG-like特征的系统相比,CNN可以显著提高PASCAL VOC上的目标检测性能。为了实现这一结果,我们关注了两个问题:用深度网络定位对象和用少量带注释的检测数据训练高容量模型。
与图像分类不同,检测需要在图像中定位(可能有很多)对象。一种方法将定位定义为一个回归问题。然而,Szegedy et al.[38]等人的研究表明,这种方法在实际应用中可能效果不佳(他们报告的VOCmAP为30.5%,而我们的方法为58.5%)。另一种方法是构建一个滑动窗口检测器。CNNs已经以这种方式使用了至少,通常用于约束对象类别,如人脸[32,40]和行人[35]。为了保持较高的空间分辨率,这些cnn通常只有两个卷积和池化层。我们还考虑采用滑动窗口方法。然而,在我们的网络中,有五个卷积层,感受野非常大(195×195像素),输入图像中有大步长(32×32像素),这使得在滑动窗口范例中精确定位成为一个开放的技术挑战。
相反,我们在“recognition using regions”范式[21]内操作,解决了CNN的定位问题,这在对象检测[39]和语义分割[5]两方面都取得了成功。在测试时,我们的方法为输入图像生成大约2000个类别无关的区域建议,使用CNN从每个建议中提取一个固定长度的特征向量,然后使用类别特定的线性支持向量机对每个区域进行分类。我们使用一种简单的技术(仿射图像扭曲)来计算每个区域提议的固定大小的CNN输入,而不考虑区域的形状。图1概述了我们的方法,并突出显示了我们的一些结果。由于我们的系统将区域建议与CNN相结合,所以我们将此方法称为R-CNN:Regions with CNN features。
图1:对象检测系统概述。我们的系统(1)输入一个图像(2)提取大约2000个自底向上的区域建议,(3)使用一个大的卷积神经网络(CNN)计算每个建议的特征(4)使用类特定的线性支持向量机对每个区域进行分类。R-CNN在PASCAL VOC 上的平均精度(mAP)达到了53.7%。作为比较,[39]报告35.1%的mAP使用了相同的区域建议,但是采用了空间金字塔和袋装可视化文字的方法。流行的可变形零件模型的性能为33.4%。在200类ILSVRC检测数据集上,R-CNN的s mAP为31.4%,较之前最好的结果为24.3%的[34]有较大的改善。
在本文的更新版本中,我们通过在200类ILSVRC检测数据集上运行R-CNN,对R-CNN和最近提出的OverFeat[34]检测系统进行了面对面的比较。OverFeat使用滑动窗口CNN进行检测,是目前ILSVRC检测中表现最好的方法。我们发现R-CNN的表现明显好于OverFeat,mAP分别为31.4%和24.3%。
检测面临的第二个挑战是标记数据稀缺,目前可用的数量不足以训练一个大型CNN。这个问题的传统解决方案是使用无监督的预训练,然后进行监督微调(例如,[35])。本文的第二个主要贡献是证明了对大型辅助数据集(ILSVRC)的监督预训练,以及对小型数据集(PASCAL)的特定领域的微调,是在数据匮乏时学习大容量CNNs的有效范例。在我们的实验中,检测的微调将mAP性能提高了8个百分点。经过微调后,我们的系统在VOC 上的mAP为54%,而在高度调优的、基于hogb的可变形部件模型(DPM)上为33%[17,20]。我们还向读者介绍了Donahue等人同期的工作,他们指出Krizhevsky的CNN可以作为一个黑盒特征提取器(没有微调)使用,在包括场景分类、细粒度子分类和领域适应等多个识别任务中都有出色的表现。
我们的系统也相当高效。唯一的类特定计算是一个合理的小矩阵向量积和贪婪非最大抑制。这个计算特性来自于所有类别共享的特性,并且这些特性比以前使用的区域特性低两个数量级的维度(cf.[39])。
了解我们的方法的失败模式对改进它也至关重要,因此我们报告来自Hoiem等人的检测分析工具的结果。作为这种分析的直接结果,我们证明了一个简单的边框回归方法可以显著地减少错误定位,而错误定位是主要的错误模式。
在开发技术细节之前,我们注意到,由于R-CNN对区域进行操作,因此很自然地将其扩展到语义分割任务。通过小的修改,我们在PASCAL VOC的分割任务上也取得了有竞争力的结果,在VOC 测试集上平均分割准确率达到47.9%。
2. R-CNN对象检测
我们的对象检测系统由三个模块组成。第一个生成分类独立的区域建议。这些建议定义了我们的探测器可用的候选检测集。第二个模块是一个大型的卷积神经网络,它从每个区域提取一个固定长度的特征向量。第三个模块是一组特定于类的线性支持向量机。在本节中,我们将介绍每个模块的设计决策,描述它们的测试时间使用情况,详细说明如何学习它们的参数,并在PASCAL VOC -12和ILSVRC上显示检测结果。
2.1 模块设计
Region proposals:最近许多论文提供了生成分类独立的区域建议的方法。例如:objectality [1], selective search [39], category-independent object proposals [14],constrained parameter min-cuts (CPMC) [5], multi-scale combinatorial grouping [3],以及Ciresan等人[6]的方法(他们将CNN应用到规则间隔的方形剪切图上来检测有丝分裂细胞,这是region proposals的一个特例)。虽然R-CNN对特定的区域建议方法是不可知的,但是我们使用选择性搜索来与之前的检测工作进行受控比较(例如,[39,41])。
Feature extraction:我们使用Krizhevsky等人描述的CNN的Caffe[24]实现,从每个区域建议中提取4096维的特征向量。首先将一个227×227的RGB图像减去均数,然后通过5个卷积层和2个完全连接层,通过上述的前向传播来计算特征。我们建议读者参考[24,25]以获得更多的网络架构细节。
为了计算区域建议的特征,我们必须首先将该区域的图像数据转换成与CNN兼容的形式(CNN架构需要固定的227× 227像素大小的输入)。在任意形状区域的许多可能的转换中,我们选择最简单的。不管候选区域的大小或长宽比如何,我们都会将它周围的所有像素翘曲成所需的大小。在进行翘曲之前,我们扩展了紧边界框,这样在翘曲大小处,原始框周围正好有p个翘曲图像上下文像素(我们使用p = 16)。(理解:padding?)图2显示了翘曲训练区域的随机抽样。在附录A中讨论了翘曲的替代方法。
2.2 Test-time detection
在测试时,我们对测试图像进行选择性搜索,提取出大约2000个区域的建议(我们在所有的实验中都使用了选择性搜索的快速模式)。为了计算特征,我们对每个建议区域进行变形,并通过CNN进行前向传播。然后,对于每个类,我们使用针对该类训练的SVM对每个提取的特征向量进行评分。对于图像中所有得分区域,我们应用一个贪婪的非最大抑制(对每个类独立地),如果一个区域与得分较高的选定区域IOU高于阈值,则拒绝该区域。
Run-time analysis:两个特性使检测变得高效。首先,所有CNN参数在所有类别中共享。其次,与其他常用的方法(如带有视觉词汇编码的空间金字塔)相比,CNN计算的特征向量是低维的。在UVA探测系统[39]中使用的特性比我们的要大两个数量级(360k比4k维)。
这种共享的结果是,计算区域建议和功能(GPU上的13s/图像,或CPU上的53s/图像)所花费的时间被分摊到所有类上。唯一的类特定计算是特征和SVM权值之间的点积,非最大抑制。在实践中,图像的所有点积都被批量化为单个矩阵-矩阵乘积。特征矩阵一般为2000×4096,支持向量机权矩阵为4096×N,其中N为类数。
这个分析表明,R-CNN可以扩展到数千个对象类,而不需要使用类似hashing[8]这样的近似技术。即使有100k个类,在现代多核CPU上得到的矩阵乘法也只需要10秒。这种效率不仅仅是使用区域建议和共享特性的结果。UVA系统,由于它的高维特性,将会慢两个数量级,同时需要134GB的内存来存储100k的线性预测器,相比之下,我们的低维特性只需要1.5GB。
将R-CNN与Dean等人最近关于使用DPMs和散列[8]进行可伸缩检测的工作进行对比也很有趣。他们报告说,在引入10k干扰类时,每张图的运行时间为5分钟,VOC 的mAP约为16%。使用我们的方法,10k检测器可以在一分钟内在CPU上运行,因为没有进行近似,所以mAP将保持在59%(第3.2节)。
2.3 Training
Supervised pre-training:我们在一个大的辅助数据集(ILSVRC分类)上对CNN进行了有区别的预训练,仅使用图像级注释(此数据不提供boundingbox标签)。使用开源的CNN图书馆[24]进行预训练。简而言之,我们的CNN几乎与Krizhevsky等人[25]的表现相匹配,top-1的错误率比在ILSVRC分类验证集上高出2.2个百分点。这种差异是由于在训练过程中进行了简化(图像级注释)。
Domain-specific fine-tuning:为了使我们的CNN适应新的任务(检测)和新的区域(翘曲建议窗口),我们继续使用仅仅翘曲区域建议的CNN参数的随机梯度下降(SGD)训练。除了将CNN的ImageNetspecific 1000-way 分类层替换为一个随机初始化的(N + 1)-way分类层(其中N为对象类的数量,加上1为背景)之外,CNN的架构没有改变。对于VOC,N = 20;对于ILSVRC,N = 200。我们将与金标准边框IoU大于0.5的所有区域建议作为该边框所属类的正样本,其余为负样本。我们以0.001的学习率(初始预训练的1/10)开始进行SGD,这允许进行微调,同时不影响初始化。在每个SGD迭代中,我们统一采样32个正样本窗口(在所有类上)和96个背景窗口,以构建一个大小为128的batch。我们倾向于正样本窗口的抽样,因为与背景相比,它们数量较少。
Object category classifiers:考虑训练一个二进制分类器来检测车辆。很明显,一个紧密包围汽车的图像区域应该是一个正样本。同样,很明显,与汽车无关的背景区域应该是一个负样本。不太清楚的是如何标记部分与汽车重叠的区域。我们用IoU重叠阈值来解决这个问题,低于这个阈值的区域被定义为负样本。重叠阈值0.3是在验证集上由包含{0,0.1…0.5}的网格中选择的。我们发现,仔细选择这个阈值非常重要。若设置为0.5,如在[39]中,mAP减少5点。类似地,将其设置为0会使mAP减少4个点。正样本被简单地定义为每个类金标准边界框。
一旦特征提取好,训练标签也被应用,对每个类我们优化一个线性支持向量机。由于训练数据量太大,无法在内存中拟合,我们采用标准的hard negative mining method [17,37]。hard negative mining收敛快,在实践只需要一次图像遍历mAP就停止增加。
在附录B中,我们讨论了为什么在微调和支持向量机训练中定义正样本和负样本是不同的。我们还讨论了训练检测支持向量机所涉及的权衡问题,而不是简单地使用经过微调的CNN的最后一个softmax层的输出。
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、扩展的OpponentSIFT和rgb-sift描述符对其进行填充,每个向量用4000字的码本进行量化。他们采用直方图交核SVM进行分类。与他们的多特征、非线性核支持向量机方法相比,我们在mAP上取得了很大的改进,从35.1%提高到了53.7%,同时计算也快了很多(2.2节)。我们的方法在VOC /12测试中取得了相似的性能(53.3% mAP)。
表1:VOC检测平均精度(%)。R-CNN与UVA、Regionlets是最直接可比的,因为所有的方法使用选择性搜索区域的建议。边框回归(BB)在c节中描述。在出版时,SegDPM在PASCAL VOC排行榜中表现最好。yDPM和上下文重取的SegDPM没有被其他方法使用。
2.5 Results on ILSVRC detection
我们使用与我们在PASCAL VOC上用过的相同的系统超参数在200类ILSVRC检测数据集上运行R-CNN。我们遵循相同的协议,只向ILSVRC评估服务器提交了两次测试结果,一次带有和一次没有边框回归。
图3:(左)ILSVRC检测测试集的平均精度。带有的方法使用外部训练数据(在来自ILSVRC分类数据集的图像所有类和标签)。(右)每个方法200个平均精度值的箱形图。比赛后的OverFeat结果的箱形图没有显示出来,因为每个类的APs还没有提供(R-CNN的每个类的APs在表8中,也包含在上传到的技术报告源中;见R-CNN-ILSVRC-APs.txt)。红线表示AP的中位数,框底和框顶分别是第25和第75个百分位。晶须延伸到每种方法的最小AP和最大AP。每个AP都以绿点的形式绘制在胡须上(使用缩放技术观看效果最佳)*
图3将R-CNN与ILSVRC竞赛的参赛作品以及赛后的OverFeat成绩[34]进行了比较。R-CNN获得了31.4%的mAP,远远超过了OverFeat获得的24.3%的第二好结果。为了更好地理解类之间的AP分布,本文还提供了箱形图,表8中给出了一个各类的 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]。它们捕捉有方向的边缘和对立的颜色。理解后续的层更具挑战性。在[42]中,Zeiler和Fergus提供了一种视觉上有吸引力的反卷积方法。我们提出了一个简单的(和互补的)非参数方法,直接显示网络学习了什么。
其思想是在网络中挑出一个特定的单元(特性),并把它当作一个独立的对象检测器来使用。也就是说,我们在一组很大的未分配区域建议(大约1000万)上计算单元的激活,将建议从最高激活到最低激活进行排序,执行非最大抑制,然后显示得分最高的区域。我们的方法让选择的单元自己说话,准确地显示它触发哪个输入。我们避免平均,以看到不同的视觉模式,并深入了解单位计算的不变性。
我们可视化来自layer pool5的单元,它是网络的第五个也是最后一个卷积层的最大池化输出。pool5的特征图是6×6×256 = 9216维的。忽略边界效应,在原始的227×227像素输入中,每个pool5单元的感受野为195×195像素。pool5中央的一个单元几乎可以看到整个图,而靠近边缘的一个单元则有一个更小的、裁剪过的感受野。
图4中的每一行显示了来自CNNpool5的单元的前16个激活,我们对该CNN在VOC 训练验证集上进行了微调。256个功能独特的单元中有6个被可视化(附录D包括更多)。选择这些单元是为了展示网络学习的代表性样本。在第二行,我们看到一个单元,它被狗的脸和点数组激活。第三行对应的单元是一个红色斑点检测器。还有人脸探测器,以及更抽象的图案,如文本和带有窗户的三角形结构。该网络似乎学习了一种表示方法,该方法将少量的类调优特性与形状、纹理、颜色和材料属性的分布式表示结合在一起。随后的全连接层fc6有能力对这些丰富特性的大量组合进行建模。
图4:6个pool5单元的顶部区域。接受域和激活值用白色表示。一些单元与概念匹配,如人(第一行)或文本(第4行)。其他单元捕获纹理和材料属性,如点阵列(第2行)和镜面反射(第6行)。
3.2 Ablation studies
**Performance layer-by-layer, without fine-tuning:**为了了解哪些层对检测性能至关重要,我们分析了VOC 数据集上的每一个CNN最后三层的结果。第3.1节简要描述了Layer pool5。最后两层总结如下。
层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万)的CNNs参数可以在不影响mAP的情况下被删除。更令人惊讶的是,去掉fc7和fc6会产生非常好的结果,尽管pool5的特征只使用了6%的CNNs参数进行计算。CNN的大部分表示性能力来自于它的卷积层,而不是更大的密集连接层。这一发现表明,仅使用CNN的卷积层,在计算任意大小图像的稠密特征图(HOG意义上)方面具有潜在的实用价值。这种表示方式将支持在pool5特性的基础上使用滑动窗口检测器(包括DPM)进行实验。
表2:VOC检测平均精度(%)。第1-3行显示R-CNN的性能,没有进行微调。第4-6行显示了CNN在ILSVRC 上的预训练然后在VOC trainval上进行了微调(FT)的结果。第7行包括一个简单的边界盒回归(BB)阶段,它减少了定位错误(C部分)。第8-10行将DPM方法作为一个强基线。第一个只使用HOG,而后面两个使用不同的特性学习方法来扩充或取代HOG。
**Performance layer-by-layer, with fine-tuning:**我们现在看一下我们的CNN在VOC 训练验证集中微调参数后的结果。改进是显著的(表2行4-6):微调增加了8.0个百分点,达到54.2%。与pool5相比,fc6和fc7的微调带来的提升要大得多,这表明从ImageNet学习到的pool5特性是通用的,而大部分改进是在它们之上学习领域特定的非线性分类器获得的。
**Comparison to recent feature learning methods:**相关的一些特征学习方法被用于PASCAL VOC的检测。我们来看看最近两种建立在可变形零件模型上的方法。作为参考,我们还包括了基于hog的标准DPM的结果[20]。
第一个DPM特征学习方法,DPM ST[28],用“sketch token”概率的直方图来增强HOG特征。直观地说,一个sketch token是一个紧密分布的等高线通过一个图像补丁的中心。sketch token概率由一个随机forest在每个像素处计算,该forest经过训练,将35×35像素的patch分类为150个sketch token或背景中的一个。
第二种方法,DPM HSC[31],用稀疏编码(HSC)的直方图代替HOG。为了计算HSC,使用100个7×7像素(灰度)原子的学习型字典在每个像素处求解稀疏编码激活。由此产生的激活是用三种方法来纠正(全波和半波整流),空间汇集,单元l2归一化,然后进行功率转换(x=(sign(x)) |(x)|^α)。
所有的R-CNN变体都比三个DPM基线(表2行8-10)表现得更好,包括两个使用特征学习的。与只使用HOG特性的最新版本DPM(v5)相比,我们的mAP提高了20个百分点:54.2% vs. 33.7% (61%的提升)。HOG和sketch tokens的组合比HOG多出2.5个mAP点,而HSC比HOG多出4个mAP(在内部与它们的私有DPM基线进行比较时,两者都使用了DPM的非公开实现,其性能低于开源版本[20])。这些方法的mAP分别为29.1%和34.3%
3.3 Network architectures
本文的大部分结果使用了Krizhevsky等人的[25]网络结构。然而,我们发现架构的选择对R-CNN的检测性能有很大的影响。在表3中,我们展示了Simonyan和Zisserman[43](vgg)最近提出的16层深度网络在VOC 测试集中的结果。在最近的ILSVRC 分类挑战中,该网络是表现最好的网络之一。该网络结构均匀,由13层3×3卷积核组成,中间穿插5个最大池化层,最上层为3个全连通层。我们称这个网络O-Net(OxfordNet),称基准网络为T-Net(TorontoNet)。
为了在R-CNN中使用O-Net,我们从Caffe模型zoo中下载了VGG ILSVRC 16层模型的可公开使用的预训练网络权值(/BVLC/caffe/wiki/Model-Zoo),然后使用与T-Net相同的协议对网络进行了微调。唯一的区别是使用更小的minibatch(24)来适应GPU内存。表3的结果显示,使用O-Net的R-CNN明显优于使用TNet的R-CNN, mAP从58.5%增加到66.0%。然而,在计算时间方面有一个相当大的缺陷,O-Net的前向传递时间大约是T-Net的7倍。
表3:两种不同CNN架构下VOC 测试的平均检测精度(%)。前两行是表2使用Krizhevsky等人所提出的T-Net的结果。第3行和第4行使用Simonyan和Zisserman (O-Net)[43]最近提出的16层架构。
3.4 Detection error analysis检测误差分析
为了揭示我们的方法的错误模式,了解微调如何改变他们,并看看我们的错误类型与DPM的比较,我们应用了来自Hoiem等人的优秀的检测分析工具。对分析工具的完整总结超出了本文的范围,我们鼓励读者参考[23]以理解一些更详细的细节(例如规范化的AP)。由于分析最好在相关情节的上下文中进行,所以我们在图5和图6的标题中进行了讨论。
图5:顶级假阳性(FP)类型的分布。每个图显示了随着FPs数量的增加,FP类型的演变分布。每个FP被分为4种类型中的一种:Loc-定位不良(IoU检测与正确的类的重叠在0.1和0.5之间或重复);Sim-与近似类型混淆;Oth-与不同的对象类别混淆;BG-被判为对象的背景。与DPM(见[23])相比,我们的错误更多是由于定位不当造成的,而不是与背景或其他对象类混淆,这表明CNN的特征比HOG更有鉴别性。松散的定位很可能是由于我们使用了自下而上的区域建议,以及在对CNN进行全图像分类预训练时获得的位置不变性。第三列显示了我们的简单的边框回归方法如何修复许多定位错误。
图6:对对象特征的敏感性。每个图显示了在6个不同对象特征(遮挡、截断、边界盒区域、长宽比、视点、部分可见性)内执行最高和最低的子集的平均值(类间)规范化AP(参见[23])。我们为我们的方法(R-CNN)(以及DPM voc-release5方法)展示了带有和不带有微调(FT)、边界盒回归(BB)的图。总的来说,微调不会降低灵敏度(最大值和最小值之间的差异),但会显著改善几乎所有特性的最高和最低性能子集。这表明,微调不仅仅是简单地提高了性能最低的子集(长宽比和边界盒区域),这可能是一个基于我们如何扭曲网络输入的猜想。相反,微调改进了对所有特征的鲁棒性,包括遮挡、截断、视点和部分可见性。
3.5 Bounding-box regression
在误差分析的基础上,我们实现了一种减少定位误差的简单方法。受DPM[17]中使用的边框回归的启发,我们训练了一个线性回归模型来预测一个新的检测窗口,该窗口具有选择性搜索区域的pool5特征。详细内容见附录C。表1、表2和图5中的结果表明,这种简单的方法修复了大量的定位错误检测,将mAP提高了3到4个点。
3.6 Qualitative results
本文对ILSVRC的定性检测结果如图8和图9所示。每幅图像从val2集合中随机采样,所有检测精度大于0.5的检测器都显示出来。请注意,这些都不是仔细挑选的的,而是给出了探测器实际运行的真实情况。图10和图11给出了更多定性结果,但这些结果都是经过挑选的。我们选择每一张图片,因为它包含有趣的、令人惊讶的或令人惊叹的结果。这里同样只显示了精度大于0.5的所有检测结果。
4. The ILSVRC detection dataset
在第2节中,我们展示了ILSVRC检测数据集的结果。这个数据集的同构性不如PASCAL VOC,需要选择如何使用它。由于这些决策非常重要,所以我们将在本节中讨论它们。
4.1 Dataset overview
ILSVRC检测数据集分为三个集合:训练集(395,918)、验证集(20,121)和测试集(40,152),括号中表示每个集合中的图像数。val和test分划来自同一图像分布。这些图像与PASCAL VOC图像具有相似的场景和复杂性(对象的数量、杂乱程度、姿态可变性等)。val和test各自被详尽地注释,这意味着在每个图像中,来自所有200个类的所有实例都被用边界框标记。相比之下,该训练集是由ILSVRC分类图像分布绘制的。这些图像具有更可变的复杂性,并倾向于单一居中对象的图像。与val和test不同的是,训练图像(由于它们的数量很大)没有进行详尽的注释。在任何给定的训练图像中,来自200个类的实例可能被标记,也可能没有。除了这些图像集,每个类都有一组额外的负样本。将手动检查负样本,以确保它们不包含关联类的任何实例。在这项工作中没有使用负样本集。有关ILSVRC如何收集和注释的更多信息可以在[11,36]中找到。
这些截然不同的性质为训练R-CNN提供了许多选择。训练图像不能用于hard negative mining,因为注释不是详尽的。那么负样本从何而来?另外,训练图像的统计量与val和test的统计量不同。应该使用训练图像吗?如果应该,使用到什么程度?虽然我们还没有对大量的选择进行全面评估,但根据以往的经验,我们做出了似乎是最明智的选择。
我们的总体策略是主要依赖val集,并使用一些训练图像作为辅助正样本来源。为了同时使用val进行训练和验证,我们将其大致分为大小相等的val1和val2集。因为有些类在val中的实例很少(最少的只有31个,一半的少于110个),所以生成一个近似类平衡的分区是很重要的。为了做到这一点,生成了大量的候选分割,并选择了最大相对阶级不平衡最小的分割。(理解:使分割近似类平衡)(相对不平衡是通过|a-b|/(a + b)来衡量的,其中a和b是类的计数。) 利用val图像的类数作为特征进行聚类,生成每个候选分割,然后进行随机化的局部搜索,以改善分割平衡。这里使用的特定分割具有大约11%的最大相对不平衡和4%的中位数相对不平衡。val1/val2分裂和用于产生它们的代码将被公开,以允许其他研究人员在本报告中使用的val分裂上比较他们的方法。
4.2 Region proposals
我们采用了与PASCAL上的检测相同的区域建议方法。选择性搜索[39]在val1、val2和中的每张图像上以快速模式运行,并进行测试(但不包括在训练集上的图像)。一个小的修改是需要的,因为选择性搜索不是规模不变的,所以产生的区域大小取决于图像的分辨率。ILSVRC图像的大小范围从非常小到几个百万像素,因此在运行选择性搜索之前,我们将每个图像的大小调整为一个固定的宽度(500像素)。在val上,选择性搜索的结果是每张图像平均有2403个区域建议,有91.6%的召回率IoU阈值为0.5)。其召回率明显低于Pascal,后者约为98%,表明在区域建议阶段还有很大的改进空间。
4.3 Training data
对于训练数据,我们形成了一组图像和边框,其中包括来自val1的所有选择性搜索和金标准边框,以及来自训练集的每个类的至多N个金标准边框(如果一个类在train中有少于N个金标准框,那么我们将它们全部获取)。我们将这个图像和边框的数据集称为val1+trainN。在消融研究中,我们展示了val2上的mAP,N属于{0,500;1000} (4.5节)。
R-CNN需要三个步骤的训练数据:(1)CNN微调;(2)检测器SVM训练;(3)边界框回归器训练。使用与PASCAL相同的设置,在val1+trainN上进行50k次SGD迭代运行CNN微调。使用Caffe对一台NVIDIA Tesla K20进行微调需要13个小时。在支持向量机训练中,所有来自val1+trainN的金标准边框都被作为各自类的正例。在val1中随机选取5000幅图像进行hard negative mining。一项初步实验表明,与5000张图像子集(大约一半)相比,从val1的所有图像中hard negative mining只会导致mAP下降0.5个百分点,而SVM的训练时间则减少了一半。没有从训练集中选取负样本,因为注释不是详尽的。没有使用额外的经过验证的负样本。对边框回归器的训练在val1上进行。
4.4 Validation and evaluation
在将结果提交给评估服务器之前,我们使用上面描述的训练数据在val2数据集上验证了数据使用的选择以及微调和边框回归的影响。所有系统超参数(如SVM C超参数、用于区域翘曲的填充、NMS阈值、框盒回归超参数)都与在PASCAL的设置的值相同。毫无疑问,其中一些超参数的选择对于ILSVRC来说是稍微次优的,但是这项工作的目标是在ILSVRC上产生一个初步的R-CNN结果,而不需要大量的数据集调优。在选择了val2上的最佳选项之后,我们向ILSVRC评估服务器提交了两个结果文件。第一次提交不使用边框回归,第二次提交使用边框回归。对于这些提交品,我们扩展了SVM和边框回归器训练集,分别使用val+train1k和val。我们使用了在val1+train1k上进行微调的CNN,以避免重新运行微调和特征计算。
4.5 Ablation study
表4显示了对不同数量的训练数据、微调和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:ILSVRC关于数据使用选择、微调和边界盒回归的消融研究。
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-“second-order pooling”)[4]进行直接比较,我们在其开源框架内工作。O2P使用CPMC为每张图像生成150个区域建议,然后使用支持向量回归(SVR)为每个类预测每个区域的质量。他们的方法的高性能是由于CPMC区域的质量和多种特征类型(SIFT和LBP的丰富变种)的强大二阶池。我们还注意到Farabet等人最近使用CNN作为多尺度像素分类器在几个密集场景标记数据集(不包括PASCAL)上展示了良好的结果。
我们遵循[2,4]并扩展了PASCAL分割训练集,以包括Hariharan等人提供的额外注释。设计决策和超参数在VOC 验证集中进行交叉验证。最终测试结果只评估一次。
**CNN features for segmentation:**我们评估了在CPMC区域上计算特征的三种策略,所有这些策略都是从将该区域周围的矩形窗口翘曲到227×227开始的。第一种策略(full)忽略区域的形状,直接在扭曲的窗口上计算CNN的特征,这与我们在检测时所做的完全一样。然而,这些特征忽略了区域的非矩形形状。两个区域可能有非常相似的边界框,但是重叠很少。因此,第二种策略(fg)只计算区域前景掩码上的CNN特征。我们用均值输入代替背景,使背景区域在均值相减后为零。第三种策略(full+fg)简单地连接full和fg特性;我们的实验验证了它们的互补性。
表5:VOC 验证的分割平均准确率(%)。第一列表示O2P;2-7使用我们的CNN在ILSVRC 上的预训练
**Results on VOC :**表5总结了我们与O2P在VOC验证集的结果。(每个类别的完整结果见附录E)。在每个特征计算策略中,层fc6的性能总是优于层fc7,下面讨论fc6的特征。fg策略的表现略优于full,这表明加膜的区域形状提供了更强的信号,与我们的直觉相匹配。然而,full+fg的平均准确率为47.9%,比我们的最佳结果高4.2%(也略微优于O2P),这表明即使考虑到fg特性,full features提供的上下文也具有很高的信息量。值得注意的是,在单个核心上使用我们的full+fg特征训练20个svr需要1个小时,而在O2P特性上训练则需要10个多小时。
在表6中,我们展示了VOC测试集的结果,并将我们的最佳性能方法fc6 (full+fg)与两个强基准进行了比较。我们的方法在21个类别中的11个类别中获得了最高的分割精度,并且在所有类别中获得了最高的47.9%的整体分割精度(但是在任何合理的误差范围内都可能与O2P结果保持一致)。通过微调还可以获得更好的性能。
表6:在VOC 测试集上的分割精度(%)。我们比较了两个强基线:[2]中的“Regions and Parts” (R&P)方法和[4]的second-order pooling(O2P)方法。没有任何微调,我们的CNN实现了最高的分割性能,表现优于R&P和大致匹配O2P
6. 结论
近年来,目标检测的性能停滞不前。性能最好的系统是将多个低层图像特征与来自对象检测器和场景分类器的高层上下文相结合的复杂集成。本文提出了一种简单、可扩展的目标检测算法,该算法相对于之前在PASCAL VOC 上的最佳检测结果提高了30%
我们通过两个角度实现了这一性能。首先将大容量卷积神经网络应用于自底向上的区域建议中,对目标进行定位和分割。第二个是在标记的训练数据缺乏时训练大型cnn的范例。实验结果表明,对数据量大的辅助任务(图像分类)进行网络监督预训练,然后对数据量少的目标任务(检测)进行网络微调是非常有效的。我们推测,有监督的预训练/特定领域的finetuning范例对于各种数据匮乏的视觉问题将是非常有效的。
最后,我们注意到,通过结合使用来自计算机视觉和深度学习(自下而上区域建议和卷积神经网络)的经典工具来实现这些结果是很重要的。这两者不是对立的科学研究路线,而是自然和必然的合作伙伴。
Appendix
A. Object proposal transformations
在这项工作中使用的卷积神经网络需要一个固定大小的输入:227×227像素。对于检测,我们考虑的对象建议是任意的图像矩形。我们评估了将对象建议转换为有效的CNN输入的两种方法。
第一个方法(“tightest square with context”)将每个对象建议封闭在最小的正方形中,然后将正方形中包含的图像按比例缩放(等轴)到CNN的输入大小。图7列(B)显示了这种转换。此方法的变体(“tightest square without context”)排除了围绕原始对象建议的图像内容。图7列©显示了这种转换。第二种方法(“warp”)各向异性地将每个对象建议缩放到CNN输入大小。图7列(D)显示了warp转换。
图7:不同的对象建议转换。(A)相对于转换后的CNN输入的实际比例的原始对象建议;(B)tightest square with context;©tightest square without context;(D)warp。在每一列和示例建议中,最上面一行对应上下文填充的p = 0像素,而最下面一行对应上下文填充的p = 16像素。
对于每个转换,我们还考虑在原始对象建议周围包含额外的图像上下文。上下文填充量§定义为在转换后的输入坐标系中原始对象建议周围的边框大小。图7显示了每个示例的最上面一行的p = 0像素,最下面一行的p = 16像素。在所有的方法中,如果源矩形延伸到图像之外,缺失的数据将被替换为图像均值(然后在将图像输入到CNN之前减去该均值)。一组试点实验表明,使用上下文填充(p = 16像素)的翘曲效果远远好于其他方法(3-5个mAP)。显然,可以有更多的替代方法,包括使用复制代替平均填充。对这些备选方案的详尽评价留作今后的工作。
B. Positive vs. negative examples and softmax
有两个设计选择值得进一步讨论。第一个问题是:为什么在微调CNN和训练对象检测支持向量机时对正负样本的定义是不同的?简单地回顾一下定义,为了进行fine-tuning,我们将每个对象建议映射到与它有最大IoU重叠(如果有的话)的金标准实例,如果IoU大于0.5,则将其标记为匹配的金标准类的正样本。所有其他的建议都被贴上了“背景”的标签。(所有类的负样本)。相比之下,对于训练支持向量机,我们只将ground-truth框作为其各自类的正样本,并将与类的所有实例重叠的小于0.3 IoU的建议标记为该类的负样本。落在灰色地带的建议(超过0.3个IoU重叠,但不是金标准)被忽略
从历史上讲,我们之所以得出这些定义,是因为我们首先对ImageNet预训练的CNN计算出的特征进行SVMs训练,所以当时并没有考虑进行微调。在这个设置中,我们发现用于训练支持向量机的特定标签定义在我们评估的选项集(包括我们现在用于微调的设置)中是最优的。当我们开始使用微调时,我们最初使用与支持向量机训练相同的正样本和负样本定义。然而,我们发现结果比我们目前使用的正样本和负样本的定义得到的结果要糟糕得多。
我们的假设是,在如何定义正样本和负样本方面的这种差异并不是根本重要的,而是来自于微调数据是有限的这一事实的影响。我们当前的方案引入了许多抖动的示例(那些建议的重叠在0.5和1之间,但不是金标准),这将积极示例的数量增加了大约30倍。我们推测,在对整个网络进行微调以避免过度拟合时,需要这个大的集合。然而,我们也注意到,使用这些抖动的示例可能不是最优的,因为网络没有进行精确定位的微调。
这就引出了第二个问题:在进行了微调之后,为什么还要训练SVMs ?简单地应用微调网络的最后一层(21-way的softmax回归分类器)作为对象检测器会更简洁。我们尝试了一下,发现VOC 的表现从54.2%下降到了50.9%mAP。这种性能下降可能是由于几个因素的组合,包括用于微调的正样本的定义不强调精确定位,软最大分类器是在随机抽样的负样本上训练,而不是在用于SVM训练的难样本子集上训练。
这一结果表明,微调后不经过支持向量机训练,也可能获得接近相同水平的性能。我们推测,通过一些额外的微调,剩余的性能差距可能会被消除。如果是这样,这将简化和加速R-CNN训练,而不会损失检测性能。
C. Bounding-box regression
我们使用一个简单的边框回归阶段来提高定位性能。在使用类特定的检测支持向量机对每个选择搜索建议进行评分后,我们使用类特定的边框回归器来预测新边框。这在本质上类似于可变形部件模型[17]中使用的边框回归。这两种方法的主要区别在于,这里我们从CNN计算的特征进行回归,而不是从推断的DPM部件位置计算的几何特征进行回归。
我们训练方法的输入是一串N训练对
i是类别索引,Pi表示边框的中心坐标和长宽。金标准G的定义类似于P
我们的目标是学习一种转换,将提出的box P映射到ground-truth box G。
我们用四个函数来参数化这个变换:dx§, dy§ ,dw§和dh§。前两个参数指定了一个缩放不变的P的边界框的中心平移,而后两个参数指定了P的边界框的宽度和高度的对数空间转换。在学习了这些函数之后,我们可以应用转换将输入建议P转换为预测的ground-truth box G^。
每个函数d§(是x,y,h,w中的一个)被建模为一个pool5特性建议P的线性函数,用φ5 §表示(φ5§对图像数据的依赖关系是隐式假定的)。因此我们有d§ = wTφ5 §, w是一个可学习模型参数的向量。我们通过优化正则化最小二乘目标(ridge回归)学习w。
回归的目标是t*对于训练对(P,G)的定义为:
这是一个标准的正则化最小二乘问题,可以用封闭形式有效地求解。
在实现边界盒回归时,我们发现了两个问题。首先,正则化很重要:我们在一个验证集上设置λ= 1000。第二个问题是,必须小心地选择训练组(P,G)。直观地说,如果P与所有的金标准框相距甚远,那么将P转换为金标准框G的任务就没有意义了。使用P这样的例子会导致一个无望的学习问题。因此,我们只从提案中学习寻找附近至少有一个ground-truth box的P。当且仅当重叠大于阈值(我们使用验证集将其设置为0.6)时,我们通过将P分配给ground-truth框G来实现接近性,它与该框具有最大的IoU重叠(如果重叠超过一个)。所有未分配的提案将被丢弃。我们对每个对象类都这样做一次,以便学习一组特定于类的边框回归器。
在测试时,我们对每个提案进行评分,并且只预测它的新检测窗口一次。原则上,我们可以迭代这个过程(即,对新预测的边界框重新打分,然后从中预测一个新的边界框,以此类推)。然而,我们发现迭代并不能改善结果。
D. Additional feature visualizations
图12显示了20个pool5单元的附加可视化效果。对于每个单元,我们展示了24个区域建议,这些建议在VOC 测试的全部1000万个区域中最大限度地激活了该单元。
我们根据每个单元(y, x,通道)在6×6×256维pool5特征图中的位置来标记它们。在每个通道中,CNN计算与输入区域的完全相同的函数,(y, x)位置只改变接受域。
E. Per-category segmentation results
在表7中,我们展示了包括O2P方法[4]在内,我们的六种分割方法在VOC val上的每个类别的分割精度。这些结果显示了在20个PASCAL类和背景类中哪些方法最强。
表7:VOC 验证集的每个类别的分割准确率(%)
F. Analysis of cross-dataset redundancy
辅助训练数据集要考虑的一个问题是和测试集之间可能存在的冗余。即使目标检测的任务和整幅图像分类是大大不同的,使得跨数据集冗余不那么令人担忧,我们还进行了一次彻底的调查,量化Pascal测试图像在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 更接近。