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

学习 · 2023-06-03 · 44 人浏览

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

Faster R-CNN :使用区域建议网络实现实时目标检测

IEEE 2017-6-1

摘要

最先进的目标检测网络依赖于区域建议算法来假设目标位置。SPPnet [ 1 ]和Fast R-CNN [ 2 ]等技术的进步降低了这些检测网络的运行时间,使得候选区域计算成为瓶颈。在这项工作中,我们引入了一个区域建议网络( RPN ),该网络与检测网络共享全图卷积特征,从而实现了几乎无成本的区域建议。RPN是一个全卷积网络,它同时预测每个位置的对象边界和对象性分数。对RPN进行端到端的训练,生成高质量的候选区域,并由Fast R - CNN用于检测。我们进一步通过共享RPN和Fast R - CNN的卷积特征将它们合并为一个网络- -使用最近流行的具有"注意力"机制的神经网络术语,RPN组件告诉统一的网络在哪里看。对于非常深的VGG - 16模型[ 3 ],我们的检测系统在GPU上具有5fps的(包括所有步骤)帧率,同时在PASCAL VOC 2007,2012和MS COCO数据集上以每张图像仅300个候选目标实现了最先进的目标检测精度。在ILSVRC和COCO2015比赛中,Faster R - CNN和RPN是多条赛道获得第1名的基础。代码已公开提供。

INTRODUCTION

最近在目标检测方面的进展是由区域建议方法(例如[4])和基于区域的卷积神经网络( RCNNs )的成功推动的[5]。虽然基于区域的卷积神经网络如最初在[ 5 ]中开发的那样计算昂贵,但由于跨提案共享卷积[ 1 ] [ 2 ],它们的成本已经大大降低。最新的化身Fast R- CNN [ 2 ],在忽略区域建议所花费的时间的情况下,使用非常深的网络[ 3 ]实现了接近实时的速率。目前,提案是最先进的检测系统中的测试时间计算瓶颈。

区域推荐方法通常依赖于廉价的特征和经济的推理方案。选择性搜索[ 4 ]是最流行的方法之一,它基于工程化的低层特征贪婪地合并超像素。然而,与高效的检测网络[ 2 ]相比,选择性搜索的速度要慢一个数量级,在CPU实现中每幅图像的速度为2秒。Edge Boxes [ 6 ]目前在提案质量和速度之间提供了最佳折衷,每张图片0.2秒。尽管如此,区域建议步骤仍然消耗与检测网络一样多的运行时间。

人们可能会注意到,基于区域的快速CNN利用了GPU的优势,而研究中使用的区域建议方法是在CPU上实现的,因此这种运行时比较是不公平的。加速提案计算的一个显而易见的方法是将其重新实现为GPU。这可能是一个有效的工程解决方案,但重新实现忽略了下游的检测网络,因此错过了共享计算的重要机会。

在本文中,我们展示了使用深度卷积神经网络的算法更改计算提案-导致一个优雅和有效的解决方案,其中提案计算在给定检测网络的计算量的情况下几乎是免费的。为此,我们引入了新颖的区域建议网络( RPN ),它与最先进的目标检测网络[ 1 ] [ 2 ]共享卷积层。通过在测试时共享卷积,计算提案的边际成本是很小的(例如,每幅图像10ms)。

我们的观察是,基于区域的检测器使用的卷积特征图,如Fast R-CNN,也可以用于生成区域建议。在这些卷积特征的基础上,我们通过添加一些额外的卷积层来构建RPN,这些卷积层同时回归规则网格上每个位置的区域边界和客观性分数。因此,RPN是一种全卷积网络( FCN ) [ 7 ],可以针对生成检测建议的任务进行端到端的训练。

RPN 旨在有效地预测具有广泛尺度和纵横比的区域提案。与使用图像金字塔(图 1,a)或过滤器金字塔(图 1,b)的流行方法 [8]、[9]、[1]、[2] 相比,我们引入了新颖的“锚”框作为多种比例和纵横比的参考。我们的方案可以被认为是回归参考金字塔(图 1,c),它避免枚举图像或多个尺度或纵横比的过滤器。该模型在使用单尺度图像进行训练和测试时表现良好,因此有利于运行速度。

image-20230405132225823

图 1:解决多种尺度和尺寸的不同方案。 (a) 构建图像和特征图的金字塔,并在所有尺度上运行分类器。 (b) 在特征图上运行具有多个尺度/大小的过滤器金字塔。 (c) 我们在回归函数中使用参考框金字塔。

为了将 RPN 与 Fast R-CNN [2] 对象检测网络统一起来,我们提出了一种训练方案,该方案在区域建议任务微调和对象检测微调之间交替进行,同时保持建议固定。该方案可以快速收敛并生成一个统一的网络,该网络具有在两个任务之间共享的卷积特征。

我们在 PASCAL VOC 检测基准 [11] 上全面评估了我们的方法,其中具有 Fast R-CNN 的 RPN 产生的检测精度优于使用 Fast R-CNN 的选择性搜索的强基线。同时,我们的方法在测试时几乎消除了选择性搜索的所有计算负担——提案的有效运行时间仅为 10 毫秒。使用代价高昂的[3]非常深的模型,我们的检测方法在GPU上仍然具有5fps(包括所有步骤)的帧率,因此从速度和准确性两方面来看,它是一个实用的目标检测系统。我们还报告了 MS COCO 数据集 [12] 的结果,并使用 COCO 数据研究了 PASCAL VOC 的改进。代码已在 https://github.com/shaoqingren/faster_rcnn(在 MATLAB 中)和 https://github.com/rbgirshick/py-faster-rcnn(在 Python 中)公开提供。

