(38)[CVPR14] R-CNN: Rich feature hierarchies for accurate object detection and semantic segmentation

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37993251/article/details/89052396

计划完成深度学习入门的126篇论文第三十八篇,Berkeley的Ross Girshick等发表的层级特征feature hierarchies用于object detection和semantic segmentation方向的论文。[github]


Abstract

在PASCAL VOC标准数据集上测量的目标检测性能在最近几年趋于稳定。性能最好的方法是复杂的集成系统,它通常将多个低层图像特性与高层上下文结合起来。在本文中,我们提出了一种简单、可扩展的检测算法,相对于之前VOC 2012的最佳检测结果,平均平均精度(mAP)提高了30%以上,达到了53.3%。我们的方法结合了两个关键的见解:

  1. 可以将大容量卷积神经网络(CNNs)应用于自底向上的region proposals,以便对对象进行定位和分段;
  2. 由于我们将region proposals与CNNs相结合,我们将我们的方法称为R-CNN:具有CNN特性的区域。我们还展示了一些实验,这些实验提供了对网络学习内容的深入了解,揭示了图像特征的丰富层次结构。源码

1. Introduction

特征问题。在过去的十年中,各种视觉识别任务的进展很大程度上是基于SIFT[26]和HOG[7]的使用。但是,如果我们看一下规范的视觉识别任务PASCAL VOC对象检测[12]的性能,就会发现,在2010年至2012年期间,人们普遍认为进展缓慢,通过构建集成系统和使用成功方法的小变体获得的进展很小。

SIFT和HOG是块状定位直方图,我们可以将其与V1中的复杂细胞大致联系起来,V1是灵长类视觉通路的第一个皮层区域。但我们也知道,识别发生在下游的几个阶段,这表明可能存在分层的、多阶段的过程来计算特征,而这些特征对视觉识别的信息量更大。

Fukushima发表的“neocognitron” [16],一种生物学上的受启发的层次化和移不变模式识别模型,就是这样一个过程的早期尝试。然而,neocognitron缺乏监督训练算法。LeCun等人的[23]提供了缺失的算法,证明了通过反向传播的随机梯度下降可以训练卷积神经网络(convolutional neural networks, CNNs),这是扩展neocognitron的一类模型。

CNNs在20世纪90年代得到了广泛的应用(例如[24]),但随着支持向量机的兴起,CNNs逐渐失宠,尤其是在计算机视觉领域。2012年,Krizhevsky等人[22]通过在ImageNet Large Scale Visual Recognition Challenge (ILSVRC)中显示出更高的图像分类精度,重新燃起了人们对CNNs的兴趣[9,10]。他们的成功源于训练了一个拥有120万张标签图片的大型CNN,以及LeCun s CNN(例如max(x;0)非线性校正和失步正则化)。

在2012年ILSVRC研讨会上,关于ImageNet结果的重要性进行了激烈的讨论。核心问题可以归结为:ImageNet上的CNN分类结果在多大程度上可以推广到PASCAL VOC Challenge上的目标检测结果?

我们通过弥合图像分类和目标检测之间的鸿沟,果断地回答了这个问题。本文首次证明,与基于简单的HOG-like特征的系统相比,基于PASCAL VOC的CNN可以获得更高的目标检测性能。实现这一结果需要解决两个问题:用深度网络对目标进行定位,用少量带注释的检测数据训练大容量模型。

与图像分类不同,检测需要在图像中定位(可能有很多)对象。一种方法将定位定义为一个回归问题。然而,Szegedy et al.[31]等人的研究表明,这种策略在实践中可能并不成功(他们报告了2007年VOC的30.5%,而我们的方法达到了58.5%)。另一种方法是构建一个滑动窗口检测器。CNNs已经以这种方式使用了至少20年,通常用于受约束的对象类别,如人脸[28,33]和行人[29]。为了保持较高的空间分辨率,这些cnn通常只有两个卷积层和池化层。我们还考虑采用滑动窗口方法。然而,在我们的网络中,有5个卷积层,在输入图像中有非常大的接受域(195 x 195像素)和很大的步幅(32 x 32像素),这使得在滑动窗口范例中精确定位成为一个开放的技术挑战。

