(目标检测篇)系列文章目录
第一章:R-CNN网络详解
第二章:Fast R-CNN网络详解
第三章:Faster R-CNN网络详解
第四章:YOLO v1网络详解
第五章:YOLO v2网络详解
第六章:YOLO v3网络详解
文章目录
- 系列文章目录
- 技术干货集锦
- 前言
- 一、摘要
- 二、正文分析
- 1.引入库
- 2.读入数据
- 总结
技术干货集锦
RCNN算法流程可分为4个步骤:
- 一张图像生成1k~2k个候选区域(使用Selective Search方法)
候选区域的生成:利用Selctive Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。
Selective Search是一种基于图像分割的目标检测方法。目标检测是计算机视觉中的一个重要任务,其目的是在图像中识别和定位特定的目标。
Selective Search方法通过将图像分割成多个区域来进行目标检测。它采用了一种自底向上的策略,首先通过图像的低层特征对图像进行初始分割,然后逐步合并相似的区域,直到得到最终的分割结果。
具体而言,Selective Search方法包含以下几个步骤:
1.初始分割:使用图像的低层特征(如颜色、纹理等)对图像进行初始分割,得到多个小的区域。
2.区域相似性计算:计算每对相邻区域之间的相似性得分,常用的相似性度量方法包括颜色直方图、纹理特征等。
3.区域合并:根据相似性得分,将相似度较高的区域进行合并,得到一些更大的区域。
4.重复步骤3直到结束条件满足:重复进行区域合并的步骤,直到满足某个结束条件,如合并的区域数量达到预设的阈值。
5.生成候选框:根据最终的分割结果,生成一系列的候选框,这些候选框可能包含了图像中的目标。
Selective Search方法的优点是能够生成大量的候选框,从而增加了目标检测的召回率。然而,由于Selective Search是一种启发式的方法,其结果可能不完全准确,可能会产生一些误检测的候选框。因此,Selective Search通常会与其他目标检测算法结合使用,以提高检测的准确性和效率。
- 对每个候选区域,使用深度网络提取特征
将2000个候选区域缩放到227x227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络,获取4096维的特征得到2000x4096维矩阵
- 特征送入每一类SVM分类器,判别是否属于该类
将2000x4096维特征与20个SVM组成的权值矩阵4096x20相乘,获得2000x20维矩阵表示每个建议框是某个目标类别的得分。分别对上述2000x20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的建议框。
SVM(Support Vector Machine)是一种常用的监督学习方法,用于进行二分类或多分类任务。它基于统计学习理论中的结构风险最小化原则,通过在特征空间中找到一个最优的超平面来进行分类。
SVM分类器的核心思想是将样本映射到一个高维特征空间,使得在该空间中的样本能够被一个超平面进行最优的分割。在二分类任务中,SVM分类器的目标是找到一个能够最大化两个类别之间的间隔(即支持向量)的超平面。这个超平面可以通过求解一个凸优化问题来得到,其中的支持向量即为离超平面最近的样本点。
SVM分类器的优点包括:
1.在高维空间中进行分类,可以处理非线性问题,通过核函数的引入,可以将样本从原始空间映射到一个更高维的特征空间,从而能够处理复杂的分类问题。
2.在训练过程中,只有支持向量对最终的分类决策起作用,大大减少了模型的复杂度,降低了存储和计算的开销。
3.SVM分类器对于样本点的位置和数量没有要求,只关注于支持向量,使得模型对于噪声和异常值具有较强的鲁棒性。
4.SVM分类器的泛化能力较强,可以有效地处理小样本问题。
然而,SVM分类器也存在一些缺点:
5.SVM分类器对于大规模数据集的训练时间较长,尤其是在高维空间中。
SVM分类器对于参数的选择比较敏感,如核函数的选择和正则化参数的调节,需要通过交叉验证等方法进行调优。
6.SVM分类器无法直接处理多分类问题,需要通过一些扩展方法进行处理,如OVO(One-vs-One)或OVR(One-vs-Rest)。
8.SVM分类器在处理不平衡数据集时,容易受到少数类样本的影响,需要进行样本平衡处理。
总体而言,SVM分类器是一种强大的分类器,在很多实际应用中取得了较好的效果,特别是在小样本、非线性和高维数据的分类问题上。
- 使用回归器精修正候选框位置
对NMS处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别的中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box.
如图,黄色框口P表示建议框Region Proposal,绿色框G表示实际框Ground Truth,红色窗口hat(G)表示Reigion Proposal 进行回归后的预测窗口,可以用最小二乘法解决的线性回归问题。
依旧针对CNN输出的特征向量进行预测(x,y,wa,ha)
R-CNN框架
Region proposal(Selective Search) | |
Feature ectraction(CNN) | |
Classification(SVM) | Bounding-box regression(regression) |
R-CNN存在的问题:
- 测试速度慢
测试一张图片约53s(CPU)。用Selctive Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
- 训练速度慢
过程极其繁琐
- 训练所需空间大
对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘,对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间。
前言
特征很重要。过去十年在各种视觉识别任务上取得的进展主要基于SIFT [29]和HOG [7]的使用。但是如果我们看一下在经典的视觉识别任务PASCAL VOC目标检测 [15]上的表现,普遍认为在2010年至2012年期间进展缓慢,只通过构建集成系统和使用成功方法的轻微变体获得了小幅增益。SIFT和HOG是基于块状方向直方图的表示方法,我们可以将其粗略地与灵长类动物视觉通路中的V1区的复杂细胞相关联。但我们也知道,识别发生在下游的几个阶段,这表明可能存在用于计算更具信息的视觉识别特征的分层多阶段过程。福岛的“新认知器”[19]是一种生物启发的用于模式识别的分层和平移不变模型的早期尝试。然而,新认知器缺乏有监督的训练算法。基于Rumelhart等人的工作[33],LeCun等人[26]表明,通过反向传播的随机梯度下降对于训练卷积神经网络(CNN)是有效的,CNN是一类扩展了新认知器的模型。
卷积神经网络(CNN)在1990年代得到广泛应用(例如[27]),但随着支持向量机的崛起,逐渐不再流行。然而,在2012年,Krizhevsky等人[25]通过在ImageNet大规模视觉识别挑战(ILSVRC)上展示了显著更高的图像分类准确性,重新引起了对CNN的兴趣。他们的成功是通过在120万张带标签的图像上训练一个大型CNN,并对LeCun的CNN进行了一些改进(例如使用max(x;0)修正非线性和“dropout”正则化)。ImageNet结果的重要性在ILSVRC 2012研讨会上进行了激烈的辩论。核心问题可以归结为以下几点:CNN在ImageNet上的分类结果在PASCAL VOC挑战赛的目标检测结果中能否推广使用?
我们通过弥合图像分类和目标检测之间的差距来回答这个问题。本文是第一个展示CNN相对于基于更简单的类似HOG特征的系统,在PASCAL VOC上可以显著提高目标检测性能的研究。为了达到这个结果,我们关注了两个问题:使用深度网络定位目标和使用仅有少量标注检测数据训练高容量模型。与图像分类不同,目标检测需要在图像中定位(可能是很多)目标。一种方法是将定位视为回归问题。然而,与我们同时进行的Szegedy等人的研究表明,这种策略在实践中可能效果不佳(他们在VOC 2007上报告的mAP为30.5%,而我们的方法达到了58.5%)。另一种选择是构建一个滑动窗口检测器。至少在过去的二十年中,CNN已经被用于这种方式,通常用于受限的目标类别,如人脸[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个百分点。微调后,与高度调整的基于HOG的可变形部件模型(DPM)[17,20]的33%相比,我们的系统在VOC 2010上实现了54%的mAP。我们还指向Donahue等人的同时工作[12],他们表明Krizhevsky的CNN可以(无需微调)作为一个黑盒特征提取器使用,在包括场景分类、细粒度子分类和领域适应在内的几个识别任务上取得了出色的性能。我们的系统也非常高效。唯一的类别特定计算是一个相当小的矩阵-向量乘法和贪婪的非最大值抑制。这种计算特性是因为特征在所有类别之间共享,并且比之前使用的区域特征的维度低两个数量级(参考[39])。理解我们方法的失败模式对于改进它非常重要,因此我们报告了Hoiem等人的检测分析工具的结果。作为这个分析的直接结果,我们证明了一个简单的边界框回归方法可以显著减少错误定位,这是主要的错误模式。在开发技术细节之前,我们需要注意的是,由于R-CNN在区域上操作,将其扩展到语义分割任务是很自然的。经过轻微修改,我们在PASCAL VOC分割任务上也取得了竞争性的结果,VOC 2011测试集的平均分割准确率为47.9%。
(图1:目标检测系统概述。我们的系统(1)接收输入图像,(2)提取约2000个自底向上的区域建议,(3)使用一个大型卷积神经网络(CNN)为每个建议计算特征,然后(4)使用类别特定的线性支持向量机对每个区域进行分类。R-CNN在PASCAL VOC 2010上实现了53.7%的平均精度(mAP)。作为对比,[39]使用相同的区域建议,但采用了空间金字塔和视觉词袋方法,报告了35.1%的mAP。流行的可变形零件模型的表现为33.4%。在200类的ILSVRC2013检测数据集上,R-CNN的mAP为31.4%,较之前最好结果为24.3%的OverFeat [34]有了显著的提升。)
1.这篇论文的研究目的是提出一种简单且可扩展的检测算法,能够在PASCAL VOC数据集上显著提高平均准确率。
2.这篇论文的研究背景是对目标检测算法在PASCAL VOC数据集上性能稳定的现状进行了探讨。
3.这篇论文的主要论点是该论文提出的算法可以在PASCAL VOC数据集上比之前最好的结果提升超过30%的平均准确率,取得了53.3%的结果。
4.之前的研究方法多是复杂的集成系统,通常将多个低层次图像特征与高层次的上下文相结合。这些方法存在的问题是性能提升缓慢且难以扩展。
5.这篇论文提出的研究方法是将高容量的卷积神经网络应用于自底向上的区域提议,以定位和分割目标。同时,在标记样本有限的情况下,采用监督预训练和领域特定微调的方法可以显著提升性能。
6.论文的研究发现是通过将区域提议与卷积神经网络相结合,可以在PASCAL VOC数据集上达到显著的性能提升。然而,研究的局限性在于对其他数据集的推广性尚未进行深入探究。
一、摘要
目标检测性能,以在规范的PASCAL VOC数据集上测量为基准,在过去几年中出现了平稳状态。表现最佳的方法是复杂的整体系统,通常将多个低级图像特征与高级上下文结合起来。在本文中,我们提出了一种简单且可扩展的检测算法,相对于VOC 2012上以前的最佳结果,平均准确度(mAP)提高了超过30%,达到53.3%的mAP。我们的方法结合了两个关键观点:(1)可以将高容量的卷积神经网络(CNN)应用于自底向上的区域提议,以定位和分割目标;(2)当标记的训练数据稀缺时,通过辅助任务的有监督预训练,再加以领域特定的微调,可以显著提高性能。由于我们将区域提议与CNN相结合,我们将我们的方法称为R-CNN:带有CNN特征的区域。我们还将R-CNN与OverFeat进行了比较,OverFeat是一个基于类似CNN架构的最近提出的滑动窗口检测器。我们发现R-CNN在200类ILSVRC2013检测数据集上远远优于OverFeat。完整系统的源代码可以在以下位置找到:http://www.cs.berkeley.edu/˜rbg/rcnn.
二、正文分析
2.使用R-CNN的目标检测
R-CNN的目标检测系统由三个模块组成。
第一个模块生成与类别无关的区域建议。这些建议定义了我们的检测器可用的候选检测集。
第二个模块是一个大型卷积神经网络,从每个区域中提取一个固定长度的特征向量。
第三个模块是一组类别特定的线性支持向量机。
在本节中,我们介绍了每个模块的设计决策,描述了它们在测试时的使用方式,详细说明了它们的参数如何学习,并展示了在PASCAL VOC 2010-12和ILSVRC2013上的检测结果。
(图2:来自VOC 2007训练集的扭曲训练样本)
2.1 模块设计
区域建议:
最近的一些论文提供了生成与类别无关的区域建议的方法。 特征提取:我们使用Caffe [24]实现的Krizhevsky等人描述的CNN,从每个区域建议中提取一个4096维的特征向量。特征是通过将一个均值减去的227×227 RGB图像通过五个卷积层和两个全连接层进行前向传播来计算的。关于网络架构的更多细节,请参考[24,25]。
为了计算区域建议的特征,我们首先必须将该区域中的图像数据转换为与CNN兼容的形式(其架构要求输入为固定的227×227像素大小)。在我们任意形状的区域的许多可能转换中,我们选择了最简单的方法。无论候选区域的大小或宽高比如何,我们将其周围的所有像素都扭曲到所需的大小的紧密边界框中。在扭曲之前,我们扩大紧密边界框,以便在扭曲后的尺寸中,在原始框周围有恰好p个像素的扭曲图像上下文(我们使用p =16)。图2显示了扭曲训练区域的随机采样。关于扭曲的替代方法,请参见附录A。
2.2. 测试阶段的检测
在测试阶段,我们对测试图像运行选择性搜索,提取约2000个区域建议(在所有实验中,我们使用选择性搜索的“快速模式”)。我们对每个建议进行扭曲,并通过CNN进行前向传播,以计算特征。然后,对于每个类别,我们使用为该类别训练的SVM对每个提取的特征向量进行评分。给定图像中的所有得分区域,我们对每个类别独立地应用贪婪非极大值抑制,如果一个区域与一个得分更高的选定区域的交集-并集(IoU)重叠大于一个学习阈值,则拒绝该区域。
运行时间分析
两个特性使得检测效率高效。首先,所有的CNN参数在所有类别之间共享。其次,与其他常见方法(如使用空间金字塔和视觉词袋编码)相比,CNN计算的特征向量维度较低。例如,UVA检测系统[39]使用的特征比我们的特征要大两个数量级(360k维度对比4k维度)。这种共享的结果是,计算区域建议和特征的时间(在GPU上每张图像花费13秒或在CPU上每张图像花费53秒)在所有类别上被分摊。唯一与类别相关的计算是特征和SVM权重之间的点积和非极大值抑制。实际上,一个图像的所有点积被批量化为一个矩阵乘法。特征矩阵通常是2000×4096,SVM权重矩阵是4096×N,其中N是类别的数量。这个分析显示,R-CNN可以扩展到成千上万的目标类别,而不需要使用哈希等近似技术。即使有10万个类别,结果的矩阵乘法在现代多核CPU上只需10秒钟。这种效率不仅仅是使用区域建议和共享特征的结果。由于其高维特征,UVA系统会慢两个数量级,而且需要134GB的内存来存储10万个线性预测器,而我们的低维特征只需要1.5GB的内存。将R-CNN与Dean等人最近关于使用DPM和哈希的可扩展检测工作进行对比也很有趣。当引入10k个干扰类别时,他们在VOC 2007上的运行时间为每张图像5分钟,mAP约为16%。而我们的方法,10k个检测器在CPU上可以在约一分钟内运行,并且由于没有进行近似处理,mAP将保持在59%(第3.2节)。
2.3. 训练
监督预训练:
我们在一个大型辅助数据集(ILSVRC2012分类)上对CNN进行鉴别性预训练,仅使用图像级别的注释(没有边界框标签)。预训练使用开源的Caffe CNN库[24]进行。简而言之,我们的CNN几乎与Krizhevsky等人的表现相当[25],在ILSVRC2012分类验证集上的top-1错误率高出2.2个百分点。这种差异是由于训练过程中的简化导致的。
领域特定的微调:
为了适应新的任务(检测)和新的领域(扭曲的建议窗口),我们使用仅扭曲的区域建议继续使用随机梯度下降(SGD)训练CNN参数。除了将CNN的ImageNet特定的1000类分类层替换为随机初始化的(N+1)类分类层(其中N是目标类别的数量,加上一个背景类),CNN的架构没有改变。对于VOC,N=20;对于ILSVRC2013,N=200。我们将与地面实况框具有≥0.5 IoU重叠的所有区域建议都视为该框所属类别的正样本,其余的则视为负样本。我们从学习率为0.001(预训练初始学习率的1/10)开始SGD,这样可以在不破坏初始化的情况下进行微调。在每个SGD迭代中,我们均匀地从所有类别中随机采样32个正窗口和96个背景窗口,构成一个大小为128的小批量。我们对采样进行偏置,使正窗口的采样比背景窗口的采样更加倾向,因为相对于背景来说,正窗口非常罕见。
对象类别分类器。
考虑训练一个二元分类器来检测汽车。很明显,一个紧密包围汽车的图像区域应该是一个正样本。同样地,一个与汽车无关的背景区域应该是一个负样本。不太清楚的是如何标记部分重叠汽车的区域。我们通过IoU重叠阈值来解决这个问题,低于这个阈值的区域被定义为负样本。在验证集上,通过在f0;0:1;:::;0:5g上进行网格搜索,我们选择了重叠阈值0.3。我们发现,仔细选择这个阈值非常重要。将其设置为0.5,如[39]中所示,会使mAP降低5个百分点。同样地,将其设置为0会使mAP降低4个百分点。正样本简单地被定义为每个类别的真实边界框。一旦特征被提取并应用训练标签,我们为每个类别优化一个线性SVM。由于训练数据太大而无法放入内存,我们采用标准的难负样本挖掘方法[17,37]。难负样本挖掘迅速收敛,在实践中,经过一次遍历所有图像后,mAP就不再增加。在附录B中,我们讨论了为什么微调和SVM训练中的正负样本定义不同。我们还讨论了训练检测SVM而不仅仅使用微调CNN的最后一个softmax层的输出所涉及的权衡。
2.4在PASCAL VOC 2010-12上的结果
根据PASCAL VOC的最佳实践[15],我们在VOC 2007数据集上验证了所有的设计决策和超参数(3.2节)。对于VOC 2010-12数据集的最终结果,我们在VOC 2012训练集上微调了CNN,并在VOC 2012 trainval上优化了我们的检测SVM。对于两种主要的算法变体(有和无边界框回归),我们只向评估服务器提交了一次测试结果。表1显示了VOC 2010的完整结果。我们将我们的方法与四个强基准进行了比较,包括SegDPM[18],它将DPM检测器与语义分割系统的输出相结合[4],并使用附加的互相检测器上下文和图像分类器重排序。最相关的比较是与Uijlings等人的UVA系统[39],因为我们的系统使用相同的区域提议算法。为了对区域进行分类,他们的方法构建了一个四级空间金字塔,并使用密集采样的SIFT、扩展对手SIFT和RGB SIFT描述符填充其中,每个向量使用4000词的代码本进行量化。使用直方图交集核SVM进行分类。与他们的多特征、非线性核SVM方法相比,我们在mAP上取得了很大的改进,从35.1%提高到53.7%,同时速度也大大提高(2.2节)。我们的方法在VOC 2011/12测试上实现了类似的性能(53.3% mAP)。
在ILSVRC2013检测上的结果
我们在200类ILSVRC2013检测数据集上运行了R-CNN,使用了与PASCAL VOC相同的系统超参数。我们遵循了将测试结果提交给ILSVRC2013评估服务器的相同协议,只提交了两次,一次包括边界框回归,一次不包括边界框回归。图3将R-CNN与ILSVRC2013竞赛中的其他参赛作品以及竞赛后的OverFeat结果[34]进行了比较。R-CNN的mAP为31.4%,明显领先于OverFeat的24.3%的第二名结果。为了给出每个类别的AP分布,我们还呈现了箱线图,并在本文末尾的表8中给出了每个类别的AP。大多数竞争作品(OverFeat、NEC-MU、UvA Euvision、Toronto A和UIUC-IFP)使用了卷积神经网络,这表明在如何将CNN应用于目标检测方面存在重要细微差别,导致结果差异很大。在第4节中,我们对ILSVRC2013检测数据集进行了概述,并提供了运行R-CNN时的选择细节。
3.可视化、消融和错误模式
3.1.可视化学习特征
第一层滤波器可以直接可视化,容易理解[25]。它们捕捉到了定向边缘和对立颜色。理解后续层次更具挑战性。Zeiler和Fergus在[42]中提出了一种视觉上有吸引力的解卷积方法。我们提出了一种简单(并且互补的)非参数方法,直接显示网络学到的内容。其思想是单独选择网络中的一个特定单元(特征),并将其视为一个独立的物体检测器。也就是说,我们在一个大型的保留区域建议集上计算该单元的激活,将建议按照激活程度从高到低进行排序,进行非极大值抑制,然后显示得分最高的区域。我们的方法通过显示该选定单元在哪些输入上发生激活来让该单元“自我表达”。为了看到不同的视觉模式并深入了解该单元计算的不变性,我们避免了平均化处理。
(表1:VOC 2010测试上的检测平均精度(%)。R-CNN与UVA和Regionlets最为直接可比,因为所有方法都使用了选择性搜索的区域提议。边界框回归(BB)在第C节中有描述。在发表时,SegDPM是PASCAL VOC排行榜上表现最好的方法。yDPM和SegDPM使用了其他方法没有使用的上下文重排序技术。)
(图3:(左)ILSVRC2013检测测试集上的平均精度。方法前面带有*的在所有情况下都使用了外部训练数据(来自ILSVRC分类数据集的图像和标签)。 (右)每种方法的200个平均精度值的箱线图。由于尚未提供每类别的平均精度(R-CNN的每类别平均精度在表8中,并在上传到arXiv.org的技术报告源中包含在内;参见R-CNN-ILSVRC2013-APs.txt),因此未显示竞赛后的OverFeat结果的箱线图。红线标记了中位数AP,箱底和箱顶分别表示第25个和第75个百分位数。须的末端延伸到每种方法的最小AP和最大AP。每个AP以绿色点的形式绘制在须上(最佳查看方式是使用缩放的数字图像))
(图4:六个pool5单元的顶部区域。感受野和激活值以白色绘制。一些单元与人物(第一行)或文本(第四行)等概念对齐。其他单元捕捉纹理和材料特性,例如点阵(第二行)和镜面反射(第六行))
(表2:VOC 2007测试集上的检测平均精度(%)。第1-3行显示了没有进行微调的R-CNN性能。第4-6行显示了在ILSVRC 2012上进行预训练的CNN,并在VOC 2007 trainval上进行微调(FT)的结果。第7行包括一个简单的边界框回归(BB)阶段,用于减少定位误差(第C节)。第8-10行以DPM方法作为强基线。第一个方法仅使用HOG,而接下来的两个方法使用不同的特征学习方法来增强或替换HOG。)
(表3:两种不同CNN架构在VOC 2007测试集上的检测平均精度(%)。前两行是使用Krizhevsky等人的架构(T-Net)的表2结果。第三行和第四行使用Simonyan和Zisserman最近提出的16层架构(O-Net)[43]。)
我们可视化了来自pool5层的单元,该层是网络的第五个和最后一个卷积层的最大池化输出。pool5特征图是6×6×256=9216维。忽略边界效应,每个pool5单元在原始的227×227像素输入中具有一个195×195像素的感受野。中央的pool5单元具有几乎全局的视野,而靠近边缘的单元具有较小的、被裁剪的支持区域。图4中的每一行显示了在我们在VOC 2007 trainval上进行微调的CNN中,一个pool5单元的前16个激活值。我们可视化了256个功能上独特的单元中的六个(附录D包含更多)。选择这些单元是为了展示网络学习到的代表性样本。在第二行中,我们可以看到一个在狗脸和点阵上激活的单元。对应于第三行的单元是一个红色斑点检测器。还有人脸检测器和更抽象的模式,例如文本和带有窗户的三角形结构。网络似乎学习到了一个将少量经过类别调整的特征与形状、纹理、颜色和材料特性的分布式表示相结合的表示形式。随后的全连接层fc6具有对这些丰富特征的大量组合进行建模的能力。
3.2.消融研究:
逐层分析性能,不进行微调。
为了了解哪些层对检测性能至关重要,我们分析了在VOC 2007数据集上CNN的最后三层的结果。pool5层在3.1节中简要描述过。最后两层的概述如下:fc6层与pool5层进行全连接。为了计算特征,它将一个4096×9216的权重矩阵与pool5特征图(重塑为9216维向量)相乘,然后加上一个偏置向量。这个中间向量经过逐元素的半波整流(x max(0;x))。fc7层是网络的最后一层。它通过将fc6计算的特征与一个4096×4096的权重矩阵相乘,并类似地加上一个偏置向量并进行半波整流来实现。我们首先看一下在未对PASCAL进行微调的CNN的结果,即所有CNN参数仅在ILSVRC 2012上进行了预训练。逐层分析性能(表2的1-3行)表明,与fc6的特征相比,fc7的特征的泛化性能较差。这意味着可以删除29%(约1680万个)的CNN参数,而不会降低mAP。更令人惊讶的是,即使只使用6%的CNN参数计算pool5特征,删除fc7和fc6也能得到相当不错的结果。CNN的很大一部分表征能力来自其卷积层,而不是更大的密集连接层。这一发现表明,通过仅使用CNN的卷积层,可以计算出一个稠密的特征图(类似于HOG),用于任意大小的图像。这种表示将使得在pool5特征之上进行滑动窗口检测器(包括DPM)的实验成为可能。
逐层性能,带微调。
现在我们来看一下在VOC 2007 trainval上微调了CNN参数之后的结果。改进是显著的(表2的4-6行):微调将mAP提高了8.0个百分点,达到了54.2%。微调对fc6和fc7的提升要大于对pool5的提升,这表明从ImageNet学到的pool5特征是通用的,大部分的改进来自于在其之上学习特定领域的非线性分类器。
与最近的特征学习方法相比较。
在PASCAL VOC检测中,尝试了相对较少的特征学习方法。我们看了两种基于可变形部件模型的最新方法。作为参考,我们还包括了基于标准HOG的DPM [20]的结果。第一种DPM特征学习方法,DPM ST [28],将HOG特征与“草图令牌”概率的直方图相结合。直观地说,草图令牌是通过图像块中心的紧密轮廓分布。草图令牌概率是通过一个随机森林在每个像素上计算得到的,该随机森林被训练为将35×35像素的图像块分类为150个草图令牌之一或背景。第二种方法,DPM HSC [31],用稀疏编码(HSC)的直方图替换了HOG。为了计算HSC,在每个像素上使用一个学习得到的100个7×7像素(灰度)原子的字典来求解稀疏编码激活。得到的激活以三种方式进行整流(全波和两个半波),然后进行空间池化、单位‘2归一化,并进行幂次变换(x sign(x)jxjα)。所有的R-CNN变体都明显优于这三个DPM基准(表2的8-10行),包括使用特征学习的两个方法。与仅使用HOG特征的最新版本的DPM相比,我们的mAP高出20个百分点以上:54.2%对33.7%——相对提升61%。HOG和草图令牌的组合比单独使用HOG提高了2.5个mAP点,而HSC相对于HOG的提升为4个mAP点(在与它们私有的DPM基准相比时——两者都使用了DPM的非公开实现,其性能低于开源版本[20])。这些方法分别达到了29.1%和34.3%的mAP。
3.3.网络架构
本文中的大部分结果使用了Krizhevsky等人提出的网络架构[25]。然而,我们发现选择不同的网络架构对R-CNN的检测性能有很大影响。在表3中,我们展示了使用Simonyan和Zisserman最近提出的16层深度网络在VOC 2007测试集上的结果[43]。这个网络是最近ILSVRC 2014分类挑战中表现最好的网络之一。该网络具有均匀的结构,由13层3×3的卷积核组成,其中夹杂着五个最大池化层,并在顶部是三个全连接层。我们将该网络称为“O-Net”代表OxfordNet,将基线网络称为“T-Net”代表TorontoNet。 为了在R-CNN中使用O-Net,我们从Caffe Model Zoo下载了VGG ILSVRC 16层模型的公开可用的预训练网络权重[1]。然后,我们使用与T-Net相同的协议对网络进行微调。唯一的区别是使用更小的小批量(24个样本),以适应GPU的内存限制。表3中的结果显示,使用O-Net的R-CNN明显优于使用T-Net的R-CNN,mAP从58.5%提高到了66.0%。然而,从计算时间上来看,O-Net的前向传递时间大约是T-Net的7倍,这是一个相当大的缺点。
3.4.错误分析
我们使用了Hoiem等人提出的优秀检测分析工具[23],以揭示我们方法的错误模式,了解微调如何改变这些错误模式,并比较我们的错误类型与DPM的情况。该分析工具的详细介绍超出了本文的范围,我们鼓励读者参考[23]以了解一些细节(如“归一化AP”)。由于分析最好在相关图表的背景下理解,我们在图5和图6的标题中进行了讨论。
3.5.边界框回归
根据错误分析,我们实现了一种简单的方法来减少定位错误。受DPM中使用的边界框回归的启发,我们训练了一个线性回归模型,根据选择性搜索区域提案的pool5特征,预测一个新的检测窗口。具体细节请参见附录C。表1、表2和图5的结果表明,这种简单的方法修复了大量定位错误,将mAP提升了3到4个百分点。
3.6.定性结果
本文末尾的图8和图9展示了ILSVRC2013上的定性检测结果。每个图像是从val2集中随机选择的,并显示了所有检测器中精度大于0.5的所有检测结果。请注意,这些结果没有经过筛选,给出了检测器工作的真实印象。图10和图11展示了更多的定性结果,但这些结果经过了筛选。我们选择了每个图像,因为它们包含了有趣、令人惊讶或有趣的结果。同样,显示了所有精度大于0.5的检测结果。
4.ILSVRC2013检测数据集
在第2节中,我们介绍了在ILSVRC2013检测数据集上的结果。这个数据集比PASCAL VOC数据集更不均匀,需要对如何使用它进行选择。由于这些决策并不简单,我们在本节中进行介绍。
(图6:对目标特征的敏感性。每个图表显示了六种不同目标特征(遮挡、截断、边界框面积、长宽比、视角、部分可见性)中最高和最低性能子集的平均(对类别进行归一化的AP,参见[23])。 我们展示了我们的方法(R-CNN)在有和没有微调(FT)以及边界框回归(BB)的情况下的图表,以及DPM voc-release5的情况。总体而言,微调并没有降低敏感性(最大值和最小值之间的差异),但确实显著改善了几乎所有特征的最高和最低性能子集。这表明,微调不仅仅改善了长宽比和边界框面积的最低性能子集,而且改善了所有特征,包括遮挡、截断、视角和部分可见性。)
(图5:排名靠前的误报(FP)类型的分布 每个图表显示了随着FP数量的增加,FP类型的分布情况的演变,按照得分递减的顺序考虑。每个FP被分为四种类型之一:Loc-定位不准确(与正确类别之间的IoU重叠度为0.1到0.5,或者是一个重复的检测);Sim-与相似类别混淆;Oth-与不相似的物体类别混淆;BG-在背景上触发的FP。与DPM相比(参见[23]),我们的错误中有很多是由于定位不准确,而不是与背景或其他物体类别的混淆,这表明CNN特征比HOG更具有区分性。松散的定位可能是由于我们使用了自下而上的区域提议和从整个图像分类中预训练的CNN学习到的位置不变性。第三列显示了我们的简单边界框回归方法如何修复许多定位错误。)
4.1. 数据集概述
ILSVRC2013检测数据集分为三个集合:训练集(395,918张图片),验证集(20,121张图片)和测试集(40,152张图片),每个集合中的图片数量用括号表示。验证集和测试集是从相同的图像分布中抽取的。这些图像与PASCAL VOC图像的复杂性(物体数量、杂乱程度、姿态变化等)相似,并且具有类似的场景。验证集和测试集进行了详细的注释,即每个图像中的所有200个类别的实例都用边界框进行了标注。相反,训练集是从ILSVRC2013分类图像分布中抽取的。这些图像的复杂性更加多样,更倾向于包含单个中心物体的图像。与验证集和测试集不同,由于数量庞大,训练图像没有进行详尽的注释。在任何给定的训练图像中,可能会标记或不标记来自200个类别的实例。除了这些图像集合,每个类别还有一组额外的负样本图像。负样本图像经过人工检查,确保它们不包含任何与其关联类别的实例。在本研究中,未使用负样本图像集。关于ILSVRC数据集的收集和注释更多信息可参考[11,36]。这些数据集的特性给R-CNN的训练提供了许多选择。由于训练图像的注释不详尽,无法用于困难负样本挖掘。负样本应该从哪里获取?此外,训练图像与验证集和测试集具有不同的统计特征。是否应该使用训练图像,如果使用,应该使用到什么程度?虽然我们没有对大量的选择进行彻底评估,但我们根据以往的经验提出了最明显的路径。
我们的一般策略是在很大程度上依赖于验证集,并使用一些训练图像作为辅助的正样本来源。为了同时用于训练和验证,我们将验证集分成大致相等大小的“val1”和“val2”两个集合。由于一些类别在验证集中的样本数量非常少(最少只有31个,其中一半少于110个),因此产生一个近似平衡的划分非常重要。为了做到这一点,我们生成了大量的候选划分,选择具有最小最大相对类别不平衡度的划分。每个候选划分是通过对验证集图像进行聚类,以它们的类别计数作为特征,然后进行随机局部搜索来改善划分的平衡性。这里使用的特定划分的最大相对不平衡度约为11%,中位数相对不平衡度为4%。用于生成val1/val2划分和代码的方法将公开提供,以便其他研究人员可以在本报告中使用的val划分上比较他们的方法。
4.2. 区域提议
我们采用了与在PASCAL数据集上进行检测时相同的区域提议方法。在val1、val2和测试集上运行了“快速模式”的选择性搜索[39](但没有在训练集的图像上运行)。由于选择性搜索不具有尺度不变性,因此产生的区域数量取决于图像的分辨率,所以我们需要进行一些微小的修改。ILSVRC图像的尺寸范围从非常小的尺寸到几百万像素不等,因此在运行选择性搜索之前,我们将每个图像调整为固定宽度(500像素)。在验证集上,选择性搜索平均每个图像产生了2403个区域提议,并且在0.5的IoU阈值下能够以91.6%的召回率找到所有的真实边界框。与PASCAL相比,这个召回率明显较低,PASCAL的召回率约为98%,这表明在区域提议阶段有很大的改进空间。
4.3. 训练数据
对于训练数据,我们组成了一个包括val1中的所有选择性搜索和真实边界框以及来自训练集中每个类别最多N个真实边界框的图像和边界框集合(如果一个类别在训练集中的真实边界框少于N个,则将全部取出)。我们将这个图像和边界框的数据集称为val1+trainN。在一个消融研究中,我们展示了在val2上的mAP对于N取值为2、500和1000的结果(详见第4.5节)。在R-CNN中,训练数据需要用于三个过程:(1)CNN微调,(2)检测器SVM训练,和(3)边界框回归器训练。CNN微调在val1+trainN上运行了50k次SGD迭代,使用了与PASCAL相同的设置。在单个NVIDIA Tesla K20上进行微调需要13小时,使用了Caffe框架。对于SVM训练,val1+trainN中的所有真实边界框被用作各自类别的正样本。在val1的一个随机选择的5000个图像子集上进行了难负样本挖掘。初步实验表明,与从全部val1挖掘负样本相比,仅使用5000个图像子集进行挖掘仅导致mAP下降了0.5个百分点,同时将SVM训练时间减半。没有从训练集中取负样本,因为注释不是完整的。额外的验证负样本集也没有被使用。边界框回归器是在val1上进行训练的。
4.4. 验证和评估
在将结果提交给评估服务器之前,我们使用上述的训练数据验证了数据使用选择以及微调和边界框回归对val2集的影响。所有系统超参数(例如SVM C超参数、区域扭曲中使用的填充、NMS阈值、边界框回归超参数)都被固定在与PASCAL相同的值上。毫无疑问,这些超参数选择对于ILSVRC来说可能略有不足,然而本文的目标是在ILSVRC上产生一个初步的R-CNN结果,而不是进行大量的数据集调整。在val2上选择了最佳的选择后,我们向ILSVRC2013评估服务器提交了两个结果文件。第一次提交是没有边界框回归的,第二次提交是有边界框回归的。对于这些提交,我们将SVM和边界框回归器的训练集扩展到使用val+train1k和val。我们使用在val1+train1k上进行微调的CNN来避免重新运行微调和特征计算。
4.5. 消融研究
表4显示了关于不同数量的训练数据、微调和边界框回归的消融研究。首先观察到的是,val2上的mAP与测试集上的mAP非常接近。这使我们相信,val2上的mAP是测试集性能的一个很好的指标。第一个结果是R-CNN在ILSVRC2012分类数据集上预训练的CNN(没有微调)并在val1中的少量训练数据上进行训练(回忆一下,val1中有一半的类别有15到55个样例)所达到的20.9%。将训练集扩展到val1+trainN可以将性能提高到24.1%,N取500和N取1000之间几乎没有差异。仅使用val1中的示例对CNN进行微调可以将性能适度提高到26.5%,然而由于正样本训练样例数量较少,很可能存在严重的过拟合问题。将微调集扩展到val1+train1k,即从训练集中每个类别添加最多1000个正样本,可以显著提高性能,将mAP提升到29.7%。边界框回归将结果进一步提高到31.0%,这是相对于PASCAL观察到的较小的相对增益。
4.6. 与OverFeat的关系
R-CNN和OverFeat之间存在一个有趣的关系:可以将OverFeat看作是R-CNN的一个特例。如果将选择性搜索区域提议替换为多尺度的正方形区域金字塔,并将每类别的边界框回归器改为单一的边界框回归器,那么这两个系统将非常相似(除了一些潜在的显著差异,例如它们的训练方式:CNN检测微调、使用SVM等)。值得注意的是,OverFeat在速度上具有明显的优势:根据[34]中提到的每张图像2秒的计算时间,OverFeat的速度大约是R-CNN的9倍。这种速度优势来自于OverFeat的滑动窗口(即区域提议)在图像级别上不进行扭曲,因此计算可以在重叠的窗口之间轻松共享。共享是通过以卷积方式在任意大小的输入上运行整个网络来实现的。加速R-CNN应该可以通过多种方式实现,并将作为未来的研究方向。
5.语义分割
区域分类是语义分割的标准技术之一,可以轻松地将R-CNN应用于PASCAL VOC语义分割挑战。为了方便与当前领先的语义分割系统(称为O2P,即“二阶池化”)进行直接比较,我们在他们的开源框架内进行工作。O2P使用CPMC在每张图像上生成150个区域提议,然后使用支持向量回归(SVR)来预测每个类别的每个区域的质量。他们的方法性能高是因为CPMC区域的质量以及多个特征类型的强大二阶池化(丰富的SIFT和LBP的变种)。我们还注意到,Farabet等人最近使用CNN作为多尺度像素分类器,在几个密集场景标注数据集上(不包括PASCAL)取得了良好的结果。我们遵循[2,4]并扩展了PASCAL分割训练集,包括Hariharan等人提供的额外注释。设计决策和超参数在VOC 2011验证集上进行了交叉验证。最终的测试结果只进行了一次评估。 分割的CNN特征。我们评估了三种计算CPMC区域特征的策略,所有策略都以将矩形窗口围绕区域扭曲到227×227开始。第一种策略(full)忽略区域的形状,在扭曲窗口上直接计算CNN特征,与我们在检测中所做的完全相同。然而,这些特征忽略了区域的非矩形形状。两个区域的边界框可能非常相似,但重叠非常小。因此,第二种策略(fg)仅在区域的前景掩码上计算CNN特征。我们用平均输入替换背景,使背景区域在平均值减法后为零。第三种策略(full+fg)简单地连接全特征和前景特征;我们的实验验证了它们的互补性。
(表格5:在VOC 2011验证集上的分割平均准确率(%)。第1列是O2P;第2-7列使用我们在ILSVRC 2012上预训练的CNN)
在VOC 2011上的结果。
表5显示了我们在VOC 2011验证集上与O2P相比的结果摘要(完整的每个类别结果请参见附录E)。在每种特征计算策略中,fc6层的性能始终优于fc7层,下面的讨论是基于fc6特征的。前景(fg)策略稍微优于全(full),表明掩膜区域的形状提供了更强的信号,与我们的直觉相符。然而,全+前景(full+fg)策略的平均准确率为47.9%,比其他策略提高了4.2%(也略微优于O2P),这表明即使给出前景特征,全特征所提供的上下文信息仍然非常有信息量。值得注意的是,对我们的全+前景特征训练的20个支持向量回归器(SVR)只需一个核心花费一小时,而对O2P特征进行训练需要10多个小时。在表6中,我们展示了在VOC 2011测试集上的结果,将我们表现最佳的方法(fc6,全+前景)与两个强基线进行了比较。我们的方法在21个类别中有11个类别实现了最高的分割准确率,并且在所有类别上的平均分割准确率为47.9%(但在任何合理的误差范围内可能与O2P的结果相当)。通过微调可能可以实现更好的性能。
(表格6:在VOC 2011测试集上的分割准确率(%)。我们与两个强基线进行了比较:[2]中的“区域和部件”(R&P)方法和[4]中的二阶池化(O2P)方法。在没有任何微调的情况下,我们的CNN实现了最佳的分割性能,优于R&P方法,并与O2P方法大致相当)
A.目标提议转换
在这项工作中使用的卷积神经网络需要一个固定尺寸的输入,尺寸为227×227像素。对于检测,我们考虑任意的图像矩形作为目标提议。我们评估了两种将目标提议转换为有效CNN输入的方法。第一种方法(“最紧凑的有上下文的正方形”)将每个目标提议包含在最紧凑的正方形内,然后将该正方形中的图像按照CNN输入尺寸进行等比例缩放。图7的第(B)列展示了这种转换方式。这种方法的一个变种(“最紧凑的无上下文的正方形”)排除了原始目标提议周围的图像内容。图7的第(C)列展示了这种转换方式。第二种方法(“扭曲”)将每个目标提议按照CNN输入尺寸进行非等比例缩放。图7的第(D)列展示了扭曲转换。对于这些转换中的每一种,我们还考虑在原始目标提议周围包含额外的图像上下文。上下文填充的数量(p)定义为在转换后的输入坐标框架中原始目标提议周围的边界大小。图7显示了每个示例的顶行中p = 0像素,底行中p = 16像素。在所有方法中,如果源矩形超出了图像范围,缺失的数据将用图像均值替换(然后在输入图像到CNN之前进行减法操作)。一组初步实验表明,带有上下文填充(p = 16像素)的扭曲方法在性能上大幅优于其他方法(3-5个mAP点)。显然,还有更多的选择,包括使用复制而不是均值填充。对这些选择的详尽评估将作为未来的工作留待进行。
B.正例与负例以及softmax
有两个设计选择值得进一步讨论。第一个问题是:为什么在微调CNN与训练目标检测SVM时,正例和负例的定义不同?简要回顾一下定义,对于微调,我们将每个目标提议映射到与之具有最大IoU重叠的真实实例,并将其标记为正例,如果IoU至少为0.5,则标记为匹配的真实类。其他所有提议都被标记为“背景”(即所有类别的负例)。相比之下,对于训练SVM,我们只取真实边界框作为各自类别的正例,并将与某一类别的所有实例的IoU重叠小于0.3的提议标记为该类别的负例。落入灰色区域(IoU重叠大于0.3,但不是真实实例)的提议被忽略。从历史的角度来看,我们之所以采用这些定义,是因为我们最初是在使用ImageNet预训练的CNN计算特征来训练SVM,所以在那个时候微调并不是考虑的因素。在那个设置下,我们发现我们为SVM训练定义的标签在我们评估的选项集合中是最优的(其中包括我们现在用于微调的设置)。当我们开始使用微调时,最初我们使用与SVM训练相同的正例和负例定义。然而,我们发现结果要比使用我们当前的正例和负例定义得到的结果要差得多。我们的假设是,正例和负例定义的差异并不是根本重要的,而是源于微调数据的有限性。我们当前的方案引入了许多“抖动”的例子(那些IoU在0.5到1之间但不是真实实例的提议),这将正例的数量扩大了约30倍。我们推测,当对整个网络进行微调时,这个大的样本集是必需的,以避免过拟合。然而,我们也注意到,使用这些抖动的例子可能不是最优的,因为网络并没有被微调来进行精确定位。
这引出了第二个问题:在微调之后,为什么还要训练SVM?直接将微调后网络的最后一层应用为一个21分类的软最大回归分类器作为目标检测器会更简洁。我们尝试了这种方法,并发现在VOC 2007数据集上,mAP从54.2%下降到了50.9%。这种性能下降可能是由多种因素共同导致的,包括微调中使用的正例定义不强调精确定位,以及softmax分类器是在随机采样的负例上进行训练的,而不是在SVM训练中使用的“难例”子集上进行训练。这个结果表明,在微调后,可以获得接近相同水平的性能而无需训练SVM。我们推测,通过对微调进行一些额外的调整,可能可以弥补剩余的性能差距。如果这是真的,将简化并加速R-CNN的训练过程,而不会损失检测性能。
C. 边界框回归
我们使用一个简单的边界框回归阶段来提高定位性能。在使用类别特定的检测SVM对每个选择性搜索提案进行评分后,我们使用类别特定的边界框回归器对检测结果预测一个新的边界框。这与可变形部件模型中使用的边界框回归类似[17]。两种方法的主要区别在于,这里我们是根据CNN计算的特征进行回归,而不是根据推断出的DPM部件位置上计算的几何特征。我们的训练算法的输入是一组N个训练对f(P i;Gi)gi=1;:::;N,其中P i =(Pxi;Pyi;Pwi ;Phi)指定了提案P i 边界框中心的像素坐标,以及P i 的宽度和高度(以像素为单位)。因此,除非需要,我们将去掉上标i。每个ground-truth边界框G也以同样的方式进行指定:G =(Gx;Gy;Gw;Gh)。我们的目标是学习一个将提议框P映射到ground-truth框G的变换。我们通过四个函数dx(P)、dy(P)、dw(P)和dh(P)来参数化这个变换。前两个函数指定了P边界框中心的尺度不变平移,而后两个函数指定了P边界框宽度和高度的对数尺度平移。在学习了这些函数之后,我们可以通过应用变换将输入的提议框P转换为预测的ground-truth框G^,即 G^x =Pwdx(P )+Px (1)^G y =Phdy(P )+Py (2)G^w =Pw exp(dw(P ))(3)G^h =Ph exp(dh(P )):(4)每个函数d?(P)(其中?是x、y、h或w之一)被建模为提议P的pool5特征的线性函数,表示为φ5(P)。(隐含假设φ5(P)依赖于图像数据。)因此,我们有 d?(P)=wT ?φ5(P),其中w?是一个可学习的模型参数向量。我们通过优化正则化的最小二乘目标函数(岭回归)来学习w?:w?=argmin w^?NXi (ti ?−w^?Tφ5(P i))2 +λkw^?k2 :(5)
训练对(P;G)的回归目标t?(t x、t y、t w、t h)被定义为 t x =(Gx −Px)=Pw (6) t y =(Gy −Py)=Ph (7) t w =log(Gw=Pw)(8) t h =log(Gh=Ph):(9)作为一个标准的正则化最小二乘问题,这可以高效地通过闭合形式求解。在实现边界框回归时,我们发现两个细微的问题。第一个问题是正则化很重要:我们根据一个验证集将λ设为1000。第二个问题是在选择要使用的训练对(P;G)时必须小心。直观地说,如果P与所有ground-truth框都很远,则将P转换为ground-truth框G的任务就没有意义。使用像P这样的示例将导致无望的学习问题。因此,我们只从附近至少有一个ground-truth框的提议P中进行学习。我们通过将P分配给与其具有最大IoU重叠的ground-truth框G(如果有多个重叠)来实现“接近”,前提是重叠大于一个阈值(我们使用一个验证集将阈值设置为0.6)。所有未分配的提议都被丢弃。我们为每个对象类别执行一次此操作,以学习一组类别特定的边界框回归器。在测试时,我们对每个提议进行评分,并仅预测其新的检测窗口一次。原则上,我们可以迭代此过程(即,重新评分新预测的边界框,然后从中预测一个新的边界框,依此类推)。然而,我们发现迭代不会改善结果。
D. 附加特征可视化
图12显示了20个pool5单元的附加可视化。对于每个单元,我们从VOC 2007测试中的所有大约1000万个区域提案中选择出最大激活该单元的24个区域提案。我们用6×6×256维pool5特征图中的(y,x,channel)位置标记每个单元。在每个通道内,CNN对输入区域计算完全相同的函数,只有(y,x)位置变化了接受域。
E. 每个类别的分割结果
在表7中,我们展示了除了O2P方法[4]之外,我们六种分割方法在VOC 2011 val数据集上的每个类别的分割准确率。这些结果显示了在每个20个PASCAL类别以及背景类别中哪些方法最强大。
F. 跨数据集冗余性分析
在使用辅助数据集进行训练时,一个担忧是它与测试集之间可能存在冗余。尽管目标检测和整图分类的任务差异很大,使得跨集合的冗余性问题不太令人担忧,但我们仍然进行了详尽的调查,量化了PASCAL测试图像在ILSVRC 2012训练集和验证集中所占的比例。我们的研究结果可能对那些有兴趣将ILSVRC 2012作为PASCAL图像分类任务的训练数据的研究人员有用。 我们对重复(和接近重复)图像进行了两次检查。第一次检查是基于flickr图像ID的精确匹配,这些ID包含在VOC 2007测试注释中(这些ID在随后的PASCAL测试集中被故意保密)。所有的PASCAL图像和大约一半的ILSVRC图像都是从flickr.com收集的。这次检查发现了4952张图像中的31个匹配项(0.63%)。 第二次检查使用GIST [30]描述符匹配,该方法在[13]中被证明在大型(>100万)图像集合中非常适用于接近重复图像的检测。按照[13]的方法,我们计算了所有ILSVRC 2012 trainval和PASCAL 2007测试图像的32×32像素版本的GIST描述符。通过欧几里德距离最近邻匹配GIST描述符,发现了38个接近重复的图像(包括所有通过flickr ID匹配找到的31个图像)。这些匹配项在JPEG压缩水平和分辨率上略有差异,并在较小程度上有裁剪。这些发现表明重叠部分很小,小于1%。对于VOC 2012,由于flickr ID不可用,我们仅使用了GIST匹配方法。基于GIST匹配,VOC 2012测试图像中有1.5%在ILSVRC 2012 trainval中。VOC 2012的稍高比例可能是因为这两个数据集的收集时间比VOC 2007和ILSVRC 2012更接近。
G. 文档变更日志
本文档跟踪R-CNN的进展。为了帮助读者了解它随着时间的变化,以下是一个简要的变更日志,描述了修订情况。 v1 初始版本。 v2 CVPR 2014相机准备版本。通过以下改进显著提高了检测性能:
(1)从更高的学习率(0.001而不是0.0001)开始微调,
(2)在准备CNN输入时使用上下文填充,
(3)使用边界框回归来修复定位错误。
v3 将ILSVRC2013检测数据集的结果和与OverFeat的比较整合到几个章节中(主要是第2节和第4节)。 v4 附录B中的softmax与SVM结果存在错误,已进行修正。感谢Sergio Guadarrama帮助发现这个问题。 v5 在第3.3节和表3中添加了使用Simonyan和Zisserman [43]的新16层网络架构的结果。
(表7:在VOC 2011验证集上的每个类别的分割准确率(%))
总结
- 结论 近年来,目标检测的性能一直停滞不前。最好的系统是将多个低层次图像特征与来自目标检测器和场景分类器的高层上下文相结合的复杂集成系统。本文提出了一种简单且可扩展的目标检测算法,在PASCAL VOC 2012数据集上相对于之前最好的结果提高了30%。我们通过两个关键点实现了这一性能提升。第一个是将高容量的卷积神经网络应用于自下而上的区域提议,以定位和分割目标物体。第二个是在标注的训练数据稀缺的情况下,训练大型卷积神经网络的范式。我们展示了这种范式在使用丰富数据(图像分类)进行监督预训练,然后在数据稀缺的目标任务(检测)上进行微调时的高效性。我们推测,“监督预训练/领域特定微调”的范式对于多种数据稀缺的视觉问题将非常有效。最后,我们指出,通过使用计算机视觉和深度学习的经典工具(自下而上的区域提议和卷积神经网络),我们取得了这些结果是非常重要的。而不是对立的科学探究方向,两者是自然而必然的合作伙伴。
- 致谢。本研究部分得到了DARPA Mind's Eye和MSEE计划、NSF奖项IIS-0905647、IIS-1134072和IIS-1212798、MURI N000014-10-1-0933的支持,以及来自丰田的支持。本研究中使用的GPU由NVIDIA Corporation慷慨捐赠。