概述
Abstract
在过去几年中,在标准PASCAL VOC数据集上测量的目标检测性能保持稳定。性能最好的方法是复杂的集成系统,通常将多个低级图像特征与高级上下文相结合。在本文中,我们提出了一种简单且可扩展的检测算法,与之前在VOC 2012上获得的53.3%的平均精度相比,平均精度(mAP)提高了30%以上。 我们的方法结合了两个关键观点:
(1)可以将大容量卷积神经网络(CNN)应用于自下而上的区域建议(region proposals),以便定位和分割目标;
(2)当标记的训练数据稀缺时,辅助任务的有监督预训练,和特定领域的微调可以显著提高性能。
由于我们将区域建议(region proposals)和CNN相结合,我们将我们的方法称为R-CNN:具有CNN特征的Regions。我们还将R-CNN与OverFeat进行了比较,OverFeat是最近提出的一种基于类似CNN结构的滑动窗口检测器。我们发现,在200类别的ILSVRC2013检测数据集上,R-CNN的表现大大优于OverFeat。 完整系统的源代码可从http://www.cs.berkeley.edu/˜rbg/rcnn.获得。
1、Introduction
特征很重要。过去十年中,各种视觉识别任务的进展很大程度上是基于SIFT[29]和HOG[7]的使用。 但是,如果我们观察标准视觉识别任务(PASCAL VOC对象检测[15])的性能,一般认为在2010-2012年期间进展缓慢,通过构建集成系统和使用成功方法的微小变体获得的收益很小。
SIFT和HOG是块方向直方图,我们可以粗略地将其与V1中的复杂细胞联系起来,V1是灵长类视觉通路的第一个皮层区域。但我们也知道,识别发生在下游的几个阶段,这表明可能存在分层的、多阶段的过程来计算特征,这些特征对视觉识别的信息量更大。
福岛的“neocognitron”[19]是一种生物激励的分层和移位不变模式识别模型,是对这一过程的早期尝试。 然而,neocognitron缺乏监督训练算法。 在Rumelhart等人[33]的基础上,LeCun等人[26]表明,通过反向传播的随机梯度下降对于训练卷积神经网络(CNN)是有效的,这是一类扩展了neocognitron的模型。
CNN在20世纪90年代被大量使用(例如[27]),但随后随着支持向量机的兴起而过时。 2012年,Krizhevsky等人[25]通过在ImageNet大规模视觉识别挑战赛(ILSVRC)[9,10]上显示出更高的图像分类精度,重新点燃了人们对CNN的兴趣。 他们的成功得益于在120万张标记图像上训练了一个大型CNN,并在LeCun的CNN上进行了一些调整(例如,max(x,0)校正非线性和“dropout”正则化)。 在ILSVRC 2012年研讨会上,ImageNet结果的重要性进行了激烈的讨论。核心问题可以归结为以下几个方面:ImageNet上的CNN分类结果在多大程度上概括为PASCAL VOC挑战的目标检测结果?
我们通过弥合图像分类和目标检测之间的鸿沟来回答这个问题。 本文首次表明,与基于简单HOG-like特征的系统相比,CNN可以显著提高PASCAL VOC上的目标检测性能。 为了实现这一结果,我们重点研究了两个问题:用深度网络定位目标和用少量带注释的检测数据训练高容量模型。
与图像分类不同,检测需要在图像中定位(可能有许多)目标。 一种方法将localization看作一个回归问题。然而,Szegedy等人[38]的研究与我们自己的研究同时表明,这一策略在实践中可能不太成功(他们报告2007年VOC的mAP为30.5%,而我们的方法为58.5%)。另一种方法是构建滑动窗口检测器。 CNN以这种方式使用了至少20年,通常用于受约束的对象类别,如人脸[32,40]和行人[35]。 为了保持较高的空间分辨率,这些CNN通常只有两个卷积层和池化层。 我们还考虑采用滑动窗口方法。然而,在我们的网络中,有五个卷积层的高层单元在输入图像中有非常大的感受野(195×195像素)和步长(32×32像素),这使得滑动窗口模式中的精确定位成为一个开放的技术挑战。
相反,我们通过在“使用区域识别”范例[21]中操作来解决CNN定位问题,该范例在目标检测[39]和语义分割[5]方面都取得了成功。 在测试时,我们的方法为输入图像生成大约2000个独立于类别的区域建议,使用CNN从每个建议中提取固定长度的特征向量,然后使用特定于类别的线性支持向量机对每个区域进行分类。我们使用一种简单的技术(仿射图像扭曲)来计算来自每个区域建议的固定大小的CNN输入,而不考虑区域的形状。 图1概述了我们的方法,并强调了我们的一些结果。由于我们的系统将区域建议与CNN相结合,我们将该方法称为R-CNN:具有CNN特征的区域。
在本文的更新版本中,我们通过在200类ILSVRC2013检测数据集上运行R-CNN,对R-CNN和最近提出的OverFeat[34]检测系统进行了正面比较。 OverFeat使用滑动窗口CNN进行检测,迄今为止是ILSVRC2013检测中性能最好的方法。 我们发现,R-CNN的表现明显优于OverFeat,其mAP分别为31.4%和24.3%。在检测方面面临的第二个挑战是,标记数据稀缺,目前可用的数据量不足以训练大型CNN。这个问题的传统解决方案是使用无监督的预训练,然后进行有监督的微调(例如[35])。 本文的第二个主要贡献是,在大辅助数据集上进行有监督的预训练(ILSVRC),然后在小数据集上进行特定领域的微调(PASCAL),是在数据稀缺时学习大容量CNN的有效范例。在我们的实验中,检测微调将mAP性能提高了8个百分点。 经过微调后,我们的系统在VOC 2010上实现了54%的mAP,而在经过高度调整的基于HOG的可变形零件模型(DPM)上实现了33%[17,20]。 我们还向读者介绍了Donahue等人[12]的同期工作,他们表明Krizhevsky的CNN可以用作(无需微调)黑盒特征提取器,在场景分类、细粒度子分类和域自适应等多个识别任务中产生优异的性能。
我们的系统也相当高效。唯一特定于类的计算是一个相当小的矩阵向量积和贪婪的非最大值抑制。 这种计算特性来源于所有类别中共享的特征,这些特征的维数也比以前使用的区域特征低两个数量级(参见[39])。
了解我们方法的失效模式对于改进它也至关重要,因此我们报告了Hoiem等人[23]的检测分析工具的结果。 作为这一分析的直接结果,我们证明了一种简单的边界盒回归方法显著减少了错误定位,这是主要的错误模式。
在开发技术细节之前,我们注意到,由于R-CNN在区域上运行,因此自然会将其扩展到语义分割任务。 经过少量修改,我们在PASCAL VOC分割任务上也取得了有竞争力的结果,在VOC 2011测试集上的平均分割准确率为47.9%。
2、Object detection with R-CNN
我们的目标检测系统由三个模块组成。第一个模块生成独立于类别的区域提案。这些建议定义了我们的检测器可用的候选检测集。 第二个模块是一个大型卷积神经网络,它从每个区域提取一个固定长度的特征向量。第三个模块是一组特定于类的线性支持向量机。 在本节中,我们将介绍每个模块的设计决策,描述它们的测试时间使用情况,详细说明如何学习它们的参数,并显示PASCAL VOC 2010-12和ILSVRC2013的检测结果。
2.1 Module design
Region proposals
最近的各种论文提供了生成独立于类别的区域提案的方法。
例如:对象性[1]、选择性搜索[39]、独立于类别的对象建议[14]、约束参数最小割(CPMC)[5]、多尺度组合分组[3]和Cires¸an等人[6],他们通过将CNN应用于规则间隔的方形作物来检测有丝分裂细胞,这是区域建议的特例。 虽然R-CNN对特定的区域建议方法不可知,但我们使用选择性搜索来实现与先前检测工作的受控比较(例如[39,41])。
Feature extraction
我们使用Krizhevsky等人[25]描述的CNN的Caffe[24]实现,从每个区域建议中提取4096维特征向量。 特征是通过将一个平均裁剪成227×227的RGB图像通过五个卷积层和两个完全连接的层向前传播来计算的。我们请读者参考[24,25]了解更多网络架构细节。
为了计算区域提案的特征,我们必须首先将该区域的图像数据转换为与CNN兼容的形式(其架构需要固定的227×227像素大小的输入)。在任意形状区域的许多可能变换中,我们选择最简单的。 无论候选区域的大小或纵横比如何,我们都会将其周围紧边界框中的所有像素扭曲到所需的大小。 在扭曲之前,我们扩展紧边界框,以便在扭曲大小下,原始框周围正好有p个扭曲图像上下文像素(我们使用p=16)。图2显示了扭曲训练区域的随机抽样。附录A中讨论了扭曲的替代方案。
2.2 Test-time detection
在测试时,我们对测试图像进行选择性搜索,以提取大约2000个区域建议(我们在所有实验中使用选择性搜索的“快速模式”)。我们扭曲每个提案,并通过CNN向前传播,以便计算特征。 然后,对于每个类,我们使用为该类训练的SVM对每个提取的特征向量进行评分。 给定一幅图像中的所有评分区域,我们应用贪婪的非最大值抑制(独立地针对每个类别),如果某个区域与评分较高的选定区域(大于学习阈值)存在交并集(IoU)重叠,则拒绝该区域。
Run-time analysis
两个特性使检测有效。 首先,所有CNN参数在所有类别中共享。 第二,与其他常用方法相比,CNN计算的特征向量是低维的,例如带有bag-of-visual-word
encodings的空间金字塔。 UVA检测系统中使用的功能[39], 例如,比我们大两个数量级(360k和4k维度)。
这种共享的结果是,计算区域建议和功能所花费的时间(GPU上的13s/图像或CPU上的53s/图像)在所有类别中分摊。唯一的类特定计算是特征和SVM权重之间的点积以及非最大值抑制。 实际上,一幅图像的所有点积都被分批处理为一个矩阵积。 特征矩阵通常为2000×4096,SVM权重矩阵为4096×N,其中N是类数。
该分析表明,R-CNN可以扩展到数千个对象类,而无需使用近似技术,如哈希。即使有10万个类,在现代多核CPU上产生的矩阵乘法也只需要10秒。 这种效率不仅仅是使用区域建议和共享功能的结果。 由于其高维特性,UVA系统的速度将慢两个数量级,而仅存储100k线性预测值就需要134GB的内存,相比之下,我们的低维特性只有1.5GB。
将R-CNN与Dean等人最近关于使用DPMs和哈希进行可伸缩检测的工作进行对比也是很有趣的[8]。他们报告说,在引入10k分类训练时,VOC 2007的mAP约为16%,每幅图像的运行时间为5分钟。通过我们的方法,10k探测器可以在一个CPU上运行大约一分钟,因为没有进行近似计算,所以mAP将保持在59%(第3.2节)。
2.3 Training
Supervised pre-training
我们在一个大的辅助数据集(ILSVRC2012分类)上对CNN进行了区分性的预训练,只使用图像级注释(该数据没有边界框标签)。 使用开源的Caffe CNN库进行预训练[24]。简而言之,我们的CNN几乎与Krizhevsky等人[25]的表现相匹配,在ILSVRC2012分类验证集上获得了2.2个百分点的top-1错误率。 这种差异是由于训练过程中的简化。
Domain-specific fine-tuning
为了使我们的CNN适应新的任务(检测)和新的域(扭曲的建议窗口),我们只使用扭曲的区域建议继续对CNN参数进行随机梯度下降(SGD)训练。除了将CNN的ImageNetspecific 1000维分类层替换为随机初始化的(N+1)维分类层(其中N是对象类的数量,加上1是背景),CNN的体系结构没有改变。 对于VOC,N=20,对于ILSVRC2013,N=200。 我们将所有区域提案≥ 0.5个IoU与ground-truth框重叠,作为该框类的积极因素,其余部分作为消极因素。我们以0.001的学习率(初始预训练率的十分之一)启动SGD,这允许微调取得进展,同时不会破坏初始化。在每次SGD迭代中,我们对32个正窗口(所有类)和96个背景窗口进行统一采样,以构建一个128大小的小批量。 我们倾向于正面窗口取样,因为与背景相比,正面窗口极其罕见。
Object category classifiers
考虑训练一个二元分类器来检测汽车。很明显,紧紧包围汽车的图像区域应该是一个积极的例子。 同样,很明显,与汽车无关的背景区域应该是一个负面的例子。 不太清楚的是如何标记与汽车部分重叠的区域。 我们用一个IoU重叠阈值来解决这个问题,低于这个阈值的区域被定义为负区域。 重叠阈值0.3是通过对验证集上的{0,0.1,…,0.5}进行网格搜索来选择的。 我们发现仔细选择这个阈值很重要。将其设置为0.5,如[39]中所述,mAP减少了5个点。 类似地,将其设置为0会将mAP减少4个点。积极的例子被简单地定义为每个类的ground-truth边界框。
一旦提取了特征并应用了训练标签,我们就可以为每个类优化一个线性支持向量机。由于训练数据太大,无法存储在内存中,我们采用标准的hard negative mining方法[17,37]。 hard negative mining收敛速度很快,在实践中,只需对所有图像进行一次扫描,mAP就会停止增加。
在附录B中,我们将讨论为什么在微调和SVM训练中,正面和负面示例的定义不同。我们还讨论了训练检测支持向量机所涉及的权衡,而不是简单地使用微调CNN的最后一个softmax层的输出。
2.4 Result on PASCAL VOC 2010-12
按照PASCAL VOC最佳实践[15],我们在VOC 2007数据集(第3.2节)上验证了所有设计决策和超参数。 对于VOC 2010-12数据集的最终结果,我们微调了VOC 2012训练的CNN,并优化了VOC 2012训练的检测SVM。我们只向评估服务器提交了两个主要算法变量(有和没有边界框回归)的测试结果一次。
表1显示了2010年VOC的完整结果。我们将我们的方法与四个强基线进行比较,其中包括SEGDMP[18],它将DPM检测器与语义分割系统的输出相结合[4],并使用额外的检测器间上下文和图像分类器重新排序。最密切的比较是Uijlings等人[39]的UVA系统,因为我们的系统使用相同的区域建议算法。 为了对区域进行分类,他们的方法构建了一个四级空间金字塔,并用密集采样的SIFT、扩展的OpponentSIFT和RGBSIFT描述符填充它,每个向量都用4000字的码本量化。采用直方图相交核SVM进行分类。与他们的多特征非线性核SVM方法相比,我们在mAP方面取得了很大的改进,从35.1%提高到53.7%,同时速度也更快(第2.2节)。我们的方法在VOC 2011/12测试中达到了类似的性能(53.3%mAP)。
2.5 Results on ILSVRC2013 detection
我们在200类别的ILSVRC2013检测数据集上运行了R-CNN,使用的系统超参数与我们用于PASCAL VOC的系统超参数相同。 我们遵循相同的协议,只向ILSVRC2013评估服务器提交两次测试结果,一次使用边界框回归,一次不使用边界框回归。
图3将R-CNN与ILSVRC 2013年比赛的参赛作品以及赛后的OverFeat结果进行了比较[34]。 R-CNN获得了31.4%的mAP,大大领先于OverFeat的24.3%的第二好成绩。为了了解AP在不同类别上的分布情况,还提供了方框图,并在本文末尾的表8中列出了perclass APs表。大多数参赛作品(OverFeat、NEC-MU、UvAEuvision、Toronto A和UIUC-IFP)都使用了卷积神经网络,这表明CNN如何应用于目标检测存在显著差异,导致结果差异很大。
在第4节中,我们概述了ILSVRC2013检测数据集,并详细介绍了我们在该数据集上运行R-CNN时所做的选择。
3、Visualization,ablation,and modes of error
3.1 Visualizing learned features
第一层过滤器可以直接可视化,易于理解[25]。 它们捕捉定向边缘和相对的颜色。理解后续层更具挑战性。Zeiler和Fergus在[42]中提出了一种具有视觉吸引力的反卷积方法。 我们提出了一种简单的(互补的)非参数方法,直接显示网络学习的内容。
其想法是在网络中挑出一个特定的单元(特征),并将其当作一个目标探测器来使用。 也就是说,我们计算单元对一大组保留区域建议(约1000万)的激活,将建议从最高激活排序到最低激活,执行非最大抑制,然后显示得分最高的区域。我们的方法通过精确显示所选单元触发的输入,让它“为自己说话”。为了看到不同的视觉模式,我们避免平均化,并深入了解单位计算的不变性。
我们将第5层的单位可视化,这是网络第五层也是最后一层卷积的maxpooled输出。
p
o
o
l
5
pool_{5}
pool5特征图为6x6x256=9216维。忽略边界效应,每个
p
o
o
l
5
pool_{5}
pool5单元在原始227×227像素输入中具有195×195像素的感受野。 中央的
p
o
o
l
5
pool_{5}
pool5单元几乎可以看到全局视图,而靠近边缘的一个单元则有一个较小的clipped support。
图4中的每一行显示了我们在VOC 2007 trainval上微调的CNN中pool5单元的前16个激活。256个功能独特的单元中有六个是可视化的(附录D包括更多)。 选择这些单元是为了展示网络学习内容的代表性样本。在第二排,我们看到一个单位,对狗脸和点阵fires。 与第三排相对应的单元是一个红色斑点检测器。还有人脸检测器和更抽象的模式,如文本和带窗口的三角形结构。 该网络似乎学习了一种表示法,它将少量经过类调整的特征与形状、纹理、颜色和材料属性的分布式表示结合在一起。随后的完全连接层
f
c
6
fc_{6}
fc6能够模拟这些丰富特征的大量组合。
3.2 Ablation studies
Performance layer-by-layer, without fine-tuning
为了了解哪一层对检测性能至关重要,我们分析了CNN最后三层在VOC 2007数据集的结果。 第3.1节简要介绍了
p
o
o
l
5
pool_{5}
pool5层。最后两层总结如下。
f
c
6
fc_{6}
fc6层全连接到
p
o
o
l
5
pool_{5}
pool5层。为了计算特征,它将4096x9216权重矩阵乘以
p
o
o
l
5
pool_{5}
pool5特征图(reshape成9216维向量),然后添加一个偏差向量。该中间向量维component-wise half-wave rectified:
(
x
←
m
a
x
(
0
,
x
)
(xleftarrow max(0,x)
(x←max(0,x)。
f
c
7
fc_{7}
fc7层是网络的最后一层。通过将
f
c
6
fc_{6}
fc6计算出的特征乘以4096x4096权重矩阵,并类似地添加偏差向量和应用half-wave rectification来实现。
我们首先查看CNN的结果,不对PASCAL进行微调,即所有CNN参数仅在ILSVRC2012上进行预训练。逐层分析性能(表2第1-3行)表明,
f
c
7
fc_{7}
fc7层的特征概括起来比
f
c
6
fc_{6}
fc6层的特征更差。这意味着,在不降低mAP的情况下,可以删除CNN 29%或1680万个参数。令人惊讶的是,删除
f
c
7
fc_{7}
fc7和
f
c
6
fc_{6}
fc6会产生很好的结果,尽管
p
o
o
l
5
pool_{5}
pool5仅使用CNN6%的参数计算特征。CNN的大部分代表性力量来自其卷积层,而不是更大的密集连接层。这一发现表明,仅使用CNN的卷积层就可以计算任意大小图像的密集特征图(从HOG的角度来看)。这种表示法可以在
p
o
o
l
5
pool_{5}
pool5功能的基础上进行滑动窗口检测器的实验,包括DPM。
Performance layer-by-layer, with fine-tuning.
在VOC 2007 trainval上微调了CNN的参数后,我们现在来看一下CNN的结果。改进是惊人的(表2第4-6行):微调将mAP提高了8.0个百分点,达到54.2%。 KaTeX parse error: Expected '}', got 'EOF' at end of input: fc_{6和 f c 7 fc_{7} fc7的微调带来的提升要比 p o o l 5 pool_{5} pool5大得多,这表明从ImageNet中学到的 p o o l 5 pool_{5} pool5的功能是通用的,大多数改进都是通过学习特定领域的非线性分类器获得的。
Comparison to recent feature learning methods.
在PASCAL VOC检测中尝试的特征学习方法相对较少。我们将介绍两种基于deformable part模型的最新方法。作为参考,我们还包括基于标准HOG的DPM的结果[20]。
第一种DPM特征学习方法DPM ST使用"sketch token"概率的直方图来增强HOG特征。直观地说,sketch token是通过图像块中心的紧密分布的轮廓。sketch token概率由一个随机森林在每个像素处计算,该森林经过训练,可将35×35像素的斑块分类为150个草图标记或背景中的一个。
第二种方法DPM HSC[31]用稀疏码直方图(HSC)代替HOG。为了计算HSC,使用100个7×7像素(灰度)原子的学习字典来求解每个像素处的稀疏代码激活。由此产生的激活以三种方式(全波和两种半波)进行校正,空间合并,单元
l
2
l_{2}
l2标准化,然后功率转换
x
←
s
i
g
n
(
x
)
∣
x
∣
a
xleftarrow sign(x)|x|^a
x←sign(x)∣x∣a。
所有R-CNN变体的性能都明显优于三个DPM基线(表2第8-10行),包括使用特征学习的两个。 与只使用HOG功能的最新版本DPM相比,我们的mAP高出了20多个百分点:54.2%比33.7%——相对提高了61%。HOG和sketch tokens的组合比单独的HOG产生2.5个mAP点,而HSC比HOG提高了4个mAP点(与它们的私有DPM基线进行内部比较时,两者都使用性能低于开源版本的非公开DPM实现[20])。 这些方法分别实现了29.1%和34.3%的mAP。
3.3 Network architectures
本文中的大多数结果使用了Krizhevsky等人[25]的网络体系结构。 然而,我们发现,架构的选择对R-CNN检测性能有很大影响。在表3中,我们展示了使用Simonyan和Zisserman最近提出的16层深度网络进行VOC 2007测试的结果[43]。 该网络是最近的ILSVRC 2014分类挑战赛中表现最好的网络之一。 该网络具有由13层3×3卷积核组成的homogeneous结构,其中有5层最大池层,顶部有3层全连接层。我们将OxfordNet称为"O-Net",而对于TorontoNet,我们将baseline称为"T-Net"。为了在R-CNN中使用O-Net,我们从Caffe model Zoo下载了VGG ILSVRC 16层模型的公开预训练网络权重。然后,我们使用与T-Net相同的协议对网络进行了微调。唯一的区别是根据需要使用更小的小批量(24个示例),以适应GPU内存。表3中的结果显示,使用O-Net的RCNN显著优于使用TNet的R-CNN,mAP从58.5%增加到66.0%。然而,在计算时间方面有一个相当大的缺点,O-Net的前向传递时间大约是T-Net的7倍。
3.4 Detection error analysis
我们应用了来自Hoiem等人[23]的优秀检测分析工具,以揭示我们方法的错误模式,了解微调如何改变它们,并查看我们的错误类型与DPM的比较。 分析工具的完整摘要超出了本文的范围,我们鼓励读者参考[23]以了解一些更详细的细节(如“标准化AP”)。 由于分析最好集中在相关图的上下文中,因此我们在图5和图6的标题中进行讨论。附录C中给出了全部细节。表1、表2和图5中的结果表明,这种简单的方法修复了大量定位错误的检测,将mAP提高了3到4个点。
3.6 Qualitative results
ILSVRC2013的定性检测结果如本文末尾的图8和图9所示。每个图像都是从val2集合中随机抽样的,显示了所有探测器的所有检测结果,精度大于0.5。请注意,这些都不是精心策划的,给人一个探测器实际运行的印象。更多定性结果如图10和图11所示,但这些结果都是经过策划的。我们选择每张图片是因为它包含有趣、令人惊讶或有趣的结果。这里还显示了精度大于0.5的所有检测。
4、The ILSVRC2013 detection dataset
在第2节中,我们介绍了ILSVRC2013检测数据集的结果。
该数据集不如PASCAL VOChomogeneous,需要选择如何使用它。由于这些决定并非微不足道,我们将在本节中介绍它们。
4.1 Dataset overview
ILSVRC2013检测数据集分为三组:train(395918)、val(20121)和test(40152),每组中的图像数在括号中。验证和测试分割来自相同的图像分布。 这些图像与PASCAL VOC图像类似,在复杂度(对象数量、杂波数量、姿势变化等)方面与PASCAL VOC图像相似。val和test拆分被详尽地注释,这意味着在每个图像中,所有200个类的所有实例都用边界框标记。 相比之下,train组是从ILSVRC2013分类图像分布中提取的。这些图像具有更多可变的复杂度,并单个中心对象的图像居多。与val和test不同,train图像(由于其数量庞大)没有进行详尽的注释。 在任何给定的train图像中,200个类别的实例可能会被标记,也可能不会被标记。 除了这些图像集,每个类还有一组额外的负向图像。负向图像会被手动检查,以验证它们不包含其关联类的任何实例。这项工作中没有使用负向图像集。关于ILSVRC是如何收集和注释的更多信息,请参见[11,36]。
这些split的性质为训练R-CNN提供了许多选择。train图像不能用于hard negative挖掘,因为注释并不详尽。负面例子应该从哪里来?此外,train图像与val和test具有不同的统计信息。 是否应该使用train图像,如果是,使用到什么程度?虽然我们还没有对大量的选择进行彻底评估,但根据之前的经验,我们提出了似乎是最明显的路径。
我们的总体策略是高度依赖val集,并使用一些train图像作为正面示例的辅助来源。为了使用val进行训练和验证,我们将其分为大小大致相同的“val1”和“val2”集合。由于一些类在val中的示例非常少(最小的类只有31个,一半的类少于110个),所以生成一个近似类平衡的分区很重要。 为此,生成了大量候选拆分,并选择了最大相对类不平衡最小的拆分。每个候选分割都是通过使用val图像的类计数作为特征进行聚类生成的,然后进行随机局部搜索,这可能会改善分割平衡。此处使用的特定分割的最大相对不平衡约为11%,中间相对不平衡约为4%。val1/val2拆分和用于生成它们的代码将公开,以允许其他研究人员在本报告中使用的val拆分上比较他们的方法。
4.2 Region proposals
我们采用了与PASCAL检测相同的区域建议方法。选择性搜索[39]是在“快速模式”下对val1、val2和test中的每个图像运行的(但不是对train中的图像)。需要进行一个小的修改,以处理选择性搜索不是尺度不变的,因此生成的区域数取决于图像分辨率的事实。ILSVRC图像大小从非常小到几百万像素不等,因此在运行选择性搜索之前,我们将每个图像的大小调整为固定宽度(500像素)。 在val上,选择性搜索平均得到每幅图像2403个区域建议,所有ground-truth边界框的召回率为91.6%(IoU阈值为0.5)。 这一召回率明显低于PASCAL的召回率,后者约为98%,表明该数据集在提案阶段还有很大的改进空间。
4.3 Training data
对于训练数据,我们形成了一组图像和方框,其中包括val1中的所有选择性搜索和ground-truth边界框,以及来自train的每个类最多N个ground truth边界框(如果一个类在train中的ground truth边界框少于N个,则我们取所有)。我们将这个图像和boxes的数据集称为val1+trainN。在一项消融研究中,我们在val2上显示了N的mAP∈ {0,500,1000}(第4.5节)。
R-CNN中的三个程序需要训练数据:
(1) CNN微调
(2)检测器SVM训练
(3)bounding box回归训练
CNN微调是在val1+trainN上运行的50k次SGD迭代,使用与PASCAL完全相同的设置。 使用Caffe对单个NVIDIA Tesla K20进行微调需要13个小时。对于SVM训练,val1+trainN的所有ground-truth边界框都被用作各类别的正面示例。hard negative挖掘是在val1中随机选取的5000张图像子集上进行的。一项初步实验表明,与5000个图像子集(大约一半)相比,从所有val1中挖掘负样本只会导致mAP下降0.5个百分点,同时将SVM训练时间减半。 由于注释并非详尽无遗,因此未从train中选取负面示例。没有使用额外的一组经验证的负样本图像。bounding-box回归器是在val1上训练的。
4.4 Validation and evaluation
在将结果提交给评估服务器之前,我们使用上述训练数据验证了数据使用选择以及微调和边界框回归对val2集的影响。 所有系统超参数(例如,SVM C超参数、区域扭曲中使用的填充、NMS阈值、边界框回归超参数)都固定在用于PASCAL的相同值。所有系统超参数(例如,SVM C超参数、区域扭曲中使用的填充、NMS阈值、边界框回归超参数)都固定在用于PASCAL的相同值。 毫无疑问,对于ILSVRC来说,这些超参数选择中的一些是稍微次优的,然而,这项工作的目标是在ILSVRC上产生一个初步的R-CNN结果,而无需对数据集进行大量调整。在val2上选择了最佳选项后,我们向ILSVRC2013评估服务器提交了两个结果文件。第一次提交没有边界框回归,第二次提交有边界框回归。对于这些提交,我们扩展了SVM和boundingbox回归器训练集,分别使用val+train1k和val。我们使用了在val1+train1k上进行微调的CNN,以避免重新运行微调和功能计算。
4.5 Ablation study
表4显示了不同数量的训练数据、微调和边界盒回归的影响。第一个观察结果是val2上的mAP与测试上的mAP非常接近。这让我们相信,val2上的mAP是测试集性能的良好指标。第一个结果(20.9%)是R-CNN使用在ILSVRC2012分类数据集上预训练的CNN(无微调)实现的结果,并允许访问val1中的少量训练数据(回想一下,val1中一半的类有15到55个示例)。 将训练集扩展到val1+trainN,将性能提高到24.1%,基本上N=500和N=1000之间没有差异。只使用val1中的示例对CNN进行微调,可使其略微改善至26.5%,但由于正面训练示例数量较少,因此可能存在明显的过度拟合。将微调集扩展到val1+train1k,这将使每个类从train集中获得1000个正面示例,这将极大地帮助mAP提高到29.7%。Bounding box回归将结果提高到31.0%,这是在PASCAL中观察到的较小的相对增益。
4.6 Relationship to OverFeat
R-CNN和OverFeat之间有一个有趣的关系:OverFeat可以(大致)看作是R-CNN的一个特例。如果要用规则方形区域的多尺度金字塔替换选择性搜索区域建议,并将每类边界框回归器更改为单个边界框回归器,然后,这两个系统将非常相似(将它们在训练方式上的一些潜在显著差异模块化:CNN检测微调、使用支持向量机等)。值得注意的是,OverFeat比R-CNN有一个显著的速度优势:根据[34]中引用的每幅图像2秒的数字,它大约快9倍。这种速度来自这样一个事实:OverFeat的滑动窗口(即区域建议)在图像级别没有扭曲,因此计算可以在重叠窗口之间轻松共享。共享是通过在任意大小的输入上以卷积方式运行整个网络来实现的。加快R-CNN的速度应该可以通过多种方式实现,并且仍然是未来的工作。
5、Semantic segmentation
区域分类是语义分割的标准技术,使我们能够轻松地将R-CNN应用于PASCAL VOC分割挑战。 为了便于与当前领先的语义分割系统(称为O2P,表示“二阶池”)进行直接比较[4],我们在它们的开源框架内工作。O2P使用CPMC为每幅图像生成150个区域建议,然后使用支持向量回归(SVR)预测每个类别的每个区域的质量。他们的方法的高性能是由于CPMC区域的质量和多个特征类型的强大二阶池(SIFT和LBP的丰富变体)。我们还注意到,Farabet等人[16]最近使用CNN作为多尺度每像素分类器,在几个密集场景标记数据集(不包括PASCAL)上显示了良好的结果。我们遵循[2,4]并扩展PASCAL分割训练集,以包括Hariharan等人[22]提供的额外注释。设计决策和超参数在VOC 2011验证集上进行交叉验证。最终测试结果只评估了一次。
CNN features for segmentation
我们评估了在CPMC区域上计算特征的三种策略,所有这些策略都是从将该区域周围的矩形窗口扭曲为227×227开始的。第一种策略(完整)忽略区域的形状,直接在扭曲的窗口上计算CNN特征,就像我们在检测时所做的那样。然而,这些特征忽略了区域的非矩形形状。两个区域可能有非常相似的边界框,但几乎没有重叠。因此,第二种策略(fg)只计算区域前景mask上的CNN特征。我们用平均输入替换背景,这样在平均减法后背景区域为零。第三种策略(full+fg)简单地将full和fg功能连接起来;我们的实验验证了它们的互补性。
Results on VOC 2011
表5显示了我们对VOC 2011验证集与O2P验证集的结果总结。(关于每个类别的完整结果,请参见附录E。)在每个特征计算策略中,fc6层的性能始终优于fc7层,以下讨论涉及fc6特征。fg策略略优于full策略,这表明masked区域形状提供了更强的信号,符合我们的直觉。然而,full+fg的平均准确率为47.9%,我们的最佳结果为4.2%(也略微优于O2P),这表明即使考虑到fg功能,完整功能提供的上下文信息也非常丰富。值得注意的是,在我们的full+fg功能上训练20个SVRs需要一个小时,而在O2P功能上训练需要10多个小时。
在表6中,我们展示了2011年VOC测试集的结果,将我们的最佳执行方法fc6(full+fg)与两个强基线进行了比较。我们的方法在21个类别中的11个类别中实现了最高的分割精度,在所有类别中平均的整体分割精度最高,为47.9%(但在任何合理的误差范围下,可能与O2P结果相关)。通过微调可能会获得更好的性能。
6、Conclusion
近年来,目标检测性能停滞不前。性能最好的系统是将多个低级图像特征与来自目标检测器和场景分类器的高级上下文相结合的复杂集合。本文提出了一种简单且可扩展的目标检测算法,与PASCAL VOC 2012上的最佳结果相比,该算法相对提高了30%。
我们通过两种思路实现了这一性能。第一种方法是将大容量卷积神经网络应用于自底向上的区域建议,以便定位和分割对象。第二种是在标记的训练数据稀缺时训练大型CNN的范例。我们表明,对网络进行预训练是非常有效的——对数据丰富的辅助任务(图像分类)进行监督,然后对数据稀缺的目标任务(检测)进行微调。我们推测,“有监督的预训练特定领域的微调”范式将对各种数据稀缺的视觉问题非常有效。
最后,我们指出,通过结合使用计算机视觉和深度学习(自下而上区域建议和卷积神经网络)的经典工具,我们取得了这些结果,这是非常重要的。这两种不是对立的科学研究路线,而是自然和不可避免的伙伴。
最后
以上就是诚心超短裙为你收集整理的Rich feature hierarchies for accurate object detection and semantic segmentation的全部内容,希望文章能够帮你解决Rich feature hierarchies for accurate object detection and semantic segmentation所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复