相反,正如Gu等人在[18]中所主张的,我们使用区域范式在识别范围内操作来解决CNN的定位问题。在测试时,我们的方法为输入图像生成约2000个无标签的region proposals,使用CNN从每个proposal中提取一个固定长度的特征向量,然后使用分类特定的线性svm对每个区域进行分类。我们使用一种简单的技术(仿射图像wrap)来计算每个region proposal的固定大小的CNN输入,而不考虑区域的形状。图1显示了我们方法的概述,并突出显示了我们的一些结果。由于我们的系统将region proposal与CNN相结合,所以我们将方法命名为R-CNN:具有CNN特征的区域。

检测面临的第二个挑战是标记数据稀缺,目前可用的数量不足以训练一个大型CNN。解决这个问题的传统方法是使用无监督的预训练,然后进行监督微调(例如,[29])。本文的第二个主要贡献是表明,在大辅助数据集(ILSVRC)上进行有监督的预训练,然后对小数据集(PASCAL)进行特定领域的微调,是在数据匮乏时学习大容量CNNs的有效范例。在我们的实验中,用于检测的微调将mAP性能提高了8个百分点。经过微调,我们的系统在VOC 2010上的mAP为54%,而在高度调优的基于HOGbased deformable part model (DPM)上为33%[14,17]。描述R-CNN的技术报告首先出现在http://arxiv。2013年11月,http://abs/1311.2524v1。

我们的系统也相当高效。唯一的类特定计算是一个相当小的矩阵-向量乘积和贪婪的非最大抑制。这个计算特性来自于所有类别共享的特性,这些特性的维数也比以前使用的区域特性低两个数量级(cf.[32])。

类HOG特性的一个优点是它们的简单性:更容易理解它们所携带的信息(尽管[34]表明我们的直觉可能会让我们失望)。我们能深入了解CNN所学习的表现手法吗?或许,拥有5400多万个参数的密集连接层才是关键?他们不是。我们对CNN进行了脑叶切除术,发现其94%的参数可以在检测精度有一定程度下降的情况下被去除,这一比例之大令人吃惊。相反,通过探测网络中的单元,我们发现卷积层可以学习到各种丰富的特性(图3)。

了解我们的方法的故障模式对于改进它也是至关重要的,因此我们报告了来自Hoiem等人的检测分析工具[20]的结果。分析的一个直接结果是,我们证明了一个简单的边界框回归方法可以显著减少错误定位,而错误定位是主要的错误模式。

在开发技术细节之前,我们注意到,由于R-CNN对区域进行操作,所以很自然地将其扩展到语义分割任务。通过少量的修改,我们在PASCAL VOC的分割任务上也取得了最先进的结果,在2011年的VOC测试集上平均分割准确率为47.9%。


2. Object detection with R-CNN

我们的目标检测系统由三个模块组成。第一种方法生成分类独立的region proposal。这些proposal定义了我们的检测器可用的候选检测集。第二个模块是一个大型卷积神经网络,它从每个区域提取一个固定长度的特征向量。第三个模块是一组特定于类的线性支持向量机。在本节中,我们将介绍每个模块的设计决策,描述它们的测试时使用情况,详细说明如何学习它们的参数,并在PASCAL VOC 2010-12上显示结果。

2.1. Module design

Region proposals 最近的许多论文都提供了生成分类独立Region proposals的方法。例如:objecality [1], selective search [32], categorey -independent object proposals [11], constrained parameter min-cuts (CPMC) [5], multi-scale combinality grouping [3], Cires an et al.[6],他们将CNN应用到规则间隔的方形作物上检测mitotic cells,这是Region proposals的一个特例。虽然R-CNN对特定的Region proposals方法是不可知的,但我们使用选择性搜索来实现与之前的检测工作比较(如[32,35])。

Feature extraction 我们使用Krizhevsky等人描述的CNN的Caffe[21]实现,从每个region proposal中提取4096维特征向量。通过五个卷积层和两个完全连接的层向前传播一个平均值减去227 227 RGB图像,计算特征。更多的网络架构细节,请参考[21,22]。

