【深度学习】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

Posted by ShawnD on May 28, 2022

Abstract

最先进的物体检测网络依赖于区域提议算法来假设物体的位置。

SPPnet[1]和Fast R-CNN[2]等技术的进步减少了这些检测网络的运行时间,暴露出区域提议的计算成为瓶颈。

在这项工作中,引入了一个区域提议网络(RPN),它与检测网络共享全图像卷积特征,从而实现了几乎 cost-free 的区域提议。

RPN是一个全卷积的网络,它可以同时预测每个位置的目标边界和 objectness scores。

对RPN进行端到端训练,生成高质量的区域提议,用于Fast R-CNN进行检测。

进一步将 RPN 和 Fast R-CNN 合并成一个网络,通过共享它们的卷积特征,使用最近流行的带有注意力机制的神经网络术语,RPN组件告诉统一的网络往哪里看。

对于非常深的VGG-16模型[3],检测系统在GPU上的帧率为5帧/秒(包括所有步骤),同时在PASCAL VOC 2007、2012和MS COCO数据集上实现了最先进的目标检测精度,每个图像只有300个提议。

在ILSVRC和COCO 2015年的比赛中,Faster R-CNN 和 RPN 是获得多个赛道第一名的参赛作品的基础。

Faster R-CNN

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

整个系统是单个、统一的目标检测网络(图2)。

RPN模块使用最近流行的具有 “注意力”[31]机制的神经网络,其告诉 Fast R-CNN 模块看哪里。

Region Proposal Networks

区域提议网络(RPN)将图像(任何大小)作为输入,并输出一组矩形目标提议,每个提议都有 objectness 分数。作者用一个全卷积的网络[7]来模拟这个过程。由于作者的最终目标是与 Fast R-CNN 目标检测网络共享计算[2],作者假设两个网络共享一组共同的卷积层。

为了生成区域提议,作者将一个小网络滑过 最后一个共享卷积层输出的卷积特征图。这个小网络将输入卷积特征图的 $n \times n$ 空间窗口作为输入。每个滑动窗口都映射到低维特征。此特征被输入到两个全连接层——一个边界框回归层(reg) 和 一个分类层(cls)。作者在这篇文章中使用 $n = 3$,输入图像上的有效感受野很大(ZF 和 VGG分别为171和228像素)。这个迷你网络在图3(左)进行了说明。请注意,由于迷你网络以滑动窗口方式运行,全连接的层在所有空间位置共享。这种架构很自然地用 $n \times n$ 卷积层,然后是两个1×1卷积层(分别用于 reg 和 cls )。

Anchors

在每个滑动窗口位置,作者同时预测多个区域提议,其中每个位置的最大可能提议数量表示为 $k$。因此,reg 层有 $4k$ 个输出,编码 $k$ 个框的坐标,cls层输出 $2k$ 类别,估计每个提案的目标或非目标的概率。$k$ 个提议是相对于 $k$ 个参考框参数化的,称之为先验框。

先验框以滑动窗口为中心,有多个尺度和宽高比(图3,左)。默认情况下,使用3个尺度和3个宽高比,在每个滑动位置产生 $k = 9$ 个先验框。对于大小为 $W×H$(通常∼2,400)的卷积特征图,总共有 $W \times H \times k$ 个先验框。

Translation-Invariant Anchors

该方法的一个重要属性是,无论是在先验框还是计算提议相对于先验框的函数,它都是平移不变的。如果在图像中平目标,则提议应该平移,相同的函数应该能够在任一位置预测提议。这个平移不变性由该方法进行保证。相比之下,MultiBox方法使用k均值生成800个先验框,这些先验框不是平移不变的。因此,MultiBox不保证在平移目标时生成相同的提议。

平移不变性也减少了模型大小。MultiBox有一个 $(4 + 1) \times 800$ 维全连接的输出层,而在 $k = 9$ 个先验框的情况下,该方法有 $(4 + 2) \times 9$ 维卷积输出层。如果考虑特征投影层,提议层的参数仍然比 MultiBox 少一个数量级。该方法在 PASCAL VOC 等小型数据集上过拟合的风险会降低。

Multi-Scale Anchors as Regression References

先验框设计提出了一种解决多尺度(和宽高比)的新方案。如图1所示,有两种流行的多尺度预测方法。第一种方法是基于图像/特征金字塔, 这种方法有效但是耗时。第二种方法是在特征图上使用多个尺度(或宽高比)的滑动窗口。如果使用这种方式来解决多尺度,它可以被认为是一个“pyramid of filters”。 第二种方式通常与第一种方式联合采用。