该手稿的初步版本之前已发表 [10]。从那时起,RPN 和 Faster R-CNN 的框架被采用并推广到其他方法,例如 3D 对象检测 [13]、基于部分的检测 [14]、实例分割 [15] 和图像字幕 [16] .我们快速有效的对象检测系统也已构建在商业系统中,例如 Pinterests [17],据报道用户参与度有所提高。

在 ILSVRC 和 COCO 2015 竞赛中,Faster R-CNN 和 RPN 是 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割等多个第一名参赛作品 [18] 的基础。RPN 完全学习从数据中提出区域,因此可以很容易地受益于更深层次和更具表现力的特征(例如 [18] 中采用的 101 层残差网络)。 Faster R-CNN 和 RPN 也被这些竞赛中的其他几个领先参赛者使用。这些结果表明,我们的方法不仅是一种实用的具有成本效益的解决方案,而且是提高目标检测精度的有效方法。

相关工作

对象提议。有大量关于对象提议方法的文献。在[19]、[20]、[21]中可以找到对象提议方法的综合调查和比较。广泛使用的对象提议方法包括那些基于分组超像素的方法(例如 Selective Search [4]、CPMC [22]、MCG [23])和基于滑动窗口的方法(例如 objectness in windows [24]、EdgeBoxes [ 6]).对象提议方法被用作独立于检测器的外部模块(例如,选择性搜索 [4] 对象检测器、RCNN [5] 和 Fast R-CNN [2])。

在计算机视觉中,Object Proposals(对象提议)是指为了识别图像中所有可能存在的物体而提出的一系列候选区域。这些提议通常通过一些算法或策略来生成,可以是基于区域的方法,例如Selective Search或EdgeBoxes,也可以是基于深度学习的方法,例如Faster R-CNN中使用的RPN网络。生成的每个物体提议都被认为可能包含一个物体,因此这些提议可以被用于目标检测、图像分割等任务中。通常,一个好的物体提议算法应该能够高效地产生大量高质量的提议,同时尽量减少漏检或误检的情况。

用于对象检测的深度网络。R-CNN 方法 [5] 端到端地训练 CNN 以将提议区域分类为对象类别或背景。 R-CNN主要起到分类器的作用,它不预测对象边界(除了通过边界框回归进行细化)。它的准确性取决于区域建议模块的性能(参见 [20] 中的比较)。几篇论文提出了使用深度网络预测对象边界框的方法 [25]、[9]、[26]、[27]。在 OverFeat 方法 [9] 中,训练了一个全连接层来预测假定单个对象的定位任务的框坐标。然后将全连接层变成卷积层,用于检测多个类特定对象。MultiBox 方法 [26]、[27] 从网络生成区域建议,该网络的最后一个全连接层同时预测多个类不可知框,概括了 OverFeat 的“单框”方式。这些与类无关的框被用作 R-CNN [5] 的建议。 MultiBox 建议网络应用于单个图像裁剪或多个大图像裁剪(例如 224×224),这与我们的全卷积方案形成对比。 MultiBox 不在提议网络和检测网络之间共享特征。 我们稍后将在我们的方法的上下文中更深入地讨论 OverFeat 和 MultiBox。在我们工作的同时,DeepMask 方法 [28] 被开发用于学习分割建议。

卷积的共享计算 [9]、[1]、[29]、[7]、[2] 已经吸引了越来越多的关注,以实现高效但准确的视觉识别。 OverFeat 论文 [9] 从图像金字塔计算卷积特征以进行分类、定位和检测。共享卷积特征图上的自适应大小池化 (SPP) [1] 是为高效的基于区域的对象检测 [1]、[30] 和语义分割 [29] 而开发的。Fast R-CNN [2] 支持对共享卷积特征进行端到端检测器训练,并显示出令人信服的准确性和速度。

FASTER R-CNN

我们的目标检测系统称为 Faster R-CNN,由两个模块组成。

第一个模块是提出区域的深度全卷积网络,第二个模块是使用提出区域的 Fast R-CNN 检测器 [2]。

整个系统是一个单一的、统一的对象检测网络(图 2)。使用最近流行的具有“注意”[31] 机制的神经网络术语,RPN 模块告诉 Fast R-CNN 模块去哪里看。在第 3.1 节中,我们介绍了区域建议网络的设计和属性。在第 3.2 节中,我们开发了用于训练具有共享特征的两个模块的算法。

image-20230405150732306

图 2:Faster R-CNN 是用于对象检测的单个统一网络。 RPN 模块作为这个统一网络的“注意力”。

区域提议网络

区域提议网络 (RPN) 将图像(任意大小)作为输入并输出一组矩形对象提议,每个提议都有一个目标得分。 我们使用完全卷积网络 [7] 对这个过程进行建模,我们将在本节中对其进行描述。因为我们的最终目标是与 Fast R-CNN 对象检测网络 [2] 共享计算,我们假设两个网络共享一组通用的卷积层。在我们的实验中,我们研究了具有 5 个可共享卷积层的 Zeiler 和 Fergus 模型 [32] (ZF) 以及具有 13 个可共享卷积层的 Simonyan 和 Zisserman 模型 [3] (VGG-16)。