为了计算Region proposals的特征,我们必须首先将该区域的图像数据转换为与CNN兼容的形式(其架构需要输入固定的227 x 227像素大小)。在任意形状区域的许多可能转换中,我们选择了最简单的。无论候选区域的大小或长宽比如何,我们都将它周围的所有像素wrap到所需的大小。在进行wrap之前,我们将紧边界框放大,以便在wrap大小处,原始框周围正好有p个弯wrap图像上下文像素(我们使用p = 16)。图2显示了wrap训练区域的随机抽样。补充材料讨论了整经的替代方法。

2.2. Test-time detection

在测试时,我们对测试图像进行选择性搜索,提取出大约2000个region proposal(我们在所有的实验中都使用了选择性搜索s快速模式)。我们对每个porposal进行wrap,并通过CNN进行转发,以便从所需的层中读取特性。然后,针对每个类,我们使用针对该类训练的SVM对每个提取的特征向量进行打分。给定图像中的所有得分区域,我们应用贪婪的非最大抑制(针对每个类独立地),如果某个区域具有交叉-过并集(IoU)重叠,并且所选区域的得分高于学习阈值,则该区域将拒绝该区域。

Run-time analysis 两个特性使检测效率更高。首先,所有CNN参数在所有类别中共享。其次,与其他常用的方法相比,CNN计算的特征向量是低维的。例如,UVA探测系统[32]使用的特性比我们的要大两个数量级(360k与4k维)。

这种共享的结果是,计算region proposal和特性(GPU上的13s/图像或CPU上的53s/图像)所花费的时间被摊销到所有类上。唯一的类特异性计算是特征与SVM权值之间的点积和非最大抑制。在实际应用中,一个图像的所有点积都被批量化为一个矩阵-矩阵乘积。特征矩阵一般为2000 4096,SVM权值矩阵为4096 N,其中N为类数。

该分析表明,R-CNN可以扩展到数千个对象类,而不需要使用诸如哈希等近似技术。即使有100k个类,在现代多核CPU上得到的矩阵乘法也只需要10秒。这种效率不仅仅是使用region proposal和共同特点的结果。UVA系统,由于其高维特性,将会慢两个数量级,同时只需要134GB的内存来存储100k的线性预测器,而我们的低维特性只需要1.5GB。

同样有趣的是,将R-CNN与Dean等人最近关于使用DPMs和散列[8]进行可伸缩检测的工作进行对比。他们报告了一幅运行时为每张图5分钟的VOC 2007地图,其中包含了大约16%的挥发性有机化合物。使用我们的方法,10k检测器可以在CPU上运行大约一分钟,由于没有进行近似,mAP将保持59%(第3.2节)。​​​​​​​

2.3. Training

Supervised pre-training. 我们在一个带有图像级注释的大型辅助数据集(ILSVRC 2012)上对CNN进行了有区别的预训练(即:没有边框标签)。使用开源的CNN库[21]进行预训练。简而言之,我们的CNN几乎与Krizhevsky等人的[22]性能相当,在ILSVRC 2012验证集上获得了最高1的错误率,高出2.2个百分点。​​​​​​​

Domain-specific fine-tuning. 为了使我们的CNN适应新的任务(检测)和新的领域(warped VOC窗口),我们继续随机梯度下降(SGD)训练的CNN参数只使用wraped region proposal VOC。除了用一个随机初始化的21路分类层替换CNN特定于imagenet的1000路分类层(对于20个VOC类加上背景)外,CNN架构没有改变。我们将所有带有0:5 IoU的region proposal与一个ground-truth框的重叠部分视为该框s类的积极部分,其余部分视为消极部分。我们以0.001的学习率(初始训练前率的十分之一)开始SGD,这允许在不破坏初始化的同时进行微调。在每个SGD迭代中,我们统一采样32个正窗口(在所有类上)和96个后台窗口,构建一个大小为128的小批。我们倾向于正窗口的抽样,因为与背景相比,它们非常罕见。​​​​​​​