相比之下,基于先验框的方法建立在先验框金字塔上,这更具成本效益。该方法参照具有多个尺度和宽高比的先验框框对边界框进行分类和回归。它只依赖于单个尺度的图像和特征图,并使用单一大小的 filter(在特征图上滑动窗口)。作者通过实验展示了该方案对解决多尺度和尺寸的影响(表8)。

得益于这种基于先验框的多尺度设计,可以简单地使用单尺度图像上的卷积特征,就像 Fast R-CNN 检测器所做的那样。多尺度先验框的设计是共享特征的关键组件,而无需解决尺度问题的额外成本。

Loss Function

对于训练RPN,作者为每个先验框分配一个二分类标签(是否是目标)。

作者为两种先验框为分配正标签:

  • 先验框与真实边界框有最高的交并比
  • 先验框与真实边界框交并比大于0.7

请注意,单个真实边界框框可能会为多个先验框分配正标签。通常,第二个条件足以确定正样本;但作者仍然采用第一个条件,因为在极少数情况下,第二个条件可能不会找到正样本。如果先验框与真实边界框交并比低于0.3,为其分配一个负标签。既不正也负的先验框对训练目标没有贡献。

通过这些定义,遵循 Fast R-CNN 的多任务损失,作者将这些目标函数最小化。一个图像的损失函数定义为:

\[L({p_i}, {t_i}) = \frac{1}{N_{cls}} \sum_i L_{cls} (p_, p_i^*) + \lambda \frac{1}{N_{reg}} \sum_i p_i^* L_{reg}(t_i, t_i^*)\]

$i$ 是一个小批量中一个先验框的索引, $p_i$ 是预测第 $i$ 个先验框是否是一个目标的概率。 如果先验框是正样本,那么 $p_i^{}$ 为 1, 如果先验框为负样本,那么它是0。 $t_i$ 是预测的边界框的 4 个参数化的坐标, $t_i^{}$ 是和正先验框相对应的真实边界框的参数化的坐标。分类损失 $L_{cls}$ 是两个类别的对数损失。对与回归损失, 使用 $L_{reg}(t_i, t_i^{}) = R(t_i - t_i^{})$, 其中 $R$ 是 smooth L1 损失。$p_i^{*}L_{reg}$ 意味着只有正先验框才会计算回归损失。

这两项被 $N_{cls}$ 和 $N_{reg}$ 规范化, 并且由平衡参数 $\lambda$ 加权。在当前实现中, Eqn.(1) 被批量大小规范化($N_{cls} = 256$) $reg$ 项被先验框的数量规范化($N_{reg} \approx 2400$)。默认设置 $\lambda = 10$。因此, $cls$ 和 $reg$ 权重大致相等。实验表明,结果对 $\lambda$ 值不敏感(表9)。

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

\[t_x = (x - x_a) / w_a, t_y = (y - y_a)/h_a \\ t_w = \log(w / w_a), t_h = \log(h / h_a) \\ t_x^* = (x^* - x_a) / w_a, t_y^* = (y^* - y_a) / h_a \\ t_w^* = \log(w^* / w_a), t_h^* = \log(h^*/h_a)\]

其中 $x, y, w, h$ 表示边界框的中心坐标以及他的宽和高。$x, x_a, x^*$ 分别表示预测的边界框, 先验框和真实的边界框。 这可以理解为先验框向离它最近的真实边界框回归。

尽管如此,该方法以不同于之前基于RoI(兴趣区域)的方法实现边界框回归。边界框回归在任意大小的RoI池化特征上执行,回归权重对所有区域大小共享。在公式中,用于回归的特征在特征图上具有相同的空间大小(3×3)。为了考虑不同的大小,学习了 $k$ 个边界框回归器。每个回归器负责一个尺度和一个宽高比,$k$ 个回归器不共享权重。因此,由于先验框的设计,即使特征是固定的尺寸/比例,仍然可以预测各种尺度的边界框。

Training RPNs

RPN可以通过反向传播和随机梯度下降(SGD)端到端训练。我们服从[2]开始采用以图像为中心的采样策略来训练这个网络。每个小批量都来自一个图像, 包含许多正和负样本先验框。可以优化所有先验框的损失函数,但这会偏向于负样本,因为它们占主导地位。进而,作者随机采样图像中的256个先验框,以计算小批量的损失函数,其中采样的正先验框和负先验框的比率为1:1。如果图像中的正样本少于128个,作者会用负样本填充小批量。

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

