faster R-CNN: Towards Real-Time Object Detectionwith Region Proposal Networks
摘要
State-of-the-art目标检测网络依赖于region proposals算法假设目标位置。SPP Net[1]和Fast R-CNN[2]的改进减少了检测网络的运行时间,并暴露出region proposals是一个瓶颈。我们引入了Region Proposal Network(RPN),它与检测网络共享整个图像的卷积特征,可以实现几乎无成本的region proposals。RPN 是一个全卷积网络,可同时预测每个位置的object bounds和objectness scores。经过端到端的训练,RPN可以生成高质量的region proposals,供Fast R-CNN用于检测。我们通过共享卷积特征,进一步将RPN和Fast R-CNN合并成一个网络,对于非常深的VGG-16模型[3],检测系统在GPU上的帧率为5fps(包括所有步骤),同时在PASCAL VOC 2007、2012和MS COCO数据集上达到了state-of-the-art目标检测精度(在每幅图像只有300个proposals得情况下)。在ILSVRC和COCO 2015比赛中,Faster R-CNN和RPN是几个项目第1名获奖作品的基础。代码已经公开。
1. 引言
目标检测的近期进展是由region proposal方法(例如 [4])和region-based convolutional neural networks(RCNN)[5] 的成功推动的。尽管最初在 [5] 中开发的region-based CNNs 计算成本很高,但由于在proposals[1]、[2] 之间共享卷积,成本已大大降低。最新的版本Fast R-CNN [2], 在忽略了proposals所花费的时间前提下,使用深度网络 [3] 可以实现近乎实时的速度。现在,在 state-of-the-art检测系统中,proposals在测试时是计算时间的瓶颈。
Selective Search[4]是最流行的region proposals方法之一。然而,当与高效的检测网络[2]相比时,Selective Search要慢一个数量级,在CPU版本中每幅图像2秒。目前,**EdgeBoxes [6]**实现了proposasl的质量和速度之间的最佳平衡,每幅图像0.2秒。尽管如此,region proposals仍然消耗与检测网络一样多的运行时间。
region-based CNNs利用了GPU,而研究中使用的region proposal方法是在CPU上实现的,因此这种运行时间的比较是不公平的。加速proposal计算的一个方法是使用GPU实现它。这可能是一个有效的解决方案,但是忽略了下游的检测网络,错过了共享计算的重要机会。
在本文中,使用深度卷积神经网络计算proposals。几乎不会为检测网络的计算带来任何成本。我们引入了新的Region Proposal Networks(RPN),它与state-of-the-art对象检测网络共享卷积层[1],[2]。在测试时,通过共享卷积,计算proposals的成本很小(例如,每幅图像10ms)。
基于区域的检测器使用的卷积特征图也可用于生成region proposals。我们通过在这些卷积特征之上添加一些额外的卷积层来构建 RPN,这些卷积层同时回归每个位置的bounds和objectness scores。因此,RPN 是一种全卷积网络 (FCN) [7],可以专门针对生成检测proposals的任务进行端到端训练。
RPN 的目的是有效地预测具有多种scales和aspect ratios的region proposals。与使用图像金字塔(图 1,a)或滤波器金字塔(图 1,b)的流行方法 [8]、[9]、[1]、[2] 相比,我们引入“anchor” boxes 在多个scales和scales下用作参考。我们的方案可以被认为是一个回归“anchor” boxes的金字塔(图 1,c),它避免了枚举具有多个scales或aspect ratios的图像或过滤器。
为了将RPNs与Fast R-CNN [2]统一起来,我们提出了一种训练方案,在保持proposals固定的同时,交替对region proposal任务和object detection任务进行微调。该方案快速收敛,并产生一个提取卷积特征的统一网络,由两个任务共享。
我们在PASCAL VOC[11]上评估了我们的方法,使用RPN的Fast R-CNN比使用Selective Search的Fast R-CNN检测精度更好。同时,我们的方法在测试时几乎消除了Selective Search的所有计算成本,proposals的有效运行时间仅为10ms。使用[3]中高成本的非常深的模型,我们的检测方法在GPU上的帧速率仍为5fps(包括所有步骤),因此在速度和精度方面都是一个实用的目标检测系统。我们还发表了MS COCO数据集[12]的结果,并使用COCO数据集测试了在PASCAL VOC上的改进。代码已在https://github.com/shaoqingren/faster_rcnn(in MATLAB)和 https://github.com/rbgirshick/py-faster-rcnn(in Python)开源。
2. 相关工作
Object Proposals. 有大量关于proposal方法的文献。在[19]、[20]、[21]中可以找到对proposal方法的综合调查和比较。广泛使用的proposal方法包括基于分组超像素的方法(例如,Selective Search[4],CPMC [22],MCG [23])和基于滑动窗口的方法(例如,objectness in windows[24],EdgeBoxes)。proposal方法被用作独立于检测器的外部模块(例如,Selective Search[4] object detector,RCNN [5]和Fast R-CNN [2])。
Deep Networks for Object Detection. R-CNN[5] 对CNNs进行端到端训练以将 proposal regions 分类为object categories或background。**R-CNN主要充当classifier,它不预测object bounds (除了通过bounding box regression进行细化)。**其准确性取决于region proposal模块的性能(参见[20]中的比较)。一些论文已经提出了使用深度网络来预测对bounding boxes的方法[25]、[9]、[26]、[27]。在OverFeat[9]中,训练 fully-connected layer来预测假设只有一个对象的定位任务的box坐标。然后,将fully-connected layer转换成convolutional layer来检测多个 class-specific 对象。MultiBox[26],[27]从一个网络中生成 region proposals,该网络的最后一个fully-connected layer同时预测多个与类别无关的boxes,这就是OverFeat的“single-box”方式。这些与类别无关的boxes被用作R-CNN的proposals[5]。与fully convolutional方案相比,MultiBox proposal network适用于单个图像或多个大图像的裁剪图像(例如,224×224)。MultiBox不共享 proposal 和检测网络之间的特征。我们将在后面用我们的方法更深入地讨论OverFeat和 MultiBox。与我们的工作同时进行的是,DeepMask方法[28]被开发用于学习segmentation proposals。
卷积的共享计算 [9]、[1]、[29]、[7]、[2] 已经吸引了越来越多的关注,以实现高效而准确的视觉识别。 OverFeat 论文 [9] 计算来自图像金字塔的卷积特征,用于分类、定位和检测。共享卷积特征图上的Adaptively-sized pooling (SPP) [1] 是基于区域的对象检测 [1]、[30] 和语义分割 [29] 而开发的。 Fast R-CNN [2] 支持在共享卷积特征上进行端到端的训练,并显示出令人信服的准确性和速度。
3. FASTER R-CNN
我们的目标检测系统称为 Faster R-CNN,由两个模块组成。第一个模块是做proposes regions的深度卷积网络,第二个模块是使用 proposed regions的 Fast R-CNN detector [2]。整个系统是一个单一的、统一的目标检测网络(图 2)。使用最近流行的具有“‘attention”[31]机制的神经网络术语来说就是,RPN 模块告诉 Fast R-CNN 模块在哪里寻找。在第 3.1 节中,我们介绍了region proposal network的设计和属性。在第 3.2 节中,我们开发了训练具有共享特征的两个模块的算法。
3.1 Region Proposal Networks
Region Proposal Network(RPN) 将图像(任意大小)作为输入并输出一组矩形proposals,每个proposal都有一个objectness score。我们使用fully convolutional network [7] 对这个过程进行建模,我们将在本节中进行描述。因为我们的最终目标是与 Fast R-CNN [2] 共享计算,所以我们假设两个网络共享一组共同的卷积层。在我们的实验中,我们研究了具有 5 个可共享卷积层的Zeiler and Fergus 模型 [32] (ZF) 以及具有 13 个可共享卷积层的 Simonyan and Zisserman模型 [3] (VGG-16)。
为了生成 region proposals,我们在最后一个共享卷积层输出的feature map上滑动一个小型网络。这个小型网络将feature map上n × n 大小的空间窗口作为输入。每个滑动窗口都映射到一个低维特征(ZF 为 256-d,VGG 为 512-d,随后是 ReLU [33])。这个特征被输入到两个同级全连接层——a box-regression layer(reg)和 a box-classification layer(cls)。我们在本文中使用 n = 3,值得注意的是输入图像上的有效感受野很大(ZF 和 VGG 分别为 171 和 228 像素)。这个小型网络在图 3(左)中的一个位置进行了说明。请注意,由于小型网络以滑动窗口方式运行,因此fully-connected layers在所有空间位置之间共享。这种架构自然是用一个 n × n 卷积层和两个同级的1 × 1 卷积层(分别用于 reg 和 cls)来实现的。
3.1.1 Anchors
在每个滑动窗口处,我们同时预测多个region proposals,其中每个位置的最大可能proposals的数量表示为 k。因此,reg 层有 4k 个输出编码,k 个框的坐标,而 cls 层输出2k 个分数,用于估计每个proposal的对象或非对象的概率。 k 个 proposal相对于 k 个参考的ground truth boxes进行参数化,我们称之anchors。anchors位于相关滑动窗口的中心,并与scale和aspect ratio相关联(图 3,左)。默认情况下,我们使用 3 个scale和 3 个aspect ratio,在每个滑动位置产生 k = 9 个anchors。对于大小为 W × H(通常~2,400)的feature map,总共有
W
H
k
WHk
WHk个锚点。
Translation-Invariant Anchors
我们的方法的一个重要特性是,无论是anchors的选择还是计算相对于anchors的proposals的函数,它都是平移不变的。如果translates图像中的对象,则proposals也应该translate,并且相同的函数应该能够预测任一位置的proposals。我们的方法保证了这种平移不变性。作为比较,MultiBox 方法 [27] 使用 k-means 生成 800 个anchors,这些anchors不是平移不变的。因此,MultiBox 不保证在translates对象时能生成相同的proposals。
平移不变性还减小了模型大小。 MultiBox 具有 (4 + 1) × 800 维的全连接输出层,而我们的方法在 k = 9 个锚点的情况下具有 (4 + 2) × 9 维的卷积输出层。结果,我们的输出层有 2.8 × 104 个参数(VGG-16 为 512 × (4 + 2) × 9),比具有 6.1 × 106 参数的 MultiBox 输出层(MultiBox [27] 中的 GoogleNet [34] 为 1536 × (4 + 1) × 800)少两个数量级。如果考虑feature projection layers,我们的proposal layers的参数仍然比 MultiBox 少一个数量级。我们希望我们的方法在 PASCAL VOC 等小型数据集上过拟合的风险更小。
Multi-Scale Anchors as Regression References
我们对anchors设计提出了一种解决多scales(和aspect ratios)的新方案。如图 1 所示,有两种流行的多尺度预测方法。第一种方法是基于图像/特征金字塔,例如,在 DPM [8] 和基于 CNN 的方法 [9]、[1]、[2] 中。图像在多个scales上调整大小,并为每个scales计算feature map(HOG [8] 或深度卷积特征 [9??]、[1]、[2])(图 1(a))。这种方法通常很有用,但很耗时。第二种方法是在feature map上使用多scales(和aspect ratios)的滑动窗口。例如,在 DPM [8] 中,不同纵横比的模型使用具有不同大小的滤波器(如 5×7 和 7×5)分别训练。如果这种方式用于处理多个尺度,则可以将其视为“过滤器金字塔”(图1(b))。第二种方式通常与第一种方式联合使用[8]。
作为比较,我们的基于anchor的方法是建立在anchors金字塔上的,更具成本效益。我们的方法参照多scale和aspect ratio的 anchor boxes对bounding boxes进行分类和回归。它仅依赖于单一尺度的图像和feature map,并使用单一尺寸的过滤器(feature map上的滑动窗口)。我们通过实验展示了该方案对解决多个尺度和大小的影响(表 8)。
由于这种基于anchors的多尺度设计,我们可以简单地使用在单尺度图像上计算的卷积特征,就像 Fast R-CNN 检测器 [2] 所做的那样。多scale anchors的设计是Faster R-CNN能够共享feature map而不需要额外的计算来解决scale问题的关键所在。
3.1.2 损失函数
在训练 RPN时我们为每个anchors分配一个二进制的类标签(是否是对象)。我们为两种anchors分配正标签:(i)与某个ground-truth具有最高Intersection-over-Union(IoU)的anchors,或 (ii) anchors与任何ground-truth box的 IoU 都高于 0.7。请注意,单个ground-truth box 可能会为多个anchors分配正标签。通常第二个条件就足以确定正样本;但我们仍然采用第一个条件,因为在极少数情况下,第二个条件可能找不到正样本。如果与所有ground-truth box的 IoU 低于 0.3,我们将为它分配负标签。既不是正也不是负的anchors对训练目标没有贡献。
通过这些定义,我们在 Fast R-CNN [2] 中的多任务损失之后最小化了目标函数。我们对图像的损失函数定义为:
L
(
{
p
i
}
,
{
t
i
}
)
=
1
N
c
l
s
∑
i
L
c
l
s
(
p
i
,
p
i
?
)
+
λ
1
N
r
e
g
∑
i
p
i
?
L
r
e
g
(
t
i
,
t
i
?
)
.
\begin{array}{r} L\left(\left\{p_{i}\right\},\left\{t_{i}\right\}\right)=\frac{1}{N_{c l s}} \sum_{i} L_{c l s}\left(p_{i}, p_{i}^{*}\right) \\ +\lambda \frac{1}{N_{r e g}} \sum_{i} p_{i}^{*} L_{r e g}\left(t_{i}, t_{i}^{*}\right) . \end{array}
L({pi?},{ti?})=Ncls?1?∑i?Lcls?(pi?,pi??)+λNreg?1?∑i?pi??Lreg?(ti?,ti??).?
i
i
i是 mini-batch中anchor的索引,
p
i
{p_{i}}
pi?是anchor
i
i
i 成为对象的预测概率。如果anchor为正,则ground-truth标签
p
i
?
p_{i}^{*}
pi?? 为1,如果anchor为负,则为0。
t
i
t_i
ti? 是一个向量,表示预测的bounding box的 4 个坐标,
t
i
?
t_{i}^{*}
ti??是与正anchor相关联的真ground-truth box的坐标。分类损失
L
c
l
s
L_{cls}
Lcls? 是两个类别(对象与非对象)的对数损失。对于回归损失,我们使用
L
reg?
(
t
i
,
t
i
?
)
=
R
(
t
i
?
t
i
?
)
L_{\text {reg }}\left(t_{i}, t_{i}^{*}\right)=R\left(t_{i}-t_{i}^{*}\right)
Lreg??(ti?,ti??)=R(ti??ti??),其中
R
R
R是 [2] 中定义的鲁棒损失函数(smooth L1)。
p
i
?
L
r
e
g
p_{i}^{*} L_{r e g}
pi??Lreg?意味着回归损失仅被正锚
(
p
i
?
=
1
)
\left(p_{i}^{*}=1\right)
(pi??=1)激活,否则
(
p
i
?
=
0
)
\left(p_{i}^{*}=0\right)
(pi??=0)无效。cls 和 reg 层的输出分别由
p
i
{p_i}
pi? 和
t
i
{t_i}
ti? 组成。
这两项由
N
c
l
s
N_{cls}
Ncls? 和
N
r
e
g
N_{reg}
Nreg? 归一化,并由平衡参数 λ 加权,在我们当前的实现中(如在发布的代码中),
E
q
n
.
(
1
)
Eqn.(1)
Eqn.(1) 中的
c
l
s
cls
cls 项由 mini-batch 的大小(即
N
c
l
s
N_{cls}
Ncls? = 256)归一化,而
r
e
g
reg
reg 项由锚点位置的数量(即
N
r
e
g
~
2
,
400
N_{reg}~2, 400
Nreg?~2,400)归一化。默认情况下,我们设置 λ = 10,因此
c
l
s
cls
cls 和
r
e
g
reg
reg 项的权重大致相同。我们通过实验表明,结果对很大范围内的 λ 值不敏感(表9)。我们还注意到,上述标准化不是必需的,可以简化。
对于边界框回归,我们采用[5]中的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
)
\begin{aligned} t_{\mathrm{x}} &=\left(x-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}=\left(y-y_{\mathrm{a}}\right) / h_{\mathrm{a}} \\ t_{\mathrm{w}} &=\log \left(w / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}=\log \left(h / h_{\mathrm{a}}\right) \\ t_{\mathrm{x}}^{*} &=\left(x^{*}-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}^{*}=\left(y^{*}-y_{\mathrm{a}}\right) / h_{\mathrm{a}} \\ t_{\mathrm{w}}^{*} &=\log \left(w^{*} / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}^{*}=\log \left(h^{*} / h_{\mathrm{a}}\right) \end{aligned}
tx?tw?tx??tw???=(x?xa?)/wa?,ty?=(y?ya?)/ha?=log(w/wa?),th?=log(h/ha?)=(x??xa?)/wa?,ty??=(y??ya?)/ha?=log(w?/wa?),th??=log(h?/ha?)? 其中
x
、
y
、
w
x、y、w
x、y、w和
h
h
h表示盒子的中心坐标及其宽度和高度。变量
x
x
x、
x
a
x_a
xa?和
x
?
x^*
x?分别用于预测框、锚点框和背景框(同样用于
y
、
w
、
h
y、w、h
y、w、h)。这可以被认为是从一个anchor box 到一个附近的ground-truth box的边框回归。
然而,我们的实现边框回归的方法不同于先前RoI-based (Region of Interest) 的方法[1],[2]。在[1]、[2]中,边框回归是通过从任意大小的区域中池化特征实现的,所有不同大小的区域共享回归权重。在我们的公式中,用于回归的特征在特征图上具有相同的空间大小(3 × 3)。为了考虑变化的scale,学习一组k个bounding-box 回归量。每个回归量负责一个scale and 一个aspect ratio,k个回归量不共享权重。因此,由于anchors的设计,即使特征具有固定的尺寸/比例,仍然有可能预测各种尺寸的盒子。
3.1.3 训练RPNs
RPN可以通过反向传播和随机梯度下降(SGD)进行端到端的训练[35]。我们遵循[2]中的“以图像为中心”的采样策略来训练这个网络。每个mini-batch从包含许多正面和负面示例anchors的单个图像中产生。可以通过所有anchors来优化损失函数,但是这将偏向负样本,因为它们占主导地位。相反,我们在图像中随机采样256个anchors来计算mini-batch的损失函数,其中采样的正anchors和负anchors的比率高达1:1。如果图像中的正样本少于 128 个,我们用负样本填充mini-batch。
我们使用标准差为 0.01 的零均值高斯分布来随机初始化所有新层。所有其他层(即共享卷积层)通过预训练 ImageNet的分类模型 [36] 进行初始化,这是标准做法 [5]。我们微调ZF 网络的所有层,在VGG 网络中我们微调 conv3_1 及以上的层来节省内存 [2]。对于 PASCAL VOC 数据集上的 60k mini-batches,我们使用 0.001 的学习率,在接下来的 20k mini-batches中使用 0.0001的学习率。我们使用 0.9 的动量和 0.0005 的权重衰减 [37]。我们的实现使用 Caffe [38]。
3.2 Sharing Features for RPN and Fast R-CNN
到目前为止,我们已经描述了如何训练用于生成region proposal的网络,而没有考虑将利用这些proposals的基于区域的对象检测CNN。对于检测网络,我们采用fast R-CNN [2]。接下来,我们描述学习统一网络的算法,该网络由RPN和fast R-CNN组成,具有共享的卷积层(图2)。
独立训练RPN 和 Fast R-CNN时都会以不同的方式修改它们的卷积层。因此,我们需要开发一种技术,允许在两个网络之间共享卷积层,而不是学习两个单独的网络。我们讨论了训练具有共享特征的网络的三种方法:
(i) 交替训练。在这个解决方案中,我们首先训练 RPN,然后使用proposals训练 Fast R-CNN。然后用 Fast R-CNN 调优的网络来初始化 RPN,对这个过程进行迭代。这是本文所有实验中使用的解决方案。
(ii) 近似联合训练。在该解决方案中,RPN 和 Fast R-CNN 网络在训练期间合并为一个网络,如图 2 所示。在每次 SGD 迭代中,正向传播生成region proposals,在训练 Fast R-CNN 时,这些proposals被视为固定的、预先计算的。反向传播像往常一样,对于共享层,来自 RPN 的损失和 Fast R-CNN的 损失的被组合在一起。该解决方案易于实施。但是这个解决方案忽略了关于proposals坐标的导数,这些坐标也是网络响应,所以结果是近似的。在我们的实验中,我们凭经验发现该求解器产生了接近(i)的结果,但与交替训练相比,训练时间减少了约 25-50%。这个求解器包含在我们发布的 Python 代码中。
(iii) 非近似联合训练。如上所述,RPN 预测的边界框也是输入的函数。 Fast R-CNN 中的 RoI 池化层 [2] 接受卷积特征和预测的边界框作为输入,因此理论上有效的反向传播求解器也应该涉及关于box坐标的梯度。在上述近似联合训练中,这些梯度被忽略了。在非近似联合训练解决方案中,我们需要一个相对于box坐标可微分的RoI池化层。这是一个不小的问题,可以通过 [15] 中开发的“RoI warping”层给出解决方案,这超出了本文的范围。
4-Step Alternating Training 在本文中,我们采用实用的4步交替训练法,通过交替优化来学习共享特征。在第一步中,我们按照第3.1.3节所述训练RPN。这个网络使用ImageNet预训练的模型进行初始化,并针对region proposals任务进行了端到端的微调。在第二步中,我们通过使用第一步RPN生成的proposals来训练fast R-CNN网络。该检测网络也由ImageNet预训练模型初始化。此时,两个网络不共享卷积层。在第三步中,我们使用检测器网络来初始化RPN,但是在训练时我们固定共享卷积层,仅微调RPN特有的层。现在这两个网络共享卷积层。最后,保持共享卷积层固定,我们微调fast R-CNN特有的层。因此,两个网络共享相同的卷积层,形成统一的网络。类似的交替训练可以进行更多次迭代,但是我们观察到改进可以忽略不计。
3.3 Implementation Details
我们在单一尺度的图像上训练和测试region proposal和对象检测网络[1],[2]。我们重新缩放图像,使其短边为s = 600像素[2]。多尺度特征提取(使用图像金字塔)可能会提高精度,但速度-精度没有实现良好的权衡[2]。在重新缩放的图像上,在最后一个卷积层上 ZF 和 VGG 网络的总步幅为 16 个像素,因此在调整大小之前(~500×375)在典型的 PASCAL 图像上是~10 个像素。即使如此大的步幅也能提供良好的结果,但更小的步幅可能会进一步提高准确性。
对于anchors,我们使用 3 个scale,box面积分别为 1282、2562 和 5122 像素,以及 1:1、1:2 和 2:1 3 个aspect ratio。这些超参数不是为特定数据集精心选择的,我们将在下一节中提供关于其效果的消融实验。正如所讨论的,我们的解决方案不需要图像金字塔或滤波器金字塔来预测多个尺度的区域,从而节省了大量的运行时间。图 3(右)显示了我们的方法在各种scale和aspect ratio下的能力。表 1 显示了使用 ZF 网络学习到的每个anchors的平均大小。我们注意到,我们的算法允许预测大于基础感受野。这样的预测并非不可能——如果只有物体的中间可见,人们仍然可以粗略地推断出物体的范围。
需要小心处理跨越图像边界的anchor box。在训练期间,我们忽略了所有跨边界anchors,因此它们不会导致损失。对于典型的 1000 × 600 图像,总共大约有 20000 个(≈ 60 × 40 × 9)个anchors。在忽略跨边界anchors的情况下,每张图像大约有 6000 个anchors用于训练。如果在训练中不忽略越边界的异常值,它们会在目标中引入大的、难以纠正的错误项,并且训练不会收敛。然而,在测试期间,我们仍然将完全卷积的 RPN 应用于整个图像。这可能会生成跨界建议框,我们将其裁剪到图像边界。
一些 RPN proposals彼此高度重叠。为了减少冗余,我们根据proposal region的 cls 分数对proposal region采用非最大抑制 (NMS)。我们将 NMS 的 IoU 阈值固定为 0.7,这样每张图像就有大约 2000 个proposal region。正如我们将展示的,NMS 不会损害最终的检测精度,但会大大减少proposal的数量。在 NMS 之后,我们使用排名前 N 的proposal region进行检测。在下文中,我们使用 2000 个 RPN 提议训练 Fast R-CNN,但在测试时评估不同数量的提议。
4 EXPERIMENTS
4.1 Experiments on PASCAL VOC
我们在 PASCAL VOC 2007 baseline [11] 上全面评估了我们的方法。该数据集由大约 5k 个训练图像和超过 20 个类别的 5k 个测试图像组成。我们还提供了一些模型的 PASCAL VOC 2012测试结果。对于 ImageNet 预训练网络,我们使用具有 5 个卷积层和 3 个全连接层的 ZF 网络 [32] 的“fast”版本,以及具有 13 个卷积层和 3 个全连接层的公共 VGG-16 模型[3]。我们主要评估mean Average Precision(mAP),因为这是对象检测的实际指标(而不是关注proposals代理指标)。
表 2(上)显示了使用各种region proposals方法训练和测试时的 Fast R-CNN 结果。这些结果使用 ZF 网络。对于Selective Search (SS) [4],我们通过“fast”模式生成了大约 2000 个建议。对于 EdgeBoxes (EB) [6],我们通过调整默认 EB 设置为 0.7 IoU 生成proposals。在 Fast R-CNN 框架下,SS 的 mAP 为 58.7%,EB 的 mAP 为 58.6%。采用RPN的Fast R-CNN取得了具有竞争力的结果,在使用300个proposals的情况下,mAP为59.9%。由于共享卷积计算,使用 RPN 的检测系统比使用 ??SS 或 EB的检测系统更快;更少的proposals也降低了region-wise全连接层的成本(表 5)。
Ablation Experiments on RPN. 为了研究 RPNs 作为proposal方法的行为,我们进行了几项消融研究。首先,我们展示了在 RPN 和 Fast R-CNN 检测网络之间共享卷积层的效果。为此,我们在 4 步训练过程的第二步之后停止。使用单独的网络时结果略微降低到 58.7%(RPN+ZF,未共享,表 2)。我们观察到这是因为在第三步中,当使用检测器调整的特征对 RPN 进行微调时,proposals质量得到了提高。
接下来,我们验证 RPN 对训练 Fast R-CNN 检测网络的影响。为此,我们使用 2000 个 SS proposals和 ZF 网络训练了一个 Fast R-CNN 模型。我们固定这个检测器,并通过更改测试时使用的proposal region来评估检测 mAP。在这些消融实验中,RPN 不与检测器共享特征。
在测试时用 300 个 RPN proposals替换 SS 会导致 mAP下降到56.8% 。 mAP 的损失是由于训练/测试建议之间的不一致。该结果可作为以下比较的基线。
有点令人惊讶的是,在测试时使用排名靠前的 100 个提案时,RPN 仍然取得了有竞争力的结果(55.1%),这表明排名靠前的 RPN proposals是准确的。在另一个极端,使用排名靠前的 6000 个 RPN proposals(没有 NMS)具有相当的 mAP(55.2%),这表明 NMS 不会损害检测 mAP,并且可以减少误检。
接下来,我们通过在测试时关闭其中任何一个来分别研究 RPN 的 cls 和 reg 输出的作用。当在测试时删除 cls 层(因此不使用 NMS/ranking)时,我们从未评分的区域中随机抽取 N 个proposals。当 N = 1000 (55.8%) 时,mAP 几乎没有变化,但当 N = 100 时,mAP 会大幅下降到 44.6%。这表明 cls 分数说明了排名最高的proposals的准确性。
另一方面,当在测试时移除 reg 层(因此proposals成为 anchor boxes)时,mAP 下降到 52.1%。这表明高质量的proposals主要是由于回归的框边界。anchor boxes虽然有多个scale和aspect ratio,但不足以进行准确检测。
我们还评估了更强大的网络对 RPN proposals质量的影响。我们使用VGG-16来训练RPN,仍然使用上面的SS+ZF检测器。 mAP 从 56.8%(使用 RPN+ZF)提高到 59.2%(使用 RPN+VGG)。这是一个有希望的结果,因为它表明 RPN+VGG 的proposals质量优于 RPN+ZF。因为 RPN+ZF 的proposals与 SS 有竞争力(当一致用于训练和测试时两者都是 58.7%),我们可以预计RPN+VGG 比 SS 更好。以下实验证明了这一假设。
VGG-16 的性能。 表 3 显示了 VGG-16 的提议和检测结果。使用 RPN+VGG,不共享特征时的结果为 68.5%,略高于 SS baseline。如上图,这是因为RPN+VGG生成的proposals比SS更准确。与预定义的 SS 不同,RPN 经过积极训练并受益于更好的网络。在共享特征时,结果为 69.9%——优于 strong SS baseline,但proposal几乎没有成本。我们在 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 显示了详细的数字。
在表 5 中,我们总结了整个目标检测系统的运行时间。 SS 需要 1-2 秒,具体取决于内容(平均大约 1.5 秒),而带有 VGG-16 的 Fast R-CNN 在 2000 个 SS 提议上需要 320 毫秒(如果在全连接层上使用 SVD [2],则需要 223 毫秒)。我们的 VGG-16 系统在proposal和检测方面总共花费了 198 毫秒。由于共享了卷积特性,RPN单独计算额外的层只需要10毫秒。由于proposal较少(每张图片300个),我们的 region-wise计算时间也较低。我们的系统在ZF网络上的帧速率为17 fps。
对超参数的敏感性。在表8中,我们调查了anchors的设置。默认情况下,我们使用3个scale和3个aspect ratio(表8中69.9%的映射)。如果在每个位置只使用一个锚,mAP 会下降 3-4%。如果使用 3 个scale(具有 1 个aspect ratio)或 3 个aspect ratio(具有 1 个尺度),mAP 会更高,这表明使用多种scale的anchor作为回归参考是一种有效的解决方案。在该数据集上仅使用 具有3 个aspect ratio的 1 个scale (69.8%) 与使用具有 3 个aspect ratio的 3 个scale 一样好,表明scale 和aspect ratio对于检测精度来说不是分离的维度。但是我们仍然在设计中采用这两个维度来保持系统的灵活性。
在表9中,我们比较了Equation(1)中不同的λ值。默认情况下,我们使用λ=10,这使得Equation(1)中的两项在归一化后的权重大致相等。表9显示,我们的结果仅受到轻微影响(由~ 1%)当λ在大约两个数量级(1到100)的范围内时。这表明该结果在很大范围内对λ不敏感 。
Recall-to-IoU 分析。 接下来,我们使用 ground-truth boxes计算不同IoU下的recall of proposals。值得注意的是,Recall-to-IoU指标与最终检测准确度的关系不大[19]、[20]、[21]。使用此指标诊断proposals方法比评估proposals方法更合适。
在图 4 中,我们展示了使用 300、1000 和 2000 个 proposals的结果。我们与 SS 和 EB 进行比较,根据这些方法生成的置信度,N 个 proposals是排名前 N 的 proposals。图表显示,当proposals的数量从 2000 下降到 300 时,RPN 方法表现良好。这解释了为什么 RPN 在使用少至 300 个proposals时具有良好的最终检测 mAP。正如我们之前分析的那样,这个属性主要归因于 RPN 的 cls 项。当proposals较少时,SS 和 EB 的召回率比 RPN 下降得更快。
一阶段检测与两阶段提案+检测。 OverFeat 论文 [9] 提出了一种检测方法,该方法在feature map上的滑动窗口上进行分类和回归。 OverFeat 是一个单阶段、针对特定类的检测系统,而我们的则是一个两阶段级联,由与类无关的proposal和针对特定类的检测器组成。在 OverFeat 中,region-wise特征来自一个比例的金字塔上的一个纵横比的滑动窗口。这些特征用于同时确定对象的位置和类别。在 RPN 中,特征来自方形 (3×3) 滑动窗口,并预测相对于具有不同scale和aspect ratio的anchors的proposal。尽管这两种方法都使用滑动窗口,但region proposal任务只是 Faster RCNN 的第一阶段——下游的 Fast R-CNN 检测器负责对提议进行细化。在我们级联的第二阶段,region-wise特征从更准确地覆盖区域特征的提议框中自适应地收集 [1]、[2]。我们相信这些特征会使检测更准确。
为了比较一阶段和两阶段系统,我们通过一阶段 Fast R-CNN 模拟 OverFeat 系统(因此也规避了实现细节的其他差异)。在这个系统中,“proposals”是 3 个scale(128、256、512)和 3 个aspect ratio(1:1、1:2、2:1)的密集滑动窗口。 Fast R-CNN 被训练来预测针对特定类别的分数并从这些滑动窗口中回归box位置。由于 OverFeat 系统采用图像金字塔,我们还使用从 5 个scale中提取的卷积特征进行评估。我们在 [1]、[2] 中使用这 5 个scale。
表 10 比较了two-stage system 和two-stage system 的变体。使用 ZF 模型,one-stage system的 mAP 为 53.9%。这比two-stage system (58.7%) 低 4.8%。这个实验证明了级联region proposal和目标检测的有效性。在 [2]、[39] 中报告了类似的观察结果,其中用滑动窗口替换 SS 区域提议会导致两篇论文中约 6% 的退化。我们还注意到,one-stage system速度较慢,因为它要处理的提案要多得多。
4.2 Experiments on MS COCO
我们在 Microsoft COCO 对象检测数据集 [12] 上展示了更多结果。该数据集涉及 80 个对象类别。我们对训练集上的 80k 图像、验证集上的 40k 图像和测试开发集上的 20k 图像进行了实验。我们评估了 IoU∈ [0.5 : 0.05 : 0.95](COCO 的标准度量,简称为 mAP@[.5, .95])和 mAP@0.5(PASCAL VOC 的度量)的平均 mAP。
我们的系统对此数据集进行了一些小的更改。我们在 8-GPU 上训练我们的模型,RPN 的有效 mini-batch 大小变为 8(每个 GPU 1 个)和 Fast R-CNN 的 16(每个 GPU 2 个)。 RPN 步骤和 Fast R-CNN 步骤均以 0.003 的学习率训练 240k 次迭代,然后以 0.0003 进行 80k 次迭代。我们修改了学习率(从 0.003 而不是 0.001 开始),因为mini-batch 的大小发生了变化。对于anchors,我们使用 3 个aspect ratio和 4 个scale(加上
6
4
2
64^2
642),主要是为了处理这个数据集上的小对象。此外,在我们的 Fast R-CNN 步骤中,负样本被定义为在 [0, 0.5) 区间内具有最大 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 数据集上提高了 mAP@0.5(但对 PASCAL VOC 的影响可以忽略不计)。
其余的实现细节与 PASCAL VOC 上相同。特别是,我们继续使用 300 个proposals和单尺度 (s = 600) 测试。在 COCO 数据集上,每张图像的测试时间仍然是 200ms 左右
在表 11 中,我们首先报告了使用本文实现的 Fast R-CNN 系统 [2] 的结果。我们的 Fast R-CNN 基线在测试开发集上具有 39.3% 的 mAP@0.5,高于 [2] 中报告的值。我们推测这种差距的原因主要是由于负样本的定义以及小批量大小的变化。我们还注意到,mAP@[.5, .95] 也是可比较的。
接下来我们评估我们的 Faster R-CNN 系统。使用 COCO 训练集进行训练,Faster R-CNN 在 COCO 测试开发集上有 42.1% mAP@0.5 和 21.5% mAP@[.5, .95]。与相同protocol下,mAP@0.5 和 mAP@[.5, .95] 分别比 Fast RCNN 高 2.8% 和 2.2%(表 11)。这表明在较高的IOU阈值下,RPN对于提高定位精度具有很好的效果。使用 COCO trainval 集进行训练,Faster RCNN 在 COCO 测试开发集上有 42.7% mAP@0.5 和 21.9% mAP@[.5, .95]。图 6 显示了 MS COCO 测试开发集上的一些结果。
Faster R-CNN in ILSVRC & COCO 2015 compe-titions 我们已经证明 Faster R-CNN 从更好的特征中受益更多,这要归功于 RPN 通过神经网络完全学习从而提出区域这一事实。即使将深度大幅增加到 100 层以上 [18],这一观察仍然有效。仅通过将 VGG-16 替换为 101 层残差网络 (ResNet-101) [18],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 From MS COCO to PASCAL VOC
大规模数据对于改进深度神经网络至关重要。接下来,我们研究 MS COCO 数据集如何帮助提高 PASCAL VOC 的检测性能。
作为一个简单的baseline,我们直接在 PASCAL VOC 数据集上评估 COCO 检测模型,而不对任何 PASCAL VOC 数据进行微调。这种评估是可能的,因为 COCO 上的类别是 PASCAL VOC 上的类别的超集。本实验忽略了COCO上独有的类别,只对20个类别加上背景进行softmax层。此设置下的 mAP 在 PASCAL VOC 2007 测试集上为 76.1%(表 12)。这个结果比在 VOC07+12 (73.2%) 上训练的结果要好很多,即使 PASCAL VOC 数据没有被利用。
然后在 VOC 数据集上微调 COCO 检测模型。在本实验中,COCO 模型代替了 ImageNet 预训练模型(用于初始化网络权重),并且如第 3.2 节所述对 Faster R-CNN 系统进行了微调。这样做会在 PASCAL VOC 2007 测试集上产生 78.8% 的 mAP。来自 COCO 集的额外数据将 mAP 提高了 5.6%。表 6 显示,在 COCO+VOC 上训练的模型在 PASCAL VOC 2007 上的每个单独类别都具有最佳 AP。在 PASCAL VOC 2012 测试集上观察到类似的改进(表 12 和表 7)。我们注意到,获得这些强大结果的测试时间速度仍然约为每张图像 200 毫秒。
5 CONCLUSION
我们已经提出了 RPNs 用于高效和准确的生成region proposals。通过与下游检测网络共享卷积特征,region proposals几乎是无成本的。我们的方法使统一的、基于深度学习的目标检测系统能够以接近实时的帧速率运行。学习到的 RPN 还提高了区域建议的质量,从而提高了整体目标检测的准确性。
|