Object category classifiers. 考虑训练一个二进制分类器来检测车辆。很明显,一个紧密包围汽车的图像区域应该是一个积极的例子。同样,很明显,与汽车无关的背景区域应该是一个负面的例子。不太清楚的是,如何给部分与汽车重叠的区域贴上标签。我们使用IoU重叠阈值来解决这个问题,低于这个阈值的区域被定义为负值。重叠阈值0:3,通过f0上的网格搜索选择;0:1;例如:;我们发现,仔细选择这个阈值非常重要。将其设置为0:5,就像在[32]中一样,将mAP减少5个点。类似地,将其设置为0,mAP减少了4个点。正面的例子被简单地定义为每个类的ground-truth边界框。

在提取特征并应用训练标签后,我们对每个类优化一个线性SVM。由于训练数据太大,无法存储,我们采用标准的硬负挖掘方法[14,30]。硬负挖掘收敛很快,在实际中,地图停止增长后,只有一个单一通过所有的图像。

在补充资料中,我们讨论了为什么在微调和支持向量机训练中,正例和反例的定义是不同的。我们还讨论了为什么有必要训练检测分类器,而不是简单地使用微调CNN的最终层(fc8)的输出。​​​​​​​

2.4. Results on PASCAL VOC 2010-12

遵循PASCAL VOC最佳实践[12],我们在VOC 2007数据集中验证了所有设计决策和超参数(第3.2节)。对于VOC 2010-12数据集的最终结果,我们对VOC 2012列车的CNN进行了微调,并对VOC 2012列车的检测SVMs进行了优化。对于两种主要算法变体(包含和不包含边界框回归),我们只向评估服务器提交了一次测试结果。

表1显示了VOC 2010的完整结果。我们将我们的方法与四个强基线进行比较,包括SegDPM[15],它将DPM检测器与一个语义分割系统[4]的输出相结合,并使用额外的检测器间上下文和图像分类器重新取心。最接近的比较是来自Uijlings等人的UVA系统,因为我们的系统使用相同的region proposal算法。为了对区域进行分类,他们的方法构建了一个四层空间金字塔,并使用密集采样SIFT、扩展的反对者SIFT和RGBSIFT描述符对其进行填充,每个向量用4000字的码本进行量化。采用直方图交核SVM进行分类。与它们的多特征非线性核SVM方法相比,我们在mAP上取得了很大的改进,从35.1%提高到了53.7%,同时也大大加快了速度(第2.2节)。我们的方法在VOC 2011/12测试中取得了类似的性能(53.3% mAP)

3. Visualization, ablation, and modes of error

3.1. Visualizing learned features

第一层过滤器可以直接可视化,易于理解[22]。它们捕捉有方向的边缘和对手的颜色。理解后面的层更具挑战性。Zeiler和Fergus在[36]中提出了一种具有视觉吸引力的反体积方法。我们提出了一种简单的(互补的)非参数方法,可以直接显示网络的学习情况。

其思想是在网络中挑出一个特定的单元(特性),并把它当作一个单独的对象检测器来使用。也就是说,我们对一组很大的未分配region proposal(大约1000万个)计算单元的激活,将proposal从最高激活到最低激活进行排序,执行非最大抑制,然后显示得分最高的区域。我们的方法让选择的单元通过显示它触发的输入来自己说话。我们避免平均,以便看到不同的视觉模式,并深入了解单位计算的不变性。

我们从layer pool5中可视化单元,它是网络的第五个也是最后一个卷积层的maxpooling输出。pool5 feature map是6,6,256 = 9216- dimensional。忽略边界效应,在原始的227 x 227像素输入中,每个pool5单元的接受域为195 x 195像素。pooling中央的一个单元几乎可以看到整个世界,而靠近泳池边缘的一个单元则有一个更小的、修剪过的支撑物。

图3中的每一行显示了来自CNN的pool5单元的前16个激活,我们对VOC 2007 trainval进行了微调。256个功能独特的单元中有6个是可视化的(补充材料包括更多)。这些选择单元来显示网络学习的代表性样本。在第二行,我们看到一个单元,它对狗的脸和点数组开火。第三行对应的单元是一个红色斑点检测器。此外,还有人脸探测器,以及更抽象的图案,如文本和带有窗户的三角形结构。网络似乎学习了一种表示方法,该方法将少量的类调优特性与形状、纹理、颜色和材料属性的分布式表示方法结合在一起。随后的完全连接层fc6能够对这些丰富特性的大量组合进行建模。