为了生成区域建议,我们在最后一个共享卷积层输出的卷积特征图上滑动一个小型网络。这个小型网络将输入卷积特征图的 n × n 空间窗口作为输入。每个滑动窗口都映射到一个较低维度的特征(ZF 为 256-d,VGG 为 512-d,随后是 ReLU [33])该特征被馈送到两个同级的全连接层——框回归层 (reg) 和框分类层 (cls)。我们在本文中使用 n = 3,注意到输入图像上的有效感受野很大(ZF 和 VGG 分别为 171 和 228 像素)。图 3(左)中的一个位置说明了这个微型网络。请注意,由于迷你网络以滑动窗口方式运行,因此全连接层在所有空间位置共享。这种架构自然是用一个 n×n 卷积层和两个同级 1×1 卷积层(分别用于 reg 和 cls)来实现的

滑动一个小型网络:这里的“滑动一个小型网络”指的是将一个小型的神经网络应用于卷积神经网络(CNN)的最后一个共享卷积层输出的特征图上,通过滑动这个小型网络,来生成图像中的区域提议。具体地说,这个小型网络通常是由一些卷积层和池化层组成的,通过对输入的卷积特征图进行卷积和池化操作,生成一系列的区域提议,这些区域提议被认为可能包含物体。这个过程类似于滑动窗口方法,但是使用了卷积神经网络来替代传统的分类器,可以大大减少计算量和内存占用,并且可以获得更好的检测精度。在Faster R-CNN中,这个小型网络就是RPN(Region Proposal Network)。

image-20230405152833229

图 3:左:区域提议网络 (RPN)。右图:在 PASCAL VOC 2007 测试中使用 RPN 提议的示例检测。我们的方法可以检测各种比例和宽高比的物体。
锚点

在每个滑动窗口位置,我们同时预测多个区域建议,其中每个位置的最大可能建议的数量表示为 k所以 reg 层有 4k 个输出编码 k 个盒子的坐标,而 cls 层输出 2k 个分数来估计每个提议的对象或非对象的概率。k个提议是相对于k个参考框进行参数化的,我们称之为锚点。锚点位于所讨论的滑动窗口的中心,并与比例和纵横比相关联(图 3,左)。默认情况下,我们使用 3 个尺度和 3 个纵横比,在每个滑动位置产生 k = 9 个锚点。对于大小为 W×H(通常为 ∼2,400)的卷积特征图,总共有 W Hk 个锚点。

平移不变锚点

我们方法的一个重要特性是它是平移不变的,无论是在锚点还是计算相对于锚点的建议的函数方面。如果在图像中移动了一个物体,那么提议应该随之移动,同样的函数也应该能够预测出这个提议在不同的位置。这种平移不变的属性由我们的方法保证。作为比较,MultiBox 方法 [27] 使用 k-means 生成 800 个锚点,这些锚点不是平移不变的。因此,MultiBox并不能保证如果一个物体被平移了,就能够生成相同的提议。

平移不变属性还减小了模型大小。MultiBox 有一个 (4 + 1) × 800 维的全连接输出层,而我们的方法在 k = 9 锚点的情况下有一个 (4 + 2) × 9 维的卷积输出层。因此,我们的输出层具有2.8 × 104个参数(对于VGG-16,512 ×(4 + 2)× 9),比MultiBox的输出层少了两个数量级,后者的输出层具有6.1 × 106个参数(对于MultiBox [27]中的GoogleNet [34],1536 ×(4 + 1)× 800)。如果考虑特征投影层,我们的建议层的参数仍然比 MultiBox 少一个数量级。我们希望我们的方法在小型数据集(如 PASCAL VOC)上过度拟合的风险较小。

多尺度锚作为回归参考

我们的锚点设计提出了一种解决多尺度(和纵横比)的新方案。如图 1 所示,多尺度预测有两种流行的方法。第一种方法基于图像/特征金字塔,例如 DPM [8] 和基于 CNN 的方法 [9]、[1]、[2]。图像在多个尺度上调整大小,并为每个尺度计算特征图(HOG [8] 或深度卷积特征 [9]、[1]、[2])(图 1(a))。这种方式经常有用,但很费时。第二种方法是在特征图上使用多个尺度(和/或纵横比)的滑动窗口。例如,在 DPM [8] 中,不同宽高比的模型使用不同的过滤器尺寸(例如 5×7 和 7×5)分别进行训练。如果这种方式用于解决多个尺度,它可以被认为是一个“过滤器金字塔”(图 1(b))。第二种方式通常与第一种方式联合采用[8]。

作为比较,我们的基于锚点的方法建立在锚点金字塔之上,更具成本效益。我们的方法参考多个尺度和纵横比的锚框对边界框进行分类和回归。它只依赖单一尺度的图像和特征图,并使用单一尺寸的过滤器(特征图上的滑动窗口)。我们通过实验展示了该方案对解决多个尺度和大小的影响(表 8)。

由于这种基于锚点的多尺度设计,我们可以简单地使用在单尺度图像上计算的卷积特征,就像 Fast R-CNN 检测器 [2] 所做的那样。多尺度锚点的设计是共享特征的关键组成部分,无需额外成本来解决尺度问题。

损失函数

