Posts /

Faster R CNN

Twitter Facebook
17 Jan 2017

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

Shaoqing Ren, Kaiming He, Ross Girshick and Jian Sun

翻译:朱本金

[TOC]

摘要

最先进的目标检测神经网络依赖 区域建议算法 假设对象的位置。SPPnet 和 Fast R-CNN 所取得的进步已经降低了在这些检测网络中的运行时间,同事也暴露出区域建议计算的瓶颈。在这次的工作中,我们引入了一个 区域建议网络 RPN,它共享了完整图像卷积特性与检测网络,从而使区域建议几乎没有任何代价。RPN 是一个完全的卷积网络,它在预测对象边界的同时进行对象位置匹配度分数的打分。RPN 被端到端地训练,从而生成高质量的区域建议(Region Proposals),然后用于 Fast R-CNN 进行检测。我们还融合了 RPN 和 Fast R-CNN 成一个共享它们的卷及特征的神经网络 —— 使用了最近很流行的神经网络术语:注意力机制(Attention Mechanism),RPN 部分告诉这个完整的网络应该注意哪些位置。对于 VGG-16 模型来说,我们的检测系统在 GPU 上有 5 fps 的帧率(所有步骤都包含在内),并在 PASCAL VOC 2007, 2012 和 MS COCO 数据集上实现了最高的目标检测准确率,而且,我们每张图片只用了 200 个建议区(proposals)。在 ILSVRC 和 COCO 2015 的竞赛中, Faster R-CNN 和 RPN 是多个赛区第一名的基础。代码我们已经发布了出来。

索引术语 — — Object Detection、Region Proposal, Convolutional Neural Network

1 介绍

近期目标检测领域的进步主要归功于 Region Proposal 方法的成功。尽管在最初, region-based CNNs 是很耗费计算资源的,但这种 cost 已经靠在 Proposals 之间共享卷积的方法大大的降低了。最近的一次实现,Fast R-CNN, 使用 VGG 实现了几乎实时检测的效果(这里指忽略花在 Region Proposal 上的时间)。现在,Proposals 是目前最新的检测系统中测试时间计算的瓶颈。

Region Proposal 方法尤其依赖便宜的特征和经济的引用模式。Selective Search 是其中最成功的方法之一,它给予工程化的低维度特征贪心地合并了超分辨率。然而,当与搞笑的监测网络作比较时, SS 慢了一个数量级:在 CPU 实现中,处理一幅图片需要 2s。EdgeBoxes 方法提供了目前最好的检测质量和检测速度的权衡方法, 0.2s 处理一幅图像。尽管如此,Region Proposal 的步骤还是会花费跟监测网络几乎相同的时间,这显然不是我们想要的。

值得一提的是,fast Region-Based CNNs 使用了 GPUs, 但是 Region Proposal 确实在 CPU 上实现的,这就使得这种速度不太可比的。显然,一个可以加速 region proposal 的方法是将其实现迁移到 GPU 上。这可能是工程上很有效的一种方法,但是重新实现一次没有考虑后续的监测网络,因此错过了重要的共享计算的机会。

在本文中,我们展示了一种算法层面的调整:用一个很深的卷及神经网络计算 Proposals ,这推动产生了一种优雅、高效的解决方案,在已有检测网络的计算时,它的 Proposals 计算几乎是可以忽略不计的。这里,我们正式介绍全新的 Region Proposal Networks,它共享了卷集层和最新的目标检测网络。通过在测试阶段共享卷积,计算 Proposals 的代价微不足道(10ms per image)。

我们的观测是使用 region-based 检测器(detector)的卷积特征图,例如 Fast R-CNN,也可以被用来生成 region Proposal。在这些卷积特征之上,我们通过添加了额外的一些卷基层构造了一个 RPN ,它对一个网格中的各个区域,同时对区域边界和每个位置的反对分数进行回归。因此,这种 RPN 是一种全连接的卷及神经网络(FCN),在生成检测提议区的任务中,可以被端到端地训练(trained end to end)。

RPN 旨在使用很大范围的尺度和比例来有效地预测地区提议(Region Proposal)。跟以前的使用图像金字塔(pyramid of images)或者 过滤器金字塔(filters pyramid)的方法相比,我们引入了一种全新的 “锚” 盒(“anchor” boxes),它用来指代多个伸缩比和长宽比。我们的机制可以被理解为一个回归引用的金字塔,它避免了枚举图像、过滤器或者长宽比。这个模型在我们使用单一放缩比的图像进行训练和测试的时候运行的不错,并且提高了运行速度。

为了将 RPN 和 Fast R-CNN 目标监测网络整合在一块,我们提出了一种训练机制:交替执行 region Proposal 的 精化(fine-tuning)和目标检测的 fine-tuning,而保持 Proposal 固定。这种机制收敛地更快,并且可以生成一个完整的、在两个任务之间共享卷及特征的神经网络。

我们使用 PASCAL VOC 检测评分机制全面地评估了我们的方法,结果显示 RPN 配合 Fast R-CNN 的准确率要好于最好的 Selective Search 配合 Fast R-CNN 的基线。同时,我们的方法去除了几乎所有在训练时间使用 SS 时的计算开销 — — 整个Proposals 的运行时间只需要 10 ms。即使是使用 VGG 模型,我们的检测方法也能在 GPU 上保持 5fps,因此,这是一个速度与准确率都很好的检测系统。我们也在 MS COCO 数据及上进行了测试,并且检测了在使用 COCO 数据集时,在 PASCAL VOC 性能的提升。代码在此:MATLAB, Python

这份手稿的一个初级版本已经发布了出来,因此,这个整合了 RPN 和 Faster R-CNN 的框架已经被泛化和迁移到其他的应用之中,比如 3D 物体检测、Part-Based 检测,实例分隔(Instance Segmentation)和图像描述(Image Captioning)。我们的这一系统也被商业系统采用,例如 Pinterest,结果显示用户参与度得到了提升。

在 ILSVRC 和 COCO 2015 的竞赛中,Faster R-CNN 和 RPN 是多个第一名的基础,他们包括 ImageNet Detection、 ImageNet Localization, COCO detection 和 COCO segmentation。RPN 完全学习从数据中 propose region,因此可以轻松地从更深、更有表示含义的特征中学习(例如 101 层的 残余网络)。Faster R-CNN 和 RPN 也被很多其他竞赛排名靠前的人使用。这些结果表明,我们的方法不仅是一个开销低的解决方案,同时也是一个有效提升准确度的解决方案。

2 相关工作

2.1 Object Proposals

有很多关于对象提议(Object Proposals)方法的文献。关于 OP 各种方法的详细调查和对比可以在这里找到。被广泛使用的 OP 方法包括一些基于超像素成组(比如 Selective Search、CPMC、MCG)和一些基于滑动窗口(比如 Objectness in Windows 和 EdgeBoxes的方法。 OP 方法被当做独立于 dectors 的模块使用(例如,Selective Search Object Detectors, R-CNN 和 Fast R-CNN)。

2.2 Deep Network for Object Detection

R-CNN 方法通过端到端地训练 CNNs 来进行 Proposal Regions 的区分,是归类到对象类别还是背景。 R-CNN 主要扮演一个分类器的作用,它并不进行对象边界的预测(除了使用边界框盒回归)。它的性能取决于 region Proposal 模块的性能。很多论文已经提出了一些使用深度神经网络来预测对象盒边界的方法。其中,OverFeat 方法,作为一个全连接层,被训练用作预测被假定为单个对象的定位任务的盒协调过程。这个全连接层然后和一个卷基层相连,这个卷基层用来同时检测多个类别的对象。而 MultiBox 方法则是从一个全连接层中同步生成 Region Proposal 和 预测一些不可知类别的盒边界,进而生成类似于 “单一盒” 版本的 OverFeat。这些类不可知的盒子(class-agnostic boxes)就被用作 R-CNN 的 Proposal。MultiBox Proposal 方法被应用于单图像分割,而我们的机制可以用于多图像分割。除此之外,MultiBox 并不在 Proposal 和 监测网络之间共享特征。我们会在后文详细阐述我们方法的时候再次提到 OverFeat 和 MultiBox 方法。跟我们的工作同时开展的另一项工作,DeepMask 方法则是用来学习分割/片段提议区(segmentation proposals)的。

在视觉识别中,由于共享卷及计算额高效和准确率,它已经引起了足够的注意。OverFeat 的这篇论文从一个图像分类、定位和检测的顺序金字塔(image pyramid of classification, localization, and detection)中计算卷及特征。给予共享卷及特征映射的自适应大小池化(Adaptive-sized pooling,SPP)方法被设计为高效的基于区域的目标检测和语义分割方法。Fast R-CNN 则使用了端到端地在检测器,用来在共享卷及特征上进行训练,这一方法展现出了引人注目的准确率和速度。

3 Faster R-CNN

我们的目标检测系统叫做 Faster R-CNN,它由两个模块组成。第一个模块是一个深度全卷积网络,用来提议区域;第二个模块则是一个 Fast R-CNN 检测器,它使用前一步生成的 proposed regions。整个系统是一个统一而且完整的目标检测网络,如下图所示。

Faster R-CNN 是一个单一、统一的目标检测网络,其中,RPN 模块充当这个完整网络的 注意力点 “Attention”。

通过使用最近很流行的神经网络中的 “Attention” 机制,RPN 模块可以告知 Fast R-CNN 模块需要注意看哪些地方。在 3.1 节中,我们将介绍 Region Proposal 网络的具体设计和属性。在 3.2 节中我们介绍训练共享特征的这两个模块的算法。

3.1 Region Proposal Networks

一个 RPN(Region Proposal Network)以一个任一大小的图像作为输入,然后输入一个矩形对象提议区的集合,每个 Proposal 都有一个 对象性分数(objectness score)。我们使用一个完全的卷及神经网络建模这个过程,我们将在本节详细描述这一步骤。由于我们的最终目标是和 Fast R-CNN 目标检测网络共享计算,我们假定两个网络共享一个共同的卷积层。在我们的实验中,我们观测了 Zeiler and Fergus(ZF) 模型,它有 5 个可共享的卷基层,和 Simonyan and Zisserman 模型(VGG-16),它有 13 个可共享的卷积层。

为了生成区域建议(Region Proposal),我们在最后共享的卷积层输出的卷积特征图上滑动一个小网络。该小网络将输入卷积特征图的 n×n 空间窗口作为输入。每一个滑动窗口都被映射成一个低维特征(256-d for ZF and 512-d for VGG, with ReLU [33] following)。这个特征然后被输入到两个兄弟全连接层——一个盒回归层(box-regression layer, reg)和一个盒分类层(box-classification layer, cls)。我们将 n 设置为 3,值得注意的是,输入图像的有效感知区域(effective receptive field)是很大的。(171 and 228 pixels for ZF and VGG, respectively)这个迷你网络如下如所示。注意,由于迷你网络以滑动窗口方式操作,所以全连接层在所有空间位置上共享。这种架构可以被很自然地用一个 n x n 的卷基层后面跟一个 1 x 1 的卷积层(两个卷积层分别为 reg 和 cls)。

RPN

3.1.1 Anchors

在滑动窗口的每个位置,我们同步地预测多个 region proposal,其中,每个位置的最大可能提议区的数量用 k 表示。因此,reg layer 有 4k 个输出编码对应于 k 个 boxes,cls layer 输出 2k 个score,这些分数用于估算每个 proposal 属于或不属于某个对象类型的概率。k个提议相对于k个参考框进行参数化,我们称之为锚点。锚点在所讨论的滑动窗口的中心,并且与比例和纵横比相关联。默认情况下,我们使用3个尺度和3个纵横比,在每个滑动位置产生k = 9个锚点。对于大小为 W×H(通常为〜2400)的卷积特征映射,总共有WHk个锚点。

Translation-Invariant Anchors (平移不变锚点)

我们的方法的一个重要属性是它是平移不变的,无论是在锚点和计算相对于锚点的建议的函数(function that compute proposals relative to the anchors)。如果评议图像中的对象,则提议(Proposal)应该翻译,并且相同的函数应该能够预测任一位置中的提议。这种平移不变性质由我们的方法保证。 作为比较,MultiBox方法使用 k-means 生成 800 个锚,这不是平移不变。 因此,MultiBox不保证在平移对象时生成相同的提议(Proposal)。平移不变性质还减小了模型的大小。 MultiBox具有(4 + 1)× 800 维全连接输出层,而我们的方法在 k = 9 锚的情况下具有(4 + 2)× 9 维的卷积输出层。结果,我们的输出层具有 2.8×10^4 个参数(VGG-16 的 512×(4 + 2)× 9 ),比使用 MultiBox 的 GoogleNet 具有的 6.1×10^6 个参数的 MultiBox 的输出层(1536 ×(4 + 1)× 800 更少)。如果考虑特征投影层(Feature Projection Layers),我们的提议层仍然比 MultiBox 的参数数量级少。 我们预计我们的方法在小数据集(如PASCAL VOC)上过拟合的风险更低。

Multi-Scale Anchors as Regression Reference 作为回归参考的多尺度锚

我们的锚的设计提出了一种解决多尺度(和长宽比)的新方案。已经存在两种用于多尺度预测的流行方式。第一种方法是基于图像/特征金字塔,例如在 DPM 和基于 CNN 的方法中。图像在多个尺度被调整大小,并且为每个尺度计算特征图(HOG 或深卷积特征)。这种方式通常很有用,但很耗时。 第二种方式是在特征地图上使用多个尺度(和/或纵横比)的滑动窗口。例如,在DPM 中,使用不同的滤波器大小(例如5×7和7×5)分别训练不同宽高比的模型。 如果这种方式用于解决多个尺度的问题,它可以被认为是一个“过滤器的金字塔”(pyramid of filters)。 第二种方式通常与第一种方式一起使用。

作为比较,我们的基于锚的方法则是基于锚点金字塔(pyramid of anchors),这是更具有效益的。 我们的方法参考多个刻度和宽高比的锚箱(anchor boxes)来进行分类和回归边界框(bounding boxes)。 它仅依赖于单个尺度的图像和特征地图,并且使用单个尺寸的过滤器(在特征图上滑动的窗口)。 我们通过实验显示该方案对于解决多个尺度和大小的影响如下表所示。

由于这种基于锚点的多尺度设计,我们可以方便地使用在单尺度图像上计算出来的卷积特征,如 Fast R-CNN 检测器[所做的那样。 多尺度锚的设计是共享特征的关键组件,而不需要额外处理尺度问题的成本。

3.1.2 Loss Function

为了训练RPN,我们为每个锚分配一个二元类标签(IsObject or Not)。 我们为两种锚分配正标签:(i)具有最高的交叉-联合(IoU)和真值盒(ground-truth box)的锚/锚s,或(ii)具有 IoU 的同时锚高于任何真值盒 0.7。 注意,单个地面实值框可以将正标签分配给多个锚点。 通常第二个条件足以确定正样本; 但我们仍然会采用第一个条件,因为在一些罕见的情况下,第二个条件可能无法找到正样本。如果对于所有地面真实框的 IoU 比率低于0.3,我们则对非正锚点分配负标签。 既不是积极也不是消极的锚不会对训练目标作出任何贡献。

利用这些定义,我们最小化 Fast R-CNN 中多任务损失后的目标函数。 我们对图像的损失函数定义为:

这里,i 是 mini-batch 中的锚的索引,并且 p_i 是锚 i 是某个对象的预测概率值。 如果锚 i 是正的,则地面真值标签 p_i* 是 1,如果锚是负的,则地面真值标签 p_i* 是 0。 t_i是表示所预测的边界框的4个参数化坐标的向量,t_i* 是与正锚点相关联的 i 个地面真值框的向量。 分类损失 L_cls 是两个类(对象与非对象)之间的对数损失。 对于回归损失,我们使用,其中R是在下面定义的鲁棒损失 i 函数(平滑L 1)。 术语p_i*L_reg i 表示回归损失仅在正锚点(p_i* = 1)处被激活,否则被禁用(p_i* = 0)。 cls 和 reg 层的输出分别由 {p_i} 和 {t_i} 组成。

这两个项由 N_cls 和 N_reg 标准化并由平衡参数 λ 加权。 在我们当前的实现中(如在释放的代码中),上面的等式中的 cls 项由 mini-batch 的大小(即,N_cls = 256)归一化,并且 reg 项由锚定位置的数量 即,N_reg 2,400)。 默认情况下,我们设置 λ = 10,因此 cls 和 reg 条件大致相等地加权。 我们通过实验显示结果对宽范围内的λ值不敏感(如下表所示)。 我们还注意到,上述的归一化不是必需的,并且可以被简化。

对于边界框回归,我们采用以下4个坐标的参数:

其中x,y,w 和 h 表示盒子的中心坐标及其宽度和高度。 变量 x,x_a 和 x* 分别用于预测框,锚点框和地面真实框(同样对于y,w,h 情况类似)。 这可以被认为是从锚定盒到附近地面真实盒的边界盒回归(Bounding box regression from an anchor box to a nearby ground-truth box)。

然而,我们的方法通过不同于以前的基于 RoI(感兴趣区域)方法的方式实现边界框回归。 在给予 RoI 的方法中,对从任意大小的RoI汇集的特征执行边界框回归,并且回归权重由所有区域大小共享。 在我们的公式中,用于回归的特征在特征图上具有相同的空间尺寸(3×3)。 为了说明不同的大小的效果,我们学习了一组 k 个边界框的回归。 每个回归器负责一个尺度和一个长宽比,并且k个回归者不分享权重。 因此,由于锚的设计,即使特征具有固定尺寸/尺度,仍然可以预测各种尺寸的盒子(boxes of various sizes)。

3.1.3 Training RPNs

RPN可以通过反向传播和随机梯度下降(SGD)进行端到端训练。我们遵循的“以图像为中心”(image-centric)的抽样策略来训练这个网络。每个 mini-batch 产生于包含许多正和负示例锚的单个图像。可以优化所有锚的损失函数,但是这将偏向负样本,因为它们是主导的。相反,我们对图像中的256个锚点进行随机抽样,以计算 mini-batch 的损失函数,其中采样的正和负锚的比率可以高达 1 :1。如果图像中存在少于128个正样本,我们使用负样本来填充 mini-batch。

我们通过从具有标准差0.01的零均值高斯分布获取权重来随机初始化所有的新层。所有其他层(即共享的卷积层)通过预训练用于 ImageNet 分类模型来初始化。我们调整 ZF 网络的所有层,和 conv3_1 和更高的 VGG 网络以节省内存。我们在 PASCAL VOC 数据集中,对 60K 的 mini-batch 使用 0.001 的学习率,对下一个 20k 的 mini-batch 使用 0.0001 的学习率。我们使用 0.9 的动量(momentum)和 0.0005 的权重衰减。我们使用 Caffe 实现这一过程。

3.2 Sharing Features for RPN and Fast R-CNN

到目前为止,我们已经描述了如何训练用于区域提议生成的网络,而不考虑将利用这些提议的基于区域的对象检测CNN。 对于检测网络来说,我们采用Fast R-CNN 的方法。 接下来,我们描述了一种如何学习一个由RPN和具有共享卷积层的 Fast R-CNN 组成的统一网络的算法。

独立训练的 RPN 和 Fast R-CNN 将以不同的方式修改它们的卷积层。 因此,我们需要开发一种允许在两个网络之间共享卷积层的技术,而不是学习两个独立的网络。 我们讨论三种方法来训练具有共享特征的网络:

  1. 交替训练。 在这个解决方案中,我们首先训练 RPN,并使用建议(Proposal)训练 Fast R-CNN。 由Fast R-CNN 调整的网络然后用于初始化RPN,并且该过程被迭代。 这是在本文中的所有实验中使用的解决方案。

  2. 近似联合训练(Approximate Joint Training)。 在这个解决方案中,RPN 和 Fast R-CNN 网络在训练期间被合并到一个网络中。在每个SGD迭代中,正向的这一趟(Forward Pass)生成区域提议,在训练 Fast R-CNN检测器时则被当做固定,预先计算好的提议区 。 反向传播没有什么特别之处,只是对于共享层,来自RPN 的损失 和 Fast R-CNN的损失的向后传播的信号被组合起来的。 这个解决方案很容易实现。 但是这个解决方案忽略了导数, 提案框的坐标也是神经网络的响应,所以是近似的。 在我们的实验中,我们经验发现,这个求解器产生了接近的结果(与下表中展示的交替训练的69.9%相比,mAP为70.0%),与交替训练相比,训练时间减少约25-50%。 这个求解器包含在我们发布的Python代码中。

  3. 非近似联合训练。 如上所述,由 RPN 预测的边界框也是输入的函数。 Fast R-CNN 中的 RoI 池化层接受卷积特征以及预测的边界框作为输入,因此理论上有效的反向传播求解器也应该涉及梯度,即框坐标(the Box Coordinates)。 这些梯度在上述近似联合训练中被忽略。 在非近似联合训练解决方案中,我们需要一个可区分的 RoI 池层( 框坐标)。 这是一个非平凡的问题,解决方案可以由在15中开发的 “RoI弯曲(RoI warping)” 层给出,这超出了本文的范围。

4-step Alternating Training(4步交替训练)

在本文中,我们采用一种“务实”的4步训练算法:通过交替优化学习共享特征。在第一步中,我们训练RPN,如第3.1.3 节所述。该网络使用 ImageNet 预训练模型初始化,并且针对区域提案任务进行精细调整的端到端初始化。在第二步中,我们使用由步骤1 RPN生成的建议通过Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet预训练模型初始化。在这一点上,两个网络不共享卷积层。在第三步中,我们使用检测器网络来初始化RPN训练,但是我们使用共享的卷积层,并且只对RPN特有的层进行调整。现在两个网络共享卷积层。最后,保持共享的卷积层固定,我们调整Fast R-CNN的独特的层。因此,两个网络共享相同的卷积层并形成统一网络。类似的交替训练可以运行更多的迭代,但我们已经观察到可以忽略的改进。

3.3 Implementation Details(实现细节)

我们在单个尺度的图像上训练和测试区域提议和对象检测网络。我们重新缩放图像,使得它们的较短边为 s = 600像素。多尺度特征提取(使用图像金字塔)可以提高精度,但是不能表现出良好的速度与精度的平衡。在重新缩放的图像上,最后卷积层上的ZF和VGG网络的总步长为16个像素,因此在尺寸调整之前的典型PASCAL图像(〜500×375)上为约10个像素。即使这样大的步幅仍然提供了良好的结果,但是精度可以调整为更小的步幅,从而进一步改善实验结果。

对于锚点,我们使用3个尺度,框面积为128^2,256^2 和 512^2 像素,以及3个宽高比为1:1,1:2和2:1。这些超参数不是仔细选择一个特定的数据集,我们会在下一节提供消融实验(ablation experiments)的效果。正如上文所讨论的,我们的解决方案不需要图像金字塔或滤波器金字塔来预测多个尺度的区域,这可以节省相当长的运行时间。下图显示了我们的方法处理各种尺度和宽高比的能力。下表则显示了使用ZF网络的每个锚点的平均建议(average proposal)大小。我们注意到,我们的算法允许大于底层的感知区的预测。这样的预测并不是不可能的 - 如果只有对象的中间是可见的,我们则仍然可以粗略地推断对象的范围。

检测示例:在 PASCAL 2007 数据集上使用 RPN Proposal。从上图可以看到,我们的方法适用于很大范围的缩放比例和长宽比。

对于s = 600,使用ZF网络学习到的的每个锚的平均建议大小。

跨越图像边界的锚箱需要小心处理。在训练期间,我们忽略所有跨界锚点,因此它们不会造成损失。对于典型的1000×600图像,总共将具有大约20000(≈60×40×9)个锚点。忽略跨边界锚点,每个图像有大约6000个锚点用于训练。如果在训练中不忽略边界交叉的异常值,则它们引入更大的,难以在目标中校正误差项,并且训练不会收敛。然而,在测试期间,我们仍然对整个图像应用完全卷积的RPN。这可以生成跨边界提议框,其被剪切到图像边界。

一些RPN提议会彼此高度重叠。 为了减少冗余,我们基于它们的 cls 分数对提案区域采用非最大抑制(NMS)算法。 我们将 NMS 的 IoU 阈值设置为 0.7,这为我们每个图像留下了大约2000个提议区域。 正如我们将要展示的一样,NMS 不会降低最终的检测精度,但可以大大减少建议区的数量。 在NMS之后,我们使用前N个排名的提案区域进行检测。 后面我们将会展示,我们使用2000个RPN提议训练Fast R-CNN,但是在测试时评估不同于训练时数量的提议。

4 Experiments 实验

4.1 Experiments on PASCAL VOC

我们在PASCAL VOC 2007检测基准上综合评估我们的方法。这个数据集包括大约5k个训练图像和5k测试图像,属于20多个对象类别。我们还为几个型号的PASCAL VOC 2012基准测试提供结果。对于ImageNet预训练网络,我们使用具有5个卷积层和3个完全连接层的ZF网络的“快速”版本,以及具有13个卷积层和3个完全连接的层的公共VGG-16模型。我们主要评估检测平均平均精度(mAP),因为这是对象检测的实际度量(而不是关注对象建议代理度量)。

下表的上半部分显示了使用各种区域提议方法训练和测试时的 Fast R-CNN 结果。这些结果使用 ZF 网络。对于选择性搜索(SS,我们通过“快速”模式生成大约2000个建议。对于EdgeBoxes(EB),我们通过调整为0.7 IoU的默认EB设置生成提议。在Fast R-CNN框架下,SS具有58.7%的mAP和EB具有58.6%的mAP。 RPN与Fast R-CNN实现了竞争性的结果,mAP为59.9%,同时使用多达300个提案。

由于共享卷积计算,使用RPN产生比使用SS或EB快得多的检测系统;较少的建议也减少了区域的完全连接层的成本,如下表所示。

Ablation Experiments on RPN 区域提议网络消融实验

为了研究 RPNs 作为建议方法的行为,我们进行了几项消融研究。首先,我们展示了在 RPN 和 Fast R-CNN 检测网络之间共享卷积层的效果。为此,我们在 4步训练过程中的第二步之后停止。使用单独的网络将结果略微降低到58.7%(RPN + ZF,非共享,上面第二个表)。我们观察到,这是因为在第三步中,当检测器调谐特征被用于精细调整RPN时,提高了质量。

接下来,我们解开RPN对训练Fast R-CNN检测网络的影响。为此,我们使用 2000 个 SS 提议和ZF网络训练 Fast R-CNN 模型。我们使用这个检测器,并通过改变测试时使用的建议区域来评估检测 mAP。在这些消融实验中,RPN不与检测器共享特征。

在测试时使用300个RPN建议替换SS,我们获得的mAP为56.8%。 mAP中的损失是由于训练/测试提议之间的不一致。该结果作为以下比较的基线(Baseline)。

有点令人惊讶的是,在测试时使用排名前100的提议时,RPN仍然导致竞争结果(55.1%),表明排名最高的RPN提议是准确的。在另一个极端,使用排名最高的6000个RPN提议(没有NMS)具有可比较的mAP(55.2%),建议的 NMS 不会降低检测mAP的精度,并且可以减少不必要的警告。

接下来,我们通过在测试时关闭它们中的任意一个分别研究RPN的cls和reg输出的作用。当cls层在测试时被删除(因此没有使用NMS /排序)时,我们从未评分的区域随机抽样N个建议。 mAP几乎不变,N = 1000(55.8%),但是当N = 100时显着降低到44.6%。这表明cls分数考虑了最高排名的提案的准确性。

另一方面,当在测试时移除reg层(因此提议成为锚定框)时,mAP下降到52.1%。这表明高质量的提案主要是由于回归盒边界。锚箱虽然具有多种尺度和纵横比,但不足以用于精确检测。

我们还评估了更强大的神经网络对单独的RPN的提议质量的影响。我们使用VGG-16训练RPN,仍然使用上述SS + ZF的检测器。 mAP从56.8%(使用RPN + ZF)改善至59.2%(使用RPN + VGG)。这是一个有有好的预兆的结果,因为它表明RPN + VGG的提议质量优于RPN + ZF。因为RPN + ZF的建议与SS竞争(当一致地用于训练和测试时都是58.7%),我们可以期望RPN + VGG比SS更好。以下实验证明了这种假设。

Performance of VGG-16

下表显示了用于建议和检测的VGG-16的结果。使用RPN + VGG,非共享特征的结果为68.5%,略高于SS基线。如上所示,这是因为由RPN + VGG生成的提议比SS更准确。与预定义的SS不同,RPN得益于受到了质量更高的神经网络的主动训练。对于特征共享的变体,结果是69.9%,比SS基线要更好,但几乎无成本的建议。我们进一步训练RPN和检测网络在PAS-CAL VOC 2007 的训练集和2012 的训练集的并集。 mAP为73.2%。下图显示了PASCAL VOC 2007测试集的一些结果。

使用 Faster R-CNN系统在PASCAL VOC 2007测试集上选择对象检测结果的示例。 模型是VGG-16,训练数据是07 + 12 trainval(2007测试集上的73.2%mAP)。 我们的方法检测宽范围的比例和高宽比的对象。 每个输出框与类别标签和[0,1]中的softmax分数相关联。 0.6的分数阈值用于显示这些图像。 获得这些结果的运行时间是每幅图像198ms,包括所有步骤。

在PASCAL VOC 2012测试集(下表)中,我们的方法对VOC 2007 trainval + test和VOC 2012 trainval的联合集训练的mAP为70.4%。

而在下表中,我们总结了整个对象检测系统的运行时间。 SS需要1-2秒,取决于内容(平均约1.5s),并且整合VGG-16的 Fast R-CNN在2000个SS建议上需要320ms(或者如果在完全连接的层上使用SVD,则为223ms)。我们的VGG-16系统在提议和检测上总共需要198ms。由于共享的转换特性,RPN单独只需要10ms计算额外的层。我们的区域计算负担也较低,由于较少的建议(300每图像),使用ZF网络时,我们的系统的帧速率为17 fps。

Sensitivities to Hyper-parameters. 超参数灵敏度

在下表中,我们审查锚点的设置。 默认情况下,我们使用3个比例和3个宽高比(下表中的69.9%mAP)。 如果在每个位置只使用一个锚点,mAP将下降3-4%的相当大的余量。 如果使用3个缩放(具有1个纵横比)或3个纵横比(具有1个缩放),mAP更高,这表明使用多个大小的锚作为回归参考是一个有效的解决方案。 仅使用3个具有1个宽高比(69.8%)的刻度就好像在该数据集上使用3个高宽比的3个刻度一样好,这表明刻度和宽高比对于检测精度不是解开的尺寸。 但我们仍然在我们的设计中采用这两个维度来保持我们的系统灵活性。

而在下表中,我们比较了前文所述公式中 λ 的不同值。 默认情况下,我们使用 λ= 10,这使得等式中的两项在归一化之后大致相等地加权。 下表显示当λ在大约两个数量级(1至100)的标度内时,我们的结果仅稍微受到影响(〜1%)。 这表明结果在宽范围内对λ不敏感。

在下表中,我们调查了测试中的提议的数量。

Analysis of Recall-to-IoU 召回-IoU 分析

接下来,我们计算不同IoU比例的提议与地面真实值框的召回率。 值得注意的是,召回到IoU度量只是松散地与最终的检测精度相关。 使用此指标来诊断投标方法比评估投标方法更合适。

在下图中,我们显示了使用300,1000和2000个提案的结果。 我们与SS,EB和MCG比较,并且N个提议是基于这些方法产生的信任的前N个。 这些图表明,当提案数量从2000个下降到300个时,RPN方法正常运行。这也就说明了为什么在使用少于300个提案时,RPN具有良好的最终检测mAP。 正如我们之前分析的,这个属性主要归因于RPN的cls项。 当建议较少时,SS,EB和MCG的召回速度比 RPN 更快。

One-Stage Detection vs. Two-Stage Proposal + Detection. 一阶段检测 对比 两阶段提议+检测

OverFeat论文 提出了一种检测方法,它使用回归和分类器在滑动窗口上卷积特征图。 OverFeat是一个单级的类特定检测流程,而我们的是一个两级级联,包括类不可知的提议和类特定的检测。在OverFeat中,区域特征来自在尺度金字塔上的一个纵横比的滑动窗口。这些特征用于同时确定对象的位置和类别。在RPN中,特征来自正方形(3×3)滑动窗口,并且相对于具有不同尺度和纵横比的锚来预测建议。尽管两种方法都使用滑动窗口,但区域建议任务只是更快的R-CNN的第一阶段 - 后面的 Fast R-CNN检测器参与对其进行修正的建议。在我们级联的第二阶段,区域特征被来自更忠实地覆盖区域特征的提议框进行自适应地合并。我们认为由于这些特性是我们得到了更准确的检测。

为了比较一级和两级系统,我们通过一级 Fast R-CNN模拟OverFeat系统(并因此也包括实现细节的其他差异)。在该系统中,“建议”是3个刻度(128,256,512)和3个宽高比(1:1,1:2,2:1)的密集滑动窗口。 Fast R-CNN被训练来预测类别特定的分数和从这些滑动窗口回归框位置。因为OverFeat系统采用图像金字塔,我们还使用从5个尺度提取的卷积特征进行评估。

下表比较了两级系统和一级系统的两个变体。使用ZF模型,单级系统的mAP为53.9%。这比两级制度(58.7%)下降4.8%。这个实验证明了级联区域提议和对象检测的有效性。我们还注意到,单阶段系统较慢,因为它有更多的建议要处理。

4.2 Experiments On MS COCO

我们在 Microsoft COCO 对象检测数据集上展示了更多的结果。此数据集包括80个对象类别。我们对训练集上的80k图像,验证集上的40k图像和 测试开发集上的20k图像进行实验。我们评估 IoU ∈[0.5:0.05:0.95](COCO的标准度量,简单表示为mAP @ [5,.95])和mAP@0.5(PASCAL VOC的度量)的平均mAP。

我们的系统对此数据集进行了一些小的更改。我们在 8-GPU 实现上训练我们的模型,并且对于RPN(每个GPU 1个)和 Fast R-CNN(每个GPU 2个)的有效 mini-batch 大小为8。 RPN步骤和快速R-CNN步骤都训练了240k 次迭代,学习率为0.003,然后是80k次迭代,0.0003。我们修改学习率(从0.003而不是0.001开始),因为更改了batch 的大小。对于锚点,我们使用3个宽高比和4个尺度(在原来的基础上添加了64^2),主要是通过处理此数据集上的小对象。此外,在我们的 Fast R-CNN步骤中,负样本被定义为具有最大IoU的那些,其中地面真实在区间[0,0.5)中,而不是前作中使用的[0.1,0.5] ]。我们注意到,在SPPnet系统中,[0.1,0.5]中的负样本用于网络精细协调,但是在[0,0.5]中的负样本仍然在SVM步骤中用直接的负采样。但是Fast R-CNN系统放弃了SVM步骤,因此从不访问[0,0.1]中的负样本。包括这些[0,0.1)样本改善了 Fas tR-CNN和 Faster R-CNN系统在COCO数据集上的mAP@0.5(但是对PASCAL VOC的影响可以忽略不计)。

其余的实现细节与PASCAL VOC相同。特别值得注意的是,我们继续使用300个提议和单个尺度(s = 600)测试。在COCO数据集上,每个图像的测试时间仍然大约为200ms。

在下表中,我们首先展示使用本文实现的Fast R-CNN系统的结果。我们的快速R-CNN基线在测试设置上为39.3%mAP@0.5。我们推测,这种差距的原因主要是由于负样本的定义以及 mini-batch 大小的变化。我们还注意到mAP @ [0.5,0.95]只是可比较的。

接下来,我们评估我们的 Faster R-CNN系统。使用COCO训练集训练,Faster R-CNN在COCO测试集上具有42.1%mAP@0.5 和 21.5%mAP @ [.5,.95]。对于mAP @ 0.5,这比mAP @ [0.5,.95]高2.8%,而在相同方案下(如上表所示),Fast R-CNN的对照高出了2.2%。这表明RPN在提高更高的IoU阈值时的定位精度方面表现出色。使用COCO trainval为训练集, Faster R-CNN在COCO测试集上具有42.7%mAP@0.5和21.9%mAP @ [5,.95]。下图显示了MS COCO测试集的一些结果。

使用 Faster R-CNN系统在MS COCO测试开发集上选择对象检测结果的示例。 模型是VGG-16,训练数据是COCO trainval(在测试开发集上是42.7%mAP@0.5)。 每个输出框与类别标签和[0,1]中的softmax分数相关联。 0.6的分数阈值用于显示这些图像。 对于每个图像,一种颜色表示该图像中的一个对象类别。

Faster R-CNN in ILSVRC & COCO 2015 compe- titions

我们已经证明,Faster R-CNN可以从更好的特征中受益,这归功于RPN完全通过神经网络学习提出区域。即使当深度增加到大于100层,这个结论仍然有效。只有通过用101-层残余网(ResNet-101)代替VGG-16时,Faster R-CNN系统将mAP从41.5%/ 21.2%(VGG-16)至48.4%/ 27.2%(ResNet-101)。随着与Faster R-CNN正交的其他改进,有人获得的单模型结果达到了55.7%/ 34.9%,COCO测试设置的总体结果为59.0%/ 37.4%,在COCO 2015对象检测竞赛中获得第一名。同样的系统也赢得了ILSVRC 2015对象检测竞赛的第一名,超过第二名8.5%。

4.3 From MS COCO to PASCAL VOC

大规模的数据集对于改善深层神经网络至关重要。接下来,我们将说明 MS COCO 数据集如何帮助提高在 PASCAL VOC数据集上的检测性能。

作为一个简单的基线,我们直接评估PASCAL VOC数据集上的COCO检测模型,而无需对任何PASCAL VOC数据进行微调。此评估是可能的,因为COCO上的类别是PASCAL VOC上的类别的超集。在本实验中忽略COCO上排除的类别,并且softmax层仅对20个类别加上背景执行。该设置下的mAP在PASCAL VOC 2007测试集上为76.1%(如下表所示)。即使PASCAL VOC数据没有被利用,这个结果仍然优于在VOC07 + 12(73.2%)上训练的最好结果。

然后我们对VOC数据集上的COCO检测模型进行微调。在本实验中,COCO模型代替ImageNet预训练模型(用于初始化网络权重),Faster R-CNN系统则进行如第3.2节所述的微调。这样做使得在PASCAL VOC 2007测试集上得到了78.8%的mAP,来自COCO集的额外数据将mAP增加5.6%。下表显示了在COCO + VOC上训练的模型对于PASCAL VOC 2007的每个单独类别具有最佳AP。

这种改进主要是由于对背景的虚假警告较少(如下图所示)。我们注意到,获得这些最优的结果的测试时间速度仍然是每个图像大约200ms。

5 Conclusion

我们展示了一种可以用来准确高效地进行区域建议生成的 RPN 网络。通过跟下行的监测网络共享卷及特征,区域建议的步骤几乎没有任何开销。我们的方法这个统一的,基于深度学习的对象检测系统能够以5-17 fps运行。 学习好的RPN还可以提高区域提议质量,从而提高了整体对象检测精度。


Twitter Facebook