3.2. Ablation studies

Performance layer-by-layer, without fine-tuning 为了了解哪些层对检测性能至关重要,我们分析了VOC 2007数据集上的CNN最后三层数据的结果。第3.1节简要描述了Layer pool5。最后两层总结如下。

层fc6完全连接到pool5。为了计算特征,它将40969216权矩阵乘以pool5特征图(重新构造为9216维向量),然后添加一个偏差向量。该中间向量按分量半波整流(x max(0;x))。

fc7层是网络的最后一层。它是通过将fc6计算的特征乘上4096 4096权矩阵来实现的,类似地添加一个偏置向量并应用半波整流。

我们从CNN的结果开始,没有对PASCAL进行微调,即所有CNN参数都只在ILSVRC 2012上进行了预训练。逐层分析性能(表2行1-3)表明,fc7的特性泛化得比fc6差。这意味着29%,即大约1680万个CNN s参数可以在不降低mAP的情况下被删除。更令人惊讶的是,删除fc7和fc6会产生非常好的结果,即使pool5功能仅使用6%的CNN s参数计算。CNN的大部分代表性力量来自它的卷积层,而不是更大的密集连接层。这一发现表明,仅使用CNN的卷积层,就可以计算任意大小图像的密集特征图(HOG)而言,具有潜在的实用价值。这种表示方式将支持在pool5特性的基础上使用滑动窗口检测器(包括DPM)进行实验。​​​​​​​

Performance layer-by-layer, with fine-tuning 在对VOC 2007 trainval的参数进行微调后,我们现在查看CNN的结果。改进非常显著(表2行4-6):微调将mAP提高8.0个百分点,达到54.2%。与pool5相比,fc6和fc7的微调带来的提升要大得多,这表明从ImageNet学习到的pool5特性是通用的,而且大部分改进是通过在它们之上学习领域特定的非线性分类器获得的​​​​​​​。

Comparison to recent feature learning methods 在PASCAL VOC检测中,特征学习方法的应用相对较少。我们来看看最近两种基于可变形部件模型的方法。作为参考,我们还包括了标准的基于hogb的DPM[17]的结果。

第一种DPM特征学习方法,DPM ST[25],利用草图标记概率直方图来增强HOG特征。直观地说,草图标记是通过图像块中心的紧密分布的轮廓。草图令牌概率由一个随机森林在每个像素处计算,该森林经过训练,将35个35像素的patch分类为150个草图令牌或背景中的一个。

第二种方法,DPM HSC[27],用稀疏编码直方图(HSC)代替HOG。为了计算HSC,使用一个由100个7个7像素(灰度)原子组成的学习型字典对每个像素处的稀疏代码激活进行求解。由此产生的激活是用三种方法来纠正(完整和half-waves),空间汇集,单元二归一化,然后转换(x (x) jxjα迹象)。

所有的R-CNN变体都比三个DPM基线(表2行8-10)表现得更好,包括两个使用特性学习的基线。与只使用HOG特性的最新版本DPM相比,我们的mAP提高了20多个百分点:54.2% vs. 33.7%,相对提高了61%。HOG和sketch令牌的组合仅比HOG产生2.5个映射点,而HSC比HOG提高了4个映射点(与它们的私有DPM基线相比,两者都使用了DPM的非公共实现,其性能低于开源版本[17])。这些方法的map分别为29.1%和34.3%。​​​​​​​

3.3. Detection error analysis

为了揭示我们的方法的误差模式,了解微调如何改变它们,以及我们的误差类型如何与DPM进行比较,我们使用了Hoiem等人的优秀检测分析工具[20]。对分析工具的完整总结超出了本文的范围,我们鼓励读者参考[20]来理解一些更详细的细节(比如规范化的AP)。由于分析最好是在相关图的上下文中进行,所以我们在图4和图5的说明中给出了讨论。

3.4. Bounding box regression