为了训练 RPN,我们为每个锚点分配一个二进制类标签(是否为对象)。我们为两种锚点分配一个正标签:(i) 具有最高 Intersection-overUnion (IoU) 的锚点/锚点与真实框重叠,或者(ii) 与任何真实框的 IoU 重叠高于 0.7 的锚点。请注意,单个地面实况框可能会将正标签分配给多个锚点。通常第二个条件足以确定正样本;但我们仍然采用第一个条件,因为在极少数情况下第二个条件可能找不到正样本。如果所有真实框的 IoU 比率低于 0.3,我们将负标签分配给非正锚。既不是正面也不是负面的锚点对训练目标没有贡献。

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

$$ L(\{ p_i \},\{ t_i\})=\frac{1}{N_{cls}}\sum_iL_{cls}(p_i,p^*_i)+\lambda\frac{1}{N_{reg}}\sum_ip^*_iL_{reg}(t_i,t^*_i) \tag{1} $$

这里,i 是 mini-batch 中一个锚点的索引,而 $p_i $是预测的锚点 i 为物体的概率。如果锚是正的,则真值标签$ p^*_i$ 为 1,如果锚是负的,则为 0。$t_i$ 是一个向量,表示预测边界框的四个参数化坐标,而 $t^∗_i $则是与正锚点关联的真实边界框的坐标。分类损失 $L_{cls}$ 是两个类(对象与非对象)的对数损失。对于回归损失,我们使用$ L_{reg} (t_i, t^∗_i ) = R(t_i − t^∗_i )$,其中 R 是 [2] 中定义的稳健损失函数(平滑 $L_1$)。术语$ p^*_ i L_{reg}$ 表示回归损失仅对正锚点 $(p^*_ i = 1)$ 激活,否则禁用 $(p^*_ i = 0)$。 cls 和 reg 层的输出分别由 $\{p_i\}$ 和$\{t_i\}$ 组成。

这两项由 $N_{cls}$ 和 $N_{reg }$归一化,并由平衡参数 $\lambda$ 加权。在我们目前的实现中(与发布的代码相同),公式(1)中的 cls 项被 mini-batch 大小(即 $N_{cls} = 256$)所归一化,而 reg 项则被 anchor 位置的数量(即 $N_{reg} ≈ 2,400$)所归一化。默认情况下,我们设置 $\lambda = 10$,因此 cls 和 reg 项的权重大致相等。我们通过实验表明,结果对宽范围内的 $\lambda$值不敏感(表 9)。我们还注意到,上面的规范化不是必需的,可以简化。

对于边界框回归,我们采用[5]中4个坐标的参数化:

$$ \begin{aligned} t_x &=(x-x_a)/w_a, \quad t_y=(y-y_a)/h_a,\\ t_w&=log(w/w_a),\quad t_h=log(h/h_a),\\ t^*_x&=(x^*-x_a),\quad t^*_y =(y^*-y_a)/h_a,\\ t^*_w &= log(w^*/w_a),\quad t^*_h=log(h^*/h_a), \end{aligned}\tag{2} $$

其中 x、y、w 和 h 表示框的中心坐标及其宽度和高度。变量 $x、x_a 和 x^* $分别用于预测框、锚框和真值框(对于 y、w、h 也是如此)。这可以被认为是从锚框到附近的真实框的边界框回归。

尽管如此,我们的方法通过与以前的基于 RoI(感兴趣区域)方法 [1]、[2] 不同的方式实现边界框回归。在 [1]、[2] 中,对从任意大小的 RoI 汇集的特征执行边界框回归,并且回归权重由所有区域大小共享。

在我们的公式中,用于回归的特征在特征图上具有相同的空间大小(3×3)。为了考虑到不同的大小,学习了一组 k 个边界框回归器。每个回归器负责一种尺度和一种纵横比,k 个回归器不共享权重。因此,由于锚点的设计,即使特征具有固定大小/比例,仍然可以预测各种大小的框。

训练 RPN

RPN 可以通过反向传播和随机梯度下降 (SGD) [35] 进行端到端训练。我们遵循 [2] 中的“以图像为中心”的采样策略来训练该网络。每个小批量都来自包含许多正面和负面示例锚点的单个图像。可以优化所有锚点的损失函数,但这会偏向负样本,因为它们占主导地位。相反,我们在一张图像中随机采样 256 个 anchors 来计算 mini-batch 的损失函数,其中采样的正负 anchors 的比例高达 1:1。如果图像中的正样本少于 128 个,我们会用负样本填充小批量。

我们通过从标准差为 0.01 的零均值高斯分布中抽取权重来随机初始化所有新层。所有其他层(即共享卷积层)都通过预训练 ImageNet 分类模型 [36] 进行初始化,这是标准做法 [5]。我们调整 ZF 网络的所有层,以及 VGG 网络的 conv3_1 和更高层以节省内存 [2]。我们在 PASCAL VOC 数据集上对 60k 小批量使用 0.001 的学习率,对接下来的 20k 小批量使用 0.0001。我们使用 0.9 的动量和 0.0005 的权重衰减 [37]。我们的实现使用 Caffe [38]。

RPN 和 Fast R-CNN 的共享功能

到目前为止,我们已经介绍了如何训练一个用于区域提议生成的网络,但并没有考虑将利用这些提议的基于区域的目标检测 CNN。对于检测网络,我们采用 Fast R-CNN [2]。接下来,我们将描述学习由 RPN 和具有共享卷积层的 Fast R-CNN 组成的统一网络的算法(图 2)。

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

