R-CNN系列论文是使用深度学习进行物体检测的鼻祖论文,其中fast-RCNN 以及faster-RCNN都是沿袭R-CNN的思路。R-CNN全称region with CNN features,其实它的名字就是一个很好的解释。用CNN提取出Region Proposals中的featues,然后进行SVM分类与bbox的回归
Rich feature hierarchies for accurate object detection and semantic segmentation Tech report
在规范的PASCAL VOC数据集上测量的对象检测性能在过去几年中已经趋于稳定。性能最佳的方法是复杂的集成系统,通常将多个低级图像特征与高级上下文相结合。在本文中,我们提出了一种简单且可扩展的检测算法,平均平均精度(mAP)提高了30%以上,实现了53.3%的mAP。我们的方法结合了两个关键见解:(1)可以将高容量卷积神经网络(CNN)应用于自下而上的区域提案,以定位和分割对象;(2)当标记的训练数据稀缺时,辅助任务的监督预训练,然后是特定于领域的微调,产生显着的性能提升。由于我们将区域建议与 CNN 相结合,因此我们称这种方法为 R-CNN:具有 CNN 特征的区域。我们还将 R-CNN 与最近提出的基于类似 CNN 架构的滑动窗口检测器 OverFeat 进行了比较。我们发现,在 200 个类别的 ILSVRC2013 检测数据集上,R-CNN 远远优于 OverFeat。
特征很重要。过去十年中,各种视觉识别任务的进展在很大程度上是基于 SIFT 和 HOG 的使用。但是,如果我们看一下典型视觉识别任务--PASCAL VOC 物体检测的表现,人们普遍认为,2010-2012 年期间进展缓慢,通过建立集合系统和采用成功方法的小变体取得了微小的进步。
SIFT和HOG是块状定向直方图,我们可以大致将其与V1中的复杂细胞联系起来,V1是灵长类动物视觉通路中的第一个皮质区域。但我们也知道,识别发生在下游的几个阶段,这表明可能存在分层的、多阶段的计算特征过程,这些过程对视觉识别的信息量更大。
图 1:物体检测系统概览。我们的系统 (1) 获取输入图像,(2)提取约 2000 个自下而上的区域建议,(3) 使用大型卷积神经网络(CNN)计算每个建议的特征,然后 (4) 对每个建议进行分类。卷积神经网络 (CNN) 计算每个提议的特征,然后 (4) 使用特定类别的线性 SVM 对每个区域进行分类。然后 (4) 使用特定类别的线性 SVM 对每个区域进行分类。R-CNN 的平均 平均精度 (mAP) 为 53.7%。相比之下 相比之下,[39] 报告称,使用相同的区域建议,但采用空间金字塔和视觉词袋方法,mAP 为 35.1%。流行的可变形部件模型的表现为 33.4%。在 200 类的 ILSVRC2013 检测数据集上,R-CNN 的 mAP 为 31.4%,比 OverFeat 有很大提高,后者之前的最好成绩是 24.3%。
福岛的“neocognitron”是一个受生物启发的分层和移位不变的模式识别模型,是这种过程的早期尝试。然而,neocognitron缺乏有监督的训练算法。在Rumelhart等人的基础上,LeCun等人发现了一种随机训练算法,通过反向传播的随机梯度下降对于训练卷积神经网络(CNN)是有效的,这一类模型扩展了新的功能。
CNN在20 世纪 90 年代得到了广泛应用,但随着支持向量机的兴起,CNN已经过时了。2012年,Krizhevsky等人通过在ImageNet大规模视觉识别挑战赛ILSVRC上表现出更高的图像分类精度,重新点燃了人们对CNN的兴趣。他们的成功源于在 120 万张标注图像上训练了一个大型 CNN,并对 LeCun 的 CNN 进行了一些改进(例如,max(x, 0) 纠正非线性和“dropout”正则化)。
ImageNet 结果的意义在 ILSVRC 2012 研讨会上引起了激烈的讨论。核心问题可归纳为以下几点:CNN 在 ImageNet 上的分类结果能在多大程度上推广到 PASCAL VOC 挑战赛的物体检测结果?
我们通过缩小图像分类与物体检测之间的差距来回答这个问题。本文首次证明,与基于更简单的 HOG 类特征的系统相比,CNN 可以显著提高 PASCAL VOC 的物体检测性能。为了取得这一成果,我们重点解决了两个问题:使用深度网络定位物体,以及仅使用少量注释检测数据训练高容量模型。
与图像分类不同,检测需要定位图像中的物体(可能有很多)。有一种方法将定位作为一个回归问题。然而,与我们同时进行的 Szegedy 等人的研究表明,这种策略在实践中可能效果不佳(他们报告的 2007 年 VOC 的 mAP 为 30.5%,而我们的方法为 58.5%)。另一种方法是建立滑动窗口检测器。CNN已经以这种方式使用了至少二十年,通常用于受限对象类别,如人脸和行人。为了保持高空间分辨率,这些 CNN 通常只有两个卷积层和池化层。我们也考虑过采用滑动窗口方法。然而,我们网络的高层单元有五个卷积层,在输入图像中具有非常大的感受野(195 × 195 像素)和步长(32 × 32 像素),这使得在滑动窗口范例中进行精确定位成为一项公开的技术挑战。
相反,我们通过在“使用区域识别”范式“中操作来解决CNN定位问题,该范式在对象检测和语义分割方面都取得了成功。在测试时,我们的方法为输入图像生成大约 2000 个与类别无关的区域建议,使用 CNN 从每个建议中提取固定长度的特征向量,然后使用特定类别的线性 SVM 对每个区域进行分类。我们使用一种简单的技术(仿射图像扭曲)从每个区域建议中计算出固定大小的CNN输入,而不管区域的形状如何。图1概述了我们的方法,并重点介绍了我们的一些成果。由于我们的系统结合了区域建议和CNN,因此我们将该方法命名为R-CNN:具有CNN特征的区域。
在本版更新中,我们通过在200 类ILSVRC2013检测数据集上运行 R-CNN,对 R-CNN 和最近提出的 OverFeat检测系统进行了正面比较。OverFeat 使用滑动窗口 CNN 进行检测,到目前为止,它是ILSVRC2013检测中性能最好的方法。我们表明,R-CNN的表现明显优于OverFeat,mAP为31.4%对24.3%。
检测面临的第二个挑战是标注数据稀缺,目前可用的数据量不足以训练大型 CNN。解决这一问题的传统方法是使用无监督预训练,然后进行有监督微调。本文的第二个主要贡献是证明在大型辅助数据集(ILSVRC)上进行无监督预训练,然后在小型数据集(PASCAL)上进行特定领域的微调,是在数据稀缺的情况下学习大容量 CNN 的有效范例。在我们的实验中,对检测进行微调可将 mAP 性能提高 8 个百分点。经过微调后,我们的系统在 2010 年 VOC 上实现了 54% 的 mAP,而经过高度微调、基于 HOG 的可变形部件模型 (DPM) 的 mAP 只有 33%。我们还向读者介绍了 Donahue 等人的同期研究成果[12],他们的研究表明,Krizhevsky 的 CNN 可以用作黑盒特征提取器(无需微调),在场景分类、细粒度子分类和领域适应等多项识别任务中表现出色。
我们的系统也相当高效。唯一针对特定类别的计算是相当小的矩阵向量乘积和贪婪的非最大抑制。这一计算特性源于所有类别共享的特征,而且这些特征比以前使用的区域特征低两个数量级。
了解我们方法的失效模式对于改进它也至关重要,因此我们报告了Hoiem等人的检测分析工具的结果。作为该分析的直接结果,我们证明了一种简单的边界框回归方法可以显著减少定位错误,而定位错误是主要的错误模式。在开发技术细节之前,我们注意到,由于R-CNN在区域上运行,因此很自然地将其扩展到语义分割任务。通过微小的修改,我们还在PASCAL VOC分割任务上取得了有竞争力的结果,在VOC 2011测试集上的平均分割准确率为47.9%。
我们的物体检测系统由三个模块组成。第一个模块生成与类别无关的区域建议。这些建议定义了我们的检测器可用的候选检测集。第二个模块是一个大型卷积神经网络,从每个区域提取固定长度的特征向量。第三个模块是一组特定类别的线性 SVM。在本节中,我们将介绍每个模块的设计决策,描述它们在测试时的使用情况,详细说明如何学习它们的参数,并展示 PASCAL VOC 2010-12 和 ILSVRC2013 的检测结果。
2.1. 模块设计
区域建议。最近有多篇论文提供了生成与类别无关的区域建议的方法。
例如:对象性、选择性搜索、与类别无关的对象提议、受限参数最小切割(CPMC)、多尺度组合分组,以及 Cires¸an 等人通过将 CNN 应用于有规律间隔的方形作物来检测有丝分裂细胞,这是区域提议的一种特殊情况。虽然 R-CNN 与特定的区域建议方法无关,但我们使用了选择性搜索,以便与之前的检测工作进行对照比较。
特征提取。我们使用 Caffe 从每个区域提案中提取 4096 维特征向量,实现了 Krizhevsky 等人描述的 CNN。特征的计算方法是,
克里热夫斯基等人描述的CNN的实现。通过五个卷积层和两个全连接层前向传播均值减去的 227 × 227 RGB 图像来计算特征。我们向读者推荐更多网络架构细节。
2.2. 测试时间检测
为了计算一个区域提案的特征,我们必须首先将该区域的图像数据转换成与 CNN 兼容的形式(CNN 的架构要求输入固定的 227 × 227 像素大小)。在任意形状区域的多种可能转换中,我们选择了最简单的一种。无论候选区域的大小或长宽比如何,我们都会将其周围严格边界框中的所有像素翘曲到所需的大小。在翘曲之前,我们先扩张狭小的边界框,这样在翘曲后的大小上,原始边界框周围正好有 p 个像素的翘曲图像上下文(我们使用 p = 16)。图 2 显示了翘曲训练区域的随机样本。附录 A 讨论了翘曲的替代方法。
2.2. 测试时间检测
测试时,我们在测试图像上运行选择性搜索,以提取约 2000 个区域建议(我们在所有实验中都使用了选择性搜索的 "快速模式")。我们对每个提议进行翘曲,并通过 CNN 进行前向传播,以计算特征。然后,对于每个类别,我们使用针对该类别训练的 SVM 对每个提取的特征向量进行评分。给定图像中的所有得分区域,我们应用贪婪的非最大抑制(针对每个类别独立应用),如果某个区域与得分较高的选定区域的交集-重叠(IoU)大于学习阈值,则剔除该区域。
运行时分析。有两个特性使检测变得高效。首先,所有类别的 CNN 参数都是共享的。其次,与其他常见方法相比,CNN 计算出的特征向量维度较低,例如具有视觉词袋编码的空间金字塔。例如,UVA 检测系统使用的特征比我们的大两个数量级(360k 对 4k)。
这种共享的结果是,计算区域建议和功能所花费的时间(GPU 上的 13 秒/图像或 CPU 上的 53 秒/图像)被摊销到所有类中。唯一特定于类的计算是特征和 SVM 权重之间的点积和非极大抑制。实际上,图像的所有点积都批处理成单个矩阵-矩阵积。特征矩阵通常为 2000×4096,SVM 权重矩阵为 4096×N,其中 N 是类数。
这项分析表明,R-CNN 可以扩展到数千个对象类别,而无需采用哈希等近似技术。即使有 10 万个类别,在现代多核 CPU 上进行矩阵乘法运算也只需 10 秒钟。这种效率不仅仅是使用区域提案和共享特征的结果。UVA 系统的高维特征需要 134GB 的内存来存储 100k 个线性预测器,而我们的低维特征只需要 1.5GB 的内存,因此速度要慢两个数量级。他们报告说,在 VOC 2007 上,当引入 10k 个分心类时,每幅图像的 mAP 约为 16%,运行时间为 5 分钟。而采用我们的方法,10k 个检测器在 CPU 上的运行时间约为 1 分钟,而且由于不使用近似值,mAP 将保持在 59%(第 3.2 节)。
2.3. 培训
监督预训练。我们在一个大型辅助数据集(ILSVRC2012 分类)上,仅使用图像级注释(该数据没有边框标签)对 CNN 进行了判别预训练。预训练使用开源的 Caffe CNN 库进行。简而言之,我们的 CNN 几乎达到了 Krizhevsky 等人的性能,在 ILSVRC2012 分类验证集上的最高错误率比 Krizhevsky 等人高出 2.2 个百分点。这种差异是由于训练过程的简化造成的。
特定领域微调。为了让我们的 CNN 适应新任务(检测)和新领域(翘曲建议窗口),我们继续仅使用翘曲区域建议对 CNN 参数进行随机梯度下降(SGD)训练。除了用随机初始化的 (N + 1)-way 分类层(其中 N 为对象类别数,1 为背景)替换 CNN 的 ImageNets 特定 1000-way 分类层外,CNN 架构保持不变。对于 VOC,N = 20,对于 ILSVRC2013,N = 200。我们将所有与地面实况方框重叠度≥ 0.5 IoU 的区域提案视为该方框类别的阳性提案,其余的视为阴性提案。我们以 0.001 的学习率(初始预训练率的 1/10)启动 SGD,这样既可以进行微调以取得进展,又不会破坏初始化。在 SGD 的每次迭代中,我们对 32 个正向窗口(覆盖所有类别)和 96 个背景窗口进行均匀采样,以构建大小为 128 的迷你批次。我们偏向于正向窗口采样,因为与背景窗口相比,正向窗口极为罕见。
对象类别分类器。考虑训练一个二元分类器来检测汽车。很明显,紧紧包围汽车的图像区域应该是一个正例。同样,很明显,与汽车无关的背景区域应该是一个负例。不太清楚的是如何标记与汽车部分重叠的区域。我们通过IoU重叠阈值来解决这个问题,低于该阈值的区域被定义为负值。重叠阈值0.3是通过在验证集上对{0,0.1,…,0.5}进行网格搜索而选择的。我们发现仔细选择这个阈值很重要。如[39]中所述,将其设置为0.5,可将mAP降低5个点。类似地,将其设置为0将mAP降低4个点。正例被简单地定义为每个类的基本事实边界框。提取特征并应用训练标签后,我们就为每个类优化一个线性SVM。由于训练数据太大,无法放入内存,因此我们采用标准hard正向挖掘方法,hard挖掘收敛迅速,实际上,mAP 仅在对所有图像进行一次传递后停止增加。
在附录 B 中,我们将讨论了微调与 SVM 训练中对正例和负例的定义不同。我们还将讨论在训练检测 SVM 而非简单使用微调 CNN 最后 softmax 层的输出时所涉及的权衡问题。
2.4. PASCAL VOC 2010-12 的结果
根据 PASCAL VOC 最佳实践[15],我们在 VOC 2007 数据集上验证了所有设计决策和超参数(第 3.2 节)。为了获得 VOC 2010-12 数据集的最终结果,我们在 VOC 2012 train 上对 CNN 进行了微调,并在 VOC 2012 trainval 上优化了检测 SVM。对于两种主要算法变体(有边框回归和无边框回归),我们只向评估服务器提交了一次测试结果。
表 1 显示了 VOC 2010 的完整结果。我们将我们的方法与四种强大的基准进行了比较,其中包括 SegDPM [18],它将 DPM 检测器与语义分割系统 [4] 的输出相结合,并使用了额外的检测器间上下文和图像分类器重新评分。与 Uijlings 等人的 UVA 系统[39]进行比较最有意义,因为我们的系统使用相同的区域建议算法。为了对区域进行分类,他们的方法建立了一个四层空间金字塔,并用密集采样的 SIFT、Extended OpponentSIFT 和 RGBSIFT 描述符填充,每个向量都用 4000 字的编码本量化。使用直方图交集核 SVM 进行分类。与他们的多特征非线性核 SVM 方法相比,我们的 mAP 有了很大提高,从 35.1% 提高到 53.7%,同时速度也快得多(第 2.2 节)。我们的方法在 VOC 2011/12 测试中取得了类似的性能(53.3% mAP)。
2.5. ILSVRC2013 检测结果
我们使用与 PASCAL VOC 相同的系统超参数,在 200 个 ILSVRC2013 检测数据集上运行了 R-CNN。我们遵循相同的协议,只向 ILSVRC2013 评估服务器提交了两次测试结果,一次有边界框回归,一次没有。
图 3 比较了 R-CNN 与 ILSVRC
和赛后 OverFeat 的结果 [34]。R-CNN 的 mAP 高达 31.4%,大大超过 OverFeat 第二名的 24.3%。为了解 AP 在不同类别中的分布情况,本文还给出了箱形图,并在表 8 中列出了每个类别的 AP 表。大多数参赛者(OverFeat、NEC-MU、UvAEuvision、Toronto A 和 UIUC-IFP)都使用了卷积神经网络,这表明在如何将 CNN 应用于物体检测方面存在很大的细微差别,从而导致结果大相径庭。
在第 4 节中,我们将概述 ILSVRC2013 检测数据集,并详细介绍我们在该数据集上运行 R-CNN 时所作的选择。
3. 可视化、消融和错误模式
3.1. 学习特征的可视化
第一层滤波器可以直接可视化,而且易于理解 [25]。它们能捕捉到有方向的边缘和对手的颜色。理解后续层则更具挑战性。Zeiler 和 Fergus 在[42]中提出了一种具有视觉吸引力的去卷积方法。我们提出了一种简单(且互补)的非参数方法,可直接显示网络学习到了什么。
我们的想法是将网络中的一个特定单元(特征)单列出来,并将其作为一个物体检测器来使用。也就是说,我们计算该单元在大量保留区域提议(约 1 千万个)上的激活度,将提议从激活度最高到最低排序,执行非最大抑制,然后显示得分最高的区域。我们的方法通过准确显示所选单元对哪些输入起作用,让它 "为自己代言"。我们避免了平均化,以便看到不同的视觉模式,并深入了解该单元计算的不变量。
表 1:VOC 2010 测试的平均检测精度(%)。R-CNN 与 UVA 和 Regionlets 具有最直接的可比性,因为所有方法都使用选择性搜索区域建议。SegDPM 是 PASCAL VOC 排行榜上的佼佼者。†DPM 和 SegDPM 使用了其他方法没有使用的上下文重评分。
图 3:(左)ILSVRC2013 检测测试集的平均精度。带 * 的方法使用外部训练数据(所有情况下,图像和标签均来自 ILSVRC 分类数据集)。(右图)每种方法的 200 个平均精度值的方框图。由于尚未提供每类 AP,因此未显示赛后 OverFeat 结果的方框图(R-CNN 的每类 AP 见表 8,也包含在上传到 arXiv.org 的技术报告源中;见 R-CNN-ILSVRC2013-APs.txt)。红线表示 AP 中位数,方框底部和顶部表示第 25 和 75 百分位数。晶须延伸至每种方法的最小和最大 AP。每个 AP 在晶须上绘制为一个绿点(最好放大数字查看)
图 4:六个 pool5 单元的顶部区域。感知区域和激活值以白色绘制。有些单元与概念对齐,如人物(第 1 行)或文本(第 4 行)。其他单元则捕捉纹理和材料属性,如点阵列(2)和镜面反射(6)
表 2:2007 年 VOC 测试的平均检测精度(%)。第 1-3 行显示的是未经微调的 R-CNN 性能。第 4-6 行显示的是 CNN 在 ILSVRC 2012 上进行预训练,然后在 VOC 2007 trainval 上进行微调 (FT) 的结果。第 7 行包括一个简单的边界框回归 (BB) 阶段,可减少定位误差(C 节)。第 8-10 行将 DPM 方法作为强基线。第一行只使用 HOG,而后两行则使用不同的特征学习方法来增强或替代 HOG。
表 3:两种不同 CNN 架构在 VOC 2007 测试中的平均检测精度(%)。前两行是表 2 中使用 Krizhevsky 等人的架构(T-Net)得出的结果。第三行和第四行使用的是 Simonyan 和 Zisserman 最近提出的 16 层架构(O-Net)。
我们可视化池 5 层的单元,它是网络第五层也是最后一层卷积层的最大池输出。池 5 的特征图为 6 × 6 × 256 = 9216 维。忽略边界效应,在 227×227 像素的原始输入中,每个池 5 单元的感受野为 195×195 像素。池 5 中心单元的视野几乎是全局的,而靠近边缘的单元的视野则较小,且有剪切。
图 4 中的每一行都显示了我们在 VOC 2007 trainval 上微调的一个 CNN 的 pool5 单元的前 16 个激活。图中显示了 256 个功能独特的单元中的 6 个单元(附录 D 中包含更多单元)。选择这些单元是为了展示网络学习的代表性样本。在第二行中,我们看到的是一个对狗脸和点阵列起作用的单元。第三行对应的单元是一个红色圆球检测器。此外,还有人脸和更抽象图案的检测器,如文本和带窗口的三角形结构。该网络似乎在学习一种表征方式,它将少量经过类别调整的特征与形状、纹理、颜色和材料属性的分布式表征方式结合在一起。随后的全连接层 fc6 能够为这些丰富特征的大量组合建模。
3 . 2 .消融研究
性能逐层递进,无需微调。为了了解哪些层对检测性能至关重要,我们分析了VOC 2007数据集上CNN最后三层的结果。第3.1节对第5层水池进行了简要描述。最后两个层次总结如下
层 fc6 与池 5 完全连接。为计算特征,它将 4096×9216 权重矩阵与池 5 特征图(重塑为 9216 维向量)相乘,然后添加偏置向量。这个中间向量经过分量半波整流(x ← max(0,x))。
fc7 层是网络的最后一层。其实现方法是将 fc6 计算出的特征乘以 4096 × 4096 权重矩阵,然后同样添加一个偏置向量并进行半波整流。
我们首先查看未在 PASCAL 上进行微调的 CNN 的结果,即所有 CNN 参数仅在 ILSVRC 2012 上进行了预训练。逐层分析性能(表 2 第 1-3 行)发现,fc7 的特征泛化效果比 fc6 差。这意味着,在不降低 mAP 的情况下,可以移除 29% 的 CNN 参数,即大约 1,680 万个参数。更令人惊讶的是,尽管池 5 特征的计算只使用了 CNN 6% 的参数,但同时移除 fc7 和 fc6 会产生相当好的结果。CNN 的大部分表征能力来自卷积层,而不是更大的密集连接层。这一发现表明,只使用 CNN 的卷积层计算任意大小图像的 HOG 意义上的密集特征图具有潜在的实用性。通过这种表示方法,可以在池5特征的基础上尝试使用滑动窗口检测器,包括 DPM。
微调后的逐层性能 现在我们来看看在 VOC 2007 trainval 上微调 CNN 参数后的结果。改进非常明显(表 2 第 4-6 行):微调后 mAP 增加了 8.0 个百分点,达到 54.2%。对 fc6 和 fc7 进行微调后,mAP 的提升幅度远大于对 pool5 的提升幅度,这表明从 ImageNet 学习到的 pool5 特征是通用的,大部分改进都是通过在其基础上学习特定领域的非线性分类器获得的。
与最新特征学习方法的比较。在 PASCAL VOC 检测中尝试过的特征学习方法相对较少。我们研究了建立在可变形部件模型基础上的两种最新方法。第一种 DPM 特征学习方法是 DPM ST [28]、
第一种 DPM 特征学习方法 DPM ST [28],使用 "草图标记 "概率直方图增强 HOG 特征。从直观上讲,草图标记是通过图像补丁中心的轮廓线的紧密分布。草图标记概率是由一个随机森林在每个像素上计算出来的,该随机森林经过训练可将 35×35 像素的斑块分为 150 个草图标记或背景之一。
第二种方法是 DPM HSC [31],用稀疏代码直方图(HSC)代替 HOG。为计算 HSC,使用由 100 个 7 × 7 像素(灰度)原子组成的学习字典求解每个像素的稀疏代码激活。由此产生的激活以三种方式进行整流(全波和两个半波)、空间汇集、单位 ` 2 归一化,然后进行幂变换 (x ← sign(x)|x|α)
所有 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])。这些方法的 mAP 分别为 29.1% 和 34.3%。
3.3. 网络架构
本文中的大多数结果都使用了 Krizhevsky 等人[25]的网络架构。然而,我们发现架构的选择对 R-CNN 的检测性能有很大影响。在表 3 中,我们展示了使用 Simonyan 和 Zisserman [43] 最近提出的 16 层深度网络进行 VOC 2007 测试的结果。该网络是最近 ILSVRC 2014 分类挑战赛中表现最好的网络之一。该网络具有同构结构,由 13 层 3 × 3 卷积核组成,中间穿插了 5 层最大池化层,顶部有 3 层全连接层。我们将该网络称为 "O-Net",代表牛津网络;将基准网络称为 "T-Net",代表多伦多网络。
为了在 R-CNN 中使用 O-Net,我们从 Caffe Model Zoo 下载了 VGG ILSVRC 16 层模型的公开预训练网络权重1。唯一不同的是,为了适应 GPU 内存,我们按要求使用了较小的迷你批次(24 个示例)。表 3 中的结果显示,使用 O-Net 的 RCNN 明显优于使用 TNet 的 R-CNN,mAP 从 58.5% 提高到 66.0%。不过,在计算时间方面存在相当大的缺陷,O-Net 的前向传递时间大约是 T-Net 的 7 倍。
3.4. 检测误差分析
我们使用了 Hoiem 等人[23]的优秀检测分析工具,以揭示我们方法的误差模式,了解微调如何改变误差模式,以及我们的误差类型与 DPM 的比较。对分析工具的全面总结超出了本文的范围,我们鼓励读者参阅 [23],以了解一些更精细的细节(如 "归一化 AP")。由于分析最好结合相关图表进行,因此我们在图 5 和图 6 的标题中进行了讨论。
3.5. 边框回归
基于误差分析,我们采用了一种简单的方法来减少定位误差。受 DPM [17] 中采用的边界框回归法的启发,我们训练了一个线性回归模型,以预测一个新的检测窗口,并给出选择性搜索区域建议的池 5 特征。详情见附录 C。表 1、表 2 和图 5 中的结果表明,这种简单的方法修复了大量定位错误的检测,使 mAP 提升了 3 到 4 个点。
3.6. 定性结果
ILSVRC2013 的定性检测结果见本文末尾的图 8 和图 9。每幅图像都是从 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 可分为 4 种类型中的 1 种:Loc-定位能力差(与正确类别的 IoU 重叠度在 0.1 和 0.5 之间的检测,或重复检测);Sim-与相似类别相混淆;Oth-与不相似的物体类别相混淆;BG-在背景上发射的 FP。与 DPM(见 [23])相比,我们的错误更多是由于定位不准确造成的,而不是与背景或其他物体类别混淆,这表明 CNN 特征比 HOG 更具有区分性。定位松散的原因可能是我们使用了自下而上的区域建议,以及通过预训练全图像分类 CNN 所获得的位置不变性。第三列显示了我们的简单边界框回归方法如何修正了许多定位错误。
4.1. 数据集概述
ILSVRC2013 检测数据集分为三组:训练集(395,918 张)、验证集(20,121 张)和测试集(40,152 张),括号内为每组中的图像数量。val 和 test 两组图像来自相同的图像分布。这些图像与 PASCAL VOC 图像具有相似的场景和复杂性(物体数量、杂乱程度、姿势变化等)。val 和 test 分割图像都有详尽的注释,这意味着在每幅图像中,所有 200 个类别的所有实例都标有边框。训练集则取自 ILSVRC2013 分类图像分布。这些图像的复杂度更加多变,偏向于单个居中物体的图像。与 val 和 test 不同的是,训练图像(由于数量众多)并没有进行详尽的注释。在任何给定的训练图像中,200 个类别中的实例可能被标注,也可能未被标注。除了这些图像集,每个类别还有一组额外的负图像。阴性图像会经过人工检查,以确认其中不包含任何相关类别的实例。本研究未使用负图像集。有关如何收集和注释 ILSVRC 的更多信息,请参阅 [11, 36]。
这些分割的性质为训练 R-CNN 提供了多种选择。训练图像不能用于硬性负面挖掘,因为注释并不详尽。负面示例从何而来?此外,训练图像的统计信息与 val 和 test 不同。是否应该使用训练图像?虽然我们还没有对大量的选择进行彻底评估,但根据以往的经验,我们提出了看起来最明显的路径。
我们的一般策略是主要依靠 val 集,并使用部分训练图像作为正面示例的辅助来源。为了将 val 用于训练和验证,我们将其分为大小大致相同的 "val1 "和 "val2 "集。由于一些类别在 val 中的例子很少(最小的只有 31 个,一半的少于 110 个),因此产生一个近似类别平衡的分区非常重要。2 每个候选分区都是通过将 val 图像的类计数作为特征进行聚类,然后进行随机局部搜索,以提高分区的平衡性。这里使用的特定分割最大相对不平衡度约为 11%,中位相对不平衡度为 4%。val1/val2分割和用于生成它们的代码将被公开,以便其他研究人员将他们的方法与本文中使用的val分割进行比较。
4.2. 区域建议
我们采用了与 PASCAL 检测相同的区域建议方法。在 val1、val2 和 test 中的每张图像上(但不包括 train 中的图像)以 "快速模式 "运行选择性搜索 [39]。由于选择性搜索不具有比例不变性,因此产生的区域数量取决于图像的分辨率,因此需要对其稍作修改。ILSVRC 图像的尺寸从非常小到几百万像素不等,因此我们在运行选择性搜索之前将每幅图像调整为固定宽度(500 像素)。选择性搜索的结果是,每幅图像平均有 2403 个区域提案,所有地面实况边界框的召回率为 91.6%(阈值为 0.5 IoU)。这一召回率明显低于 PASCAL,PASCAL 的召回率约为 98%,这表明在区域建议阶段还有很大的改进空间。
4.3. 训练数据
在训练数据方面,我们形成了一组图像和方框,其中包括 val1 中的所有选择性搜索和地面实况方框,以及 train 中每个类别的最多 N 个地面实况方框(如果某个类别在 train 中的地面实况方框少于 N 个,则我们将其全部提取)。我们称这个图像和方框数据集为 val1+trainN 。在一项消融研究中,我们展示了 N∈{0, 500, 1000} 条件下 val2 的 mAP(第 4.5 节)。
R-CNN 的三个过程都需要训练数据:(1) CNN 微调,(2) 检测器 SVM 训练,以及 (3) 边框回归器训练。使用与 PASCAL 完全相同的设置,在 val1+trainN 上对 CNN 进行了 50k 次 SGD 迭代微调。使用 Caffe 在一台 NVIDIA Tesla K20 上进行微调耗时 13 小时。在 SVM 训练中,val1+trainN 中的所有地面实况盒都被用作各自类别的正例。从 val1 中随机选取的 5000 张图片子集进行了硬负片挖掘。最初的实验表明,从 val1 的全部图像中挖掘底片与从 5000 张图像子集(约占一半)中挖掘底片相比,mAP 只下降了 0.5 个百分点,而 SVM 的训练时间却减少了一半。由于注释并不详尽,因此没有从 train 中提取负面示例。没有使用额外的已验证负图像集。边界框回归器的训练是基于 Val
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 与 test 的 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,即从训练集中为每个类别添加多达 1000 个正面示例,会有很大帮助,使 mAP 提高到 29.7%。边框回归将结果提高到 31.0%,与 PASCAL 中观察到的结果相比,相对增益较小。
4.6. 与 OverFeat 的关系
R-CNN 与 OverFeat 之间有一种有趣的关系:OverFeat 可以(粗略地)看作是 R-CNN 的一个特例。如果将选择性搜索区域建议替换为规则方形区域的多尺度金字塔,并将每类边界框回归器替换为单一边界框回归器,那么这两个系统将非常相似(除了在训练方式上可能存在一些显著差异):CNN 检测微调、使用 SVM 等)。值得注意的是,与 R-CNN 相比,OverFeat 在速度上有显著优势:根据 [34] 中引用的每张图像 2 秒的数据,OverFeat 的速度约为 R-CNN 的 9 倍。之所以能达到这样的速度,是因为 OverFeat 的滑动窗口(即区域建议)没有在图像层面进行扭曲,因此重叠窗口之间可以轻松共享计算。共享是通过在任意大小的输入上以卷积方式运行整个网络来实现的。加快 R-CNN 的速度可以通过多种方式实现,这也是未来的工作方向。
5. 语义分割
区域分类是语义分割的标准技术,因此我们可以轻松地将 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 特征。我们对计算 CPMC 区域特征的三种策略进行了评估,所有策略都是从将区域周围的矩形窗口调整为 227 × 227 开始。第一种策略(完全)忽略了区域的形状,直接在翘曲窗口上计算 CNN 特征,这与我们的检测方法完全相同。但是,这些特征忽略了区域的非矩形形状。两个区域的边界框可能非常相似,但重叠的部分却很少。因此,第二种策略(fg)只在区域的前景掩膜上计算 CNN 特征。我们用平均输入替换背景,这样背景区域在平均值减去后为零。第三种策略(full+fg)简单地将full和fg特征合并;我们的实验验证了它们的互补性
表 5:VOC 2011 验证的平均分割准确率(%)。第 1 列显示的是 O2P;第 2-7 列使用的是我们在 ILSVRC 2012 上预先训练的 CNN。
VOC 2011 的结果。表 5 显示了我们在 2011 年 VOC 验证集上与 O2P 的对比结果汇总。(在每种特征计算策略中,fc6 层总是优于 fc7 层,下文的讨论将针对 fc6 特征。fg 策略略微优于 full,这表明屏蔽区域的形状提供了更强的信号,符合我们的直觉。然而,full+fg 实现了 47.9% 的平均准确率,以 4.2% 的优势成为我们的最佳结果(也略微优于 O2P),这表明即使考虑到 fg 特征,full 特征提供的上下文信息也非常丰富。值得注意的是,在我们的完整+fg 特征上训练 20 个 SVR 仅需单核 1 小时,而在 O2P 特征上训练则需要 10 多个小时。
表 6 列出了 VOC 2011 测试集的结果,将我们表现最好的方法 fc6(full+fg)与两个强大的基线进行了比较。在 21 个类别中,我们的方法在 11 个类别中获得了最高的分割准确率,在所有类别中平均获得了 47.9% 的最高总体分割准确率(但在任何合理的误差范围内都可能与 O2P 的结果持平)。通过微调,可能会取得更好的性能。
6. 结论
近年来,物体检测性能停滞不前。性能最好的系统是将多个低级图像特征与来自物体检测器和场景分类器的高级上下文相结合的复杂集合。本文介绍了一种简单、可扩展的物体检测算法,与 PASCAL VOC 2012 的最佳结果相比,相对提高了 30%。
我们通过两种方法实现了这一性能。首先是将大容量卷积神经网络应用于自下而上的区域建议,以便定位和分割对象。其次是在标注训练数据稀缺的情况下训练大型 CNN 的范例。我们的研究表明,针对数据丰富的辅助任务(图像分类),在有监督的情况下预先训练网络,然后针对数据稀缺的目标任务(检测)对网络进行微调是非常有效的。我们推测,"有监督的预训练/特定领域的微调 "模式将对各种数据稀缺的视觉问题非常有效。
最后,我们指出,重要的是,我们结合使用了计算机视觉和深度学习的经典工具(自下而上的区域建议和卷积神经网络),取得了这些成果。这两者不是对立的科学探索方向,而是自然和不可避免的合作伙伴。
写在最后的话,本文分别用CNKI助手、福昕翻译、DeepL翻译以及Bing翻译,只是为了想大致了解一下R-CNN网络
本文分享自 python与大数据分析 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!