在误差分析的基础上,实现了一种减少定位误差的简单方法。受DPM[14]中使用的边界盒回归的启发,我们训练了一个线性回归模型来预测一个新的检测窗口,该窗口给出了一个选择性搜索region proposal的pool5特性。补充材料中有详细说明。表1、表2和图4中的结果表明,这种简单的方法修复了大量的错误定位检测,将mAP提升了3到4个点。

4. Semantic segmentation

区域分类是一种标准的语义分割技术,使我们可以很容易地将R-CNN应用到PASCAL VOC的细分挑战。为了便于与当前领先的语义分割系统(称为二级池的O2P)[4]进行直接比较,我们在其开源框架内工作。O2P使用CPMC为每张图像生成150个region proposal,然后使用支持向量回归(SVR)为每个类预测每个区域的质量。他们的方法的高性能是由于CPMC区域的质量和多种特征类型(SIFT和LBP的丰富变种)的强大二阶池。我们还注意到Farabet等人最近在使用CNN作为多尺度逐像素分类器的几个密集场景标记数据集(不包括PASCAL)上展示了良好的结果。

我们遵循[2,4]并扩展PASCAL分割训练集,以包括Hariharan等人提供的额外注释。在VOC 2011验证集上交叉验证设计决策和超参数。最终测试结果只评估一次。

CNN features for segmentation 我们评估了在CPMC区域上计算特性的三种策略,所有这些策略都是从将该区域周围的矩形窗口扭曲到227 227开始的。第一个策略(full)忽略区域的形状,直接在扭曲的窗口上计算CNN的特征,就像我们在检测时所做的那样。然而,这些特征忽略了区域的非矩形形状。两个区域可能有非常相似的边界框,但几乎没有重叠。因此,第二种策略(fg)只计算区域前景掩码上的CNN特征。我们用均值输入代替背景,这样在均值相减后背景区域为零。第三种策略(full+fg)简单地将full和fg特性连接起来;实验验证了它们的互补性。​​​​​​​

Results on VOC 2011 表3显示了我们对VOC 2011验证集与O2P测试结果的总结。(每个类别的完整结果见补充材料。)在每个特征计算策略中,层fc6​​​​​​​总是优于fc7,下面的讨论涉及到fc6的特性。fg策略略优于full策略,说明掩蔽区域形状提供了更强的信号,符合我们的直觉。然而,full+fg的平均准确率为47.9%,我们的最佳结果为4.2%(也略微优于O2P),这表明即使给定了fg特性,full特性提供的上下文也具有很高的信息量。值得注意的是,在单个核心上对20个svr进行完整的+fg功能的训练需要1个小时,而在O2P功能上的训练需要10个多小时。

在表4中,我们展示了VOC 2011测试集的结果,并将我们的最佳性能方法fc6 (full+fg)与两个强基线进行了比较。我们的方法在21个类别中有11个达到了最高的分割精度,并且在所有类别中平均达到了最高的整体分割精度47.9%(但是在任何合理的误差范围内都可能与O2P结果相关联)。通过微调还可以获得更好的性能​​​​​​​。

5. Conclusion

近年来,目标检测性能一直停滞不前。性能最好的系统是将多个低层图像特征与来自对象检测器和场景分类器的高层上下文相结合的复杂集成。本文提出了一种简单、可扩展的目标检测算法,相对于PASCAL VOC 2012上已有的最佳检测结果提高了30%。我们通过两个洞见实现了这一性能。首先将大容量卷积神经网络应用于自底向上的区域方案中,对目标进行定位和分割。第二个是训练的范例当标记训练数据是稀缺的大型CNNs。实验结果表明,对数据丰富的辅助任务(图像分类)进行带监督的网络预训练,然后对数据不足的目标任务(检测)进行网络微调是非常有效的。我们推测,监督前训练/领域特定的finetuning范式将对各种数据匮乏的视觉问题非常有效。

最后,我们注意到,我们通过结合计算机视觉和深度学习(自下而上的region proposal和卷积神经网络)的经典工具,取得了这些成果,这是非常重要的。两者不是对立的科学探究路线,而是天然的、不可避免的合作伙伴。

猜你喜欢

转载自blog.csdn.net/weixin_37993251/article/details/89052396