(i) 交替训练。在这个解决方案中,我们首先训练 RPN,然后使用建议来训练 Fast R-CNN。然后用Fast R-CNN调优的网络初始化RPN,迭代这个过程。这是本文所有实验中使用的解决方案。

(ii) 近似联合训练。在此解决方案中,RPN 和 Fast R-CNN 网络在训练期间合并为一个网络,如图 2 所示。在每次 SGD 迭代中,前向传递生成区域建议,在训练 Fast R-CNN 检测器时,这些建议就像固定的、预先计算的建议一样对待。反向传播像往常一样发生,对于共享层,来自 RPN 损失和 Fast R-CNN 损失的反向传播信号被组合。该解决方案易于实施。但是这个解决方案忽略了导数 w.r.t. proposal boxes 的坐标也是网络响应,所以是近似的。在我们的实验中,我们凭经验发现这个求解器产生了接近的结果,但与交替训练相比,训练时间减少了大约 25-50%。这个求解器包含在我们发布的 Python 代码中。

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

4 步交替训练。在本文中,我们采用实用的 4 步训练算法通过交替优化来学习共享特征。在第一步中,我们按照第 3.1.3 节中的描述训练 RPN。该网络使用 ImageNet 预训练模型进行初始化,并针对区域建议任务进行端到端微调。在第二步中,我们使用步骤 1 RPN 生成的建议通过 Fast R-CNN 训练一个单独的检测网络。该检测网络也由 ImageNet 预训练模型初始化。此时两个网络不共享卷积层。在第三步中,我们使用检测器网络来初始化 RPN 训练,但是我们固定了共享的卷积层并且只微调了 RPN 特有的层。现在两个网络共享卷积层。最后,在保持共享卷积层不变的情况下,我们微调了 Fast R-CNN 的独特层。因此,两个网络共享相同的卷积层并形成一个统一的网络。类似的交替训练可以运行更多次迭代,但我们观察到的改进微乎其微。

实施细节

我们在单一尺度的图像上训练和测试区域提议和目标检测网络 [1],[2]。我们重新缩放图像,使它们的短边为 s = 600 像素 [2]。多尺度特征提取(使用图像金字塔)可能会提高准确性,但不会表现出良好的速度-准确性权衡 [2]。在重新缩放的图像上,ZF 和 VGG 网络在最后一个卷积层上的总步幅为 16 个像素,因此在调整大小(~500×375)之前的典型 PASCAL 图像上为~10 个像素。即使是这样大的步幅也能提供良好的结果,但更小的步幅可能会进一步提高准确性。

对于锚点,我们使用 3 个尺度,框区域分别为 $128^2、256^2 和 512^2$ 像素,以及 1:1、1:2 和 2:1 的 3 个纵横比。这些超参数并不是针对特定数据集精心选择的,我们在下一节中提供了关于它们效果的消融实验。如前所述,我们的解决方案不需要图像金字塔或过滤器金字塔来预测多尺度区域,从而节省了大量运行时间。图 3(右)显示了我们的方法适用于各种比例和纵横比的能力。表 1 显示了使用 ZF 网络为每个锚点学习的平均提议大小。我们注意到,我们的算法允许进行比底层感受野更大的预测。这样的预测并非不可能——如果只有物体的中间是可见的,人们仍然可以粗略地推断出物体的范围。

image-20230405212323976

表 1:使用 ZF 网络为每个锚学习的平均提议大小(s = 600 的数字)。

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

一些 RPN 提案彼此高度重叠。为了减少冗余,我们根据建议区域的 cls 分数对建议区域采用非最大抑制 (NMS)。我们将 NMS 的 IoU 阈值固定为 0.7,这使得每张图像大约有 2000 个建议区域。正如我们将展示的那样,NMS 不会损害最终的检测精度,但会大大减少提议的数量。在 NMS 之后,我们使用排名前 N 的建议区域进行检测。接下来,我们使用 2000 个 RPN 提案训练 Fast R-CNN,但在测试时评估不同数量的提案。

实验

PASCAL VOC 实验

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

表 2(上)显示了使用各种区域建议方法训练和测试时的 Fast R-CNN 结果。这些结果使用 ZF 网络。对于选择性搜索(SS)[4],我们通过“快速”模式生成了大约 2000 个建议。对于 EdgeBoxes (EB) [6],我们通过调整为 0.7 IoU 的默认 EB 设置生成建议。在 Fast R-CNN 框架下,SS 的 mAP 为 58.7%,EB 的 mAP 为 58.6%。使用 Fast R-CNN 的 RPN 取得了有竞争力的结果,mAP 为 59.9%,同时使用了多达 300 个提案8。由于共享卷积计算,使用 RPN 产生的检测系统比使用 SS 或 EB 快得多;更少的建议也降低了区域全连接层的成本(表 5)。

image-20230406094824106

表 2:PASCAL VOC 2007 测试集的检测结果(在 VOC 2007 trainval 上训练)。检测器是带 ZF 的 Fast R-CNN,但使用各种建议方法进行训练和测试。

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

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

在测试时用 300 个 RPN 提议替换 SS 导致 mAP 为 56.8%。mAP 的损失是因为训练/测试建议之间的不一致。此结果用作以下比较的基线。

有点令人惊讶的是,在测试时使用排名靠前的 100 个提议时,RPN 仍然会导致有竞争力的结果 (55.1%),这表明排名靠前的 RPN 提议是准确的。在另一个极端,使用排名靠前的 6000 个 RPN 提议(没有 NMS)具有相当的 mAP (55.2%),这表明 NMS 不会损害检测 mAP,并且可以减少误报。

接下来,我们通过在测试时关闭其中一个来分别研究 RPN 的 cls 和 reg 输出的作用。当 cls 层在测试时被移除时(因此不使用 NMS/排名),我们从未评分区域随机抽取 N 个提案。当 N = 1000 (55.8%) 时,mAP 几乎没有变化,但当 N = 100 时,mAP 显着降低至 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 更好。以下实验证明了这一假设。

VGG-16 的性能。表 3 显示了 VGG-16 的建议和检测结果。使用 RPN+VGG,未共享特征的结果为 68.5%,略高于 SS 基线。如上图,这是因为RPN+VGG生成的proposal比SS更准确。与预定义的 SS 不同,RPN 是主动训练的,并且受益于更好的网络。对于共享特征的变体,结果为 69.9%——优于强大的 SS 基线,但提案几乎没有成本。我们进一步在 PASCAL VOC 2007 trainval 和 2012 trainval 的联合集上训练 RPN 和检测网络。 mAP 为 73.2%。图 5 显示了 PASCAL VOC 2007 测试集上的一些结果。在 PASCAL VOC 2012 测试集(表 4)上,我们的方法在 VOC 2007 trainval+test 和 VOC 2012 trainval 的联合集上训练的 mAP 为 70.4%。表 6 和表 7 显示了详细数字。

image-20230413174629272

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

image-20230406145520753

表 3:PASCAL VOC 2007 测试集的检测结果。检测器是 Fast R-CNN 和 VGG-16。训练数据:“07”:VOC 2007 trainval,“07+12”:VOC 2007 trainval和VOC 2012 trainval的并集。对于 RPN,Fast R-CNN 的训练时间建议是 2000。$†$:这个数字在 [2] 中报告;使用本文提供的存储库,这个结果更高(68.1)。

image-20230406145634717

表 4:PASCAL VOC 2012 测试集的检测结果。检测器是 Fast R-CNN 和 VGG-16。训练数据:“07”:VOC 2007 trainval,“07++12”:VOC 2007 trainval+test 和VOC 2012 trainval 的并集。对于 RPN,Fast R-CNN 的训练时间建议为 2000。$†$:http://host.robots.ox.ac.uk:8080/anonymous/HZJTQA.html。 $‡$:http://host.robots.ox.ac.uk:8080/anonymous/YNPLXB.html。 $§$:http://host.robots.ox.ac.uk:8080/anonymous/XEDH10.html

image-20230406150144696

表 5:K40 GPU 上的时间(毫秒),除了在 CPU 中评估 SS 提议。 “Region-wise”包括 NMS、池化层、全连接层和 softmax 层。请参阅我们发布的运行时间分析代码。

image-20230406150339990

表 6:使用 Fast R-CNN 检测器和 VGG-16 在 PASCAL VOC 2007 测试集上的结果。对于 RPN,Fast R-CNN 的训练时间建议为 2000。RPN* 表示取消共享特征版本。

image-20230406151903102

表 7:使用 Fast R-CNN 检测器和 VGG-16 在 PASCAL VOC 2012 测试集上的结果。对于 RPN,Fast R-CNN 的训练时间建议为 2000。

在表 5 中,我们总结了整个目标检测系统的运行时间。 SS 需要 1-2 秒,具体取决于内容(平均约 1.5 秒),使用 VGG-16 的 Fast R-CNN 在 2000 个 SS 提议上需要 320 毫秒(如果在全连接层 [2] 上使用 SVD,则需要 223 毫秒)。我们的 VGG-16 系统用于提议和检测总共需要 198 毫秒。在共享卷积特征的情况下,RPN 仅需 10ms 即可计算附加层。由于提议较少(每张图像 300 个),我们的区域计算也较低。我们的系统使用 ZF 网络时的帧速率为 17 fps。

对超参数的敏感性。在表 8 中,我们调查了锚点的设置。默认情况下,我们使用 3 个尺度和 3 个纵横比(表 8 中的 69.9% mAP)。如果在每个位置只使用一个锚点,mAP 会下降 3-4% 的相当大的幅度。如果使用 3 个尺度(具有 1 个纵横比)或 3 个纵横比(具有 1 个尺度),则 mAP 更高,表明使用多个尺寸的锚点作为回归参考是一种有效的解决方案。在此数据集上仅使用具有 1 个纵横比的 3 个尺度 (69.8%) 与使用具有 3 个纵横比的 3 个尺度一样好,这表明尺度和纵横比不是检测精度的分离维度。但是我们在设计中仍然采用这两个维度来保持我们系统的灵活性。

image-20230406152807927

表 8:使用不同锚点设置的 Faster R-CNN 在 PASCAL VOC 2007 测试集上的检测结果。网络是 VGG-16。训练数据是VOC 2007 trainval。使用 3 个尺度和 3 个纵横比 (69.9%) 的默认设置与表 3 中的相同。

在表 9 中,我们比较了等式 (1) 中不同的$\lambda$ 值。默认情况下,我们使用 $\lambda = 10$,这使得等式 (1) 中的两项在归一化后的权重大致相等。表 9 显示,当 $\lambda$在大约两个数量级(1 到 100)的范围内时,我们的结果仅受到轻微影响(约 1%)。这表明结果在很宽的范围内对 λ 不敏感。

image-20230406154400514

表 9:Faster R-CNN 在 PASCAL VOC 2007 测试集上使用等式(1)中不同的 λ 值的检测结果。网络是 VGG-16。训练数据是VOC 2007 trainval。使用 λ = 10 (69.9%) 的默认设置与表 3 中的相同。

Recall-to-IoU 分析。接下来,我们使用 groundtruth 框计算不同 IoU 比率下的建议召回率。值得注意的是,Recall-to-IoU 指标与最终检测准确度的关系只是松散的 [19]、[20]、[21]。使用此指标来诊断提议方法比评估它更合适。

在图 4 中,我们显示了使用 300、1000 和 2000 个提案的结果。我们与 SS 和 EB 进行比较,N 个提案是基于这些方法生成的置信度排名前 N 的提案。这些图表明,当提案数量从 2000 下降到 300 时,RPN 方法表现得很好。这解释了为什么 RPN 在使用少至 300 个提议时具有良好的最终检测 mAP。正如我们之前分析的那样,这个属性主要归因于 RPN 的 cls 项。当提案较少时,SS 和 EB 的召回率比 RPN 下降得更快。

image-20230406161443788

图 4:PASCAL VOC 2007 测试集上的召回率与 IoU 重叠率。

一阶段检测与两阶段提议+检测。OverFeat 论文 [9] 提出了一种检测方法,该方法在卷积特征图上的滑动窗口上使用回归器和分类器。OverFeat 是一个单阶段、特定类别的检测管道,而我们的是一个两阶段级联,由类别不可知的建议和特定类别的检测组成。在 OverFeat 中,区域特征来自比例金字塔上一个宽高比的滑动窗口。这些特征用于同时确定对象的位置和类别。在 RPN 中,特征来自方形 (3×3) 滑动窗口,并预测相对于具有不同尺度和纵横比的锚点的建议。虽然这两种方法都使用滑动窗口,但区域建议任务只是 Faster R-CNN 的第一阶段——下游的 Fast R-CNN 检测器会处理建议以细化它们。在我们级联的第二阶段,区域特征被自适应地从更忠实地覆盖区域特征的提议框中汇集 [1]、[2]。我们相信这些功能可以带来更准确的检测。

为了比较单阶段和两阶段系统,我们通过单阶段 Fast R-CNN 模拟 OverFeat 系统(因此也规避了实现细节的其他差异)。在这个系统中,“建议”是 3 种比例(128、256、512)和 3 种纵横比(1:1、1:2、2:1)的密集滑动窗口。Fast R-CNN 经过训练可以预测特定类别的分数并从这些滑动窗口回归框位置。由于 OverFeat 系统采用图像金字塔,我们还使用从 5 个尺度提取的卷积特征进行评估。我们使用 [1]、[2] 中的这 5 个尺度。

表 10 比较了两级系统和一级系统的两个变体。使用 ZF 模型,一级系统的 mAP 为 53.9%。这比两级系统 (58.7%) 低 4.8%。该实验证明了级联区域提议和目标检测的有效性。在 [2]、[39] 中报告了类似的观察结果,其中用滑动窗口替换 SS 区域提议导致两篇论文中的 ~6% 退化。我们还注意到,onestage 系统速度较慢,因为它要处理的提案要多得多。

image-20230413164609798

表 10:一阶段检测与两阶段提议 + 检测。检测结果在 PASCAL VOC 2007 测试集上使用 ZF 模型和 Fast R-CNN。 RPN 使用非共享功能。

MS COCO 上的实验

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

[email protected]是一种衡量目标检测算法性能的指标,其中的“m”表示平均值,AP表示平均精度,“0.5”表示IoU(Intersection over Union)阈值为0.5。在目标检测中,IoU是指预测框与真实框之间的交集比上并集的值,用于衡量两个框的重叠程度。

具体来说,对于每个类别,[email protected]指在所有的测试样本中,所有IoU大于等于0.5的预测框与真实框之间的匹配情况的平均精度。[email protected]越高,表示目标检测算法在预测框与真实框之间的匹配上表现越好,其检测性能也越好。

在目标检测领域,[email protected]是一个非常重要的指标,经常被用来评价各种目标检测算法的性能。例如,在Faster R-CNN论文中,作者使用[email protected]作为主要的评价指标来评估该算法在PASCAL VOC和MS COCO数据集上的检测性能。