Sharing Features for RPN and Fast R-CNN

到目前为止,作者已经描述了如何训练区域提议生成网络,而不考虑利用这些提议的基于区域的目标检测CNN。对于检测网络, 作者使用 Fast R-CNN。接下来,作者描述了学习由 RPN 和 Fast R-CNN 具有共享卷积层的统一网络的算法(图2)。

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

(i) Alternating training. 在这个解决方案中,作者首先训练 RPN,并使用这些提议来训练 Fast R-CNN。然后使用 Fast R-CNN 微调的网络初始化RPN,并迭代此过程。这是这篇文章所有实验中使用的解决方案。

(ii) Approximate joint training. 在这个解决方案中,RPN 和 Fast R-CNN网络在训练期间合并为一个网络,如图2所示。 在每次SGD迭代中,前向过程都会生成区域提议,在训练 Fast R-CNN 检测器时,这些提议就像固定的、预先计算的提议一样对待。反向传播照常进行,对于共享层,来自 RPN损失 和 Fast R-CNN 损失的反向传播信号被组合在一起。这个解决方案很容易实现。但是这个解决方案忽略了导数,例如, 提议框的坐标也是网络响应,所以是近似的。作者实验发现,这种求解器产生接近的结果,但与交替训练相比,训练时间减少了约25-50%。

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

4-Step Alternating Training. 这篇文章采用实用的 4步训练算法,通过交替优化学习共享特征。第一步,作者按照第3.1.3节所述对RPN进行训练。该网络使用 ImageNet 预训练模型初始化,并为区域提议任务进行端到端微调。在第二步中,我们使用第1步RPN生成的提议,通过 Fast R-CNN 训练一个单独的检测网络。这种检测网络工作也由 ImageNet 预训练模型初始化。此时,这两个网络不共享卷积层。第三步,作者使用检测器网络初始化RPN训练,但固定了共享卷积层,只对 RPN 特有的层进行微调。现在,这两个网络共享卷积层。最后,保持共享卷积层固定,我们微调了Fast R-CNN的独有的层。因此,两个网络共享相同的卷积层,并形成一个统一的网络。类似的交替训练可以进行更多的迭代,但作者观察到改进可以忽略不计。

Implementation Details

作者在单个尺度的图像上训练和测试区域提议和目标检测网络。 作者重新缩放图像,使其较短的一边为 $s = 600$ 像素。 多尺度特征提取(使用图像金字塔)可能会提高准确性,但不会表现出良好的速度精度权衡。在重新缩放的图像上,最后一个卷积层上 ZF 和 VGG 网络的总步长为 16 像素,因此在调整大小之前,典型的PASCAL图像上为∼10像素(∼500×375)。即使如此大的步长也能提供良好的效果,尽管通过更小的步长可能会进一步提高准确性。

对于先验框,作者使用3个尺度,边界框面积为 $128^2$、$256^2$ 和 $512^2$ 像素,3个宽高比为 $1:1$ 、$1:2$ 和 $2:1$。这些超参数不是针对特定数据集仔细选择的,在下一节中提供了关于其效果的消融实验。正如所讨论过的,作者的解决方案不需要图像金字塔或卷积核金字塔来预测多个尺度的区域,从而节省了大量的运行时间。图3(右)显示了该方法在各种尺度和宽高比方面的能力。表1显示了使用 ZF 网罗的每个先验框的学习平均提议大小。作者注意到,该算法允许大于潜在感受野的预测。这种预测并非不可能——如果物体的中间可见,人们仍然可以大致推断物体的范围。

跨越图像边界的先验框需要小心处理。在训练期间,作者忽略了所有跨边界的先验框,因此它们不会造成损失。对于一个典型的 $1000 \times 600$ 的图像, 存在大约 $20000(\approx 60 \times 40 \times 9)$ 的先验框。由于忽略了跨边界的先验框,每张图像大约有6000个先验框进行训练。如果穿越边界的异常值在训练中没有被忽略,它们会在目标中引入大型、难以纠正的错误项,并且训练不会收敛。然而,在测试期间,我们仍然将全卷积的RPN应用于整个图像。这可能会生成跨边界提案框,作者将其截断到图像边界。

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

Conclusion

这篇文章提出了RPN,以高效和准确地生成区域提议。

通过和下游目标检测网路共享卷积特征, 区域提议的步骤几乎是 cost-free 的。

该方法能够使一个统一的、基于深度学习的目标检测系统以接近实时的帧率运行。

学习后的RPN也提高了区域提议的质量,从而提高了整体目标检测的准确性。