我们的系统为此数据集做了一些小改动。我们在 8-GPU 上训练我们的模型,RPN 的有效小批量大小变为 8(每个 GPU 1 个),Fast R-CNN 的有效小批量大小变为 16(每个 GPU 2 个)。RPN 步骤和 Fast R-CNN 步骤都经过 240k 次迭代训练,学习率为 0.003,然后进行 80k 次迭代,学习率为 0.0003。我们修改学习率(从 0.003 而不是 0.001 开始),因为小批量大小发生了变化。对于锚点,我们使用 3 个纵横比和 4 个比例(增加 642),主要是为了处理该数据集上的小对象。此外,在我们的 Fast R-CNN 步骤中,负样本被定义为在 [0, 0.5) 区间内与 ground truth 具有最大 IoU 的样本,而不是 [1], [2] 中使用的 [0.1, 0.5) ].我们注意到,在 SPPnet 系统 [1] 中,[0.1, 0.5) 中的负样本用于网络微调,但 [0, 0.5) 中的负样本仍然在 SVM 步骤中被访问,具有 hard-negative mining .但 Fast R-CNN 系统 [2] 放弃了 SVM 步骤,因此 [0, 0.1) 中的负样本永远不会被访问。包括这些 [0, 0.1) 样本可以提高 Fast R-CNN 和 Faster R-CNN 系统在 COCO 数据集上的 [email protected](但对 PASCAL VOC 的影响可以忽略不计)。

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

在表 11 中,我们首先报告了使用本文中的实现的 Fast R-CNN 系统 [2] 的结果。我们的 Fast R-CNN 基线在测试开发集上的 [email protected] 为 39.3%,高于 [2] 中报告的水平。我们推测造成这种差距的原因主要是负样本的定义以及小批量大小的变化。我们还注意到 mAP@[.5, .95] 只是具有可比性。

image-20230413173708382

表 11:MS COCO 数据集上的对象检测结果 (%)。型号为VGG-16。

接下来我们评估我们的 Faster R-CNN 系统。使用COCO训练集训练,Faster R-CNN在COCO test-dev集上有42.1% [email protected]和21.5% mAP@[.5, .95]。[email protected] 和 mAP@[.5, .95] 比同一协议下的 Fast RCNN 对应物高 2.8% 和 2.2%(表 11)。这表明 RPN 在提高 IoU 阈值时的定位精度方面表现出色。使用 COCO trainval 集进行训练,Faster RCNN 在 COCO test-dev 集上有 42.7% [email protected] 和 21.9% mAP@[.5, .95]。图 6 显示了 MS COCO 测试开发集上的一些结果。

image-20230413174755201

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

Faster R-CNN 在 ILSVRC 和 COCO 2015 竞赛中的表现我们已经证明,Faster R-CNN 从更好的特征中获益更多,这要归功于 RPN 完全学会通过神经网络提议区域。即使将深度显着增加到超过 100 层 [18],这一观察结果仍然有效。仅通过用 101 层残差网络 (ResNet-101) [18] 替换 VGG-16,Faster R-CNN 系统将 mAP 从 41.5%/21.2% (VGG16) 提高到 48.4%/27.2% (ResNet-101) COCO val 集。通过与 Faster RCNN 正交的其他改进,He 等人。 [18] 在 COCO 测试开发集上获得了 55.7%/34.9% 的单模型结果和 59.0%/37.4% 的集成结果,在 COCO 2015 目标检测竞赛中获得第一名。同样的系统[18]也在ILSVRC 2015目标检测竞赛中获得第一名,以绝对优势超过第二名8.5%。RPN 也是 ILSVRC 2015 本地化和 COCO 2015 分割竞赛第一名获奖作品的组成部分,其详细信息分别在 [18] 和 [15] 中提供。

4.3 从 MS COCO 到 PASCAL VOC

大规模数据对于改进深度神经网络至关重要。接下来,我们研究 MS COCO 数据集如何帮助提高 PASCAL VOC 的检测性能。

作为一个简单的基线,我们直接在 PASCAL VOC 数据集上评估 COCO 检测模型,而不对任何 PASCAL VOC 数据进行微调。这种评估是可能的,因为 COCO 上的类别是 PASCAL VOC 上的类别的超集。本次实验忽略了 COCO 独有的类别,仅对 20 个类别加背景进行 softmax 层处理。此设置下的 mAP 在 PASCAL VOC 2007 测试集上为 76.1%(表 12)。这个结果比在 VOC07+12 (73.2%) 上训练的结果好很多,即使没有利用 PASCAL VOC 数据。

image-20230413182047694

表 12:Faster R-CNN 在 PASCAL VOC 2007 测试集和 2012 测试集上使用不同训练数据的检测 mAP (%)。型号为VGG-16。 “COCO”表示使用COCO trainval集进行训练。另见表 6 和表 7。

然后我们在 VOC 数据集上微调 COCO 检测模型。在这个实验中,COCO 模型代替了 ImageNet 预训练模型(用于初始化网络权重),并且 Faster R-CNN 系统按照 3.2 节所述进行了微调。这样做会导致 PASCAL VOC 2007 测试集上的 mAP 达到 78.8%。来自 COCO 集的额外数据将 mAP 提高了 5.6%。表 6 显示,在 COCO+VOC 上训练的模型在 PASCAL VOC 2007 上的每个类别都有最好的 AP。在 PASCAL VOC 2012 测试集上观察到类似的改进(表 12 和表 7)。我们注意到,获得这些强大结果的测试时间速度仍然约为每张图像 200 毫秒。

结论

我们已经提出了 RPN 以高效准确地生成区域提案。通过与下游检测网络共享卷积特征,区域提议步骤几乎是免费的。我们的方法使统一的、基于深度学习的对象检测系统能够以接近实时的帧速率运行。学习到的 RPN 还提高了区域提议质量,从而提高了整体目标检测的准确性。

目标检测 RCNN Faster-RCNN 深度学习 人工智能
Theme Jasmine by Kent Liao