Cascade R-CNN:深入研究高质量的目标检测
摘要
在目标检测中,需要一个intersection over union(IOU)阈值来定义正负图像。用较低IOU阈值(例如0.5)训练的对象检测器通常会产生噪声检测。然而,检测性能往往又会随着IoU阈值的提高而下降。造成这种原因的因素有两个:1)由于正样本呈指数级减少导致训练过拟合,2)在推断时,检测器的最佳IoU与输入假设的IoU不匹配。针对这些问题,我们提出了一种多级目标检测结构Cascade R-CNN。它由一系列经过训练的检测器组成,这些检测器的IoU阈值不断增加,从而对close false positives具有更强的选择性。检测器是逐阶段训练的,利用观察到的,检测器的输出是一个很好的分布这一结果,来训练下一个更高质量的检测器。逐步改进的hypotheses的重采样保证了所有检测器具有相等大小的正样本集,减少了过拟合问题。在推理中使用相同的级联程序,使hypotheses的质量与每个阶段的检测器的质量之间更加匹配。在具有挑战性的COCO数据集上,Cascade R-CNN的简单实现超过了所有单模型对象检测器。实验还表明,Cascade R-CNN可广泛应用于各种检测器架构,实现与基线检测器强度无关的同样的增益。该代码将在https://github.com/zhaoweicai/cascade-rcnn提供
1. 引言
目标检测是一个复杂的问题,需要解决两个主要任务。首先,检测器必须解决识别问题,将前景物体从背景中区分出来,并给它们分配适当的物体类别标签。第二,检测器必须解决定位问题,为不同的对象分配精确的边界框。这两者都特别困难,因为检测器面临许多接近的假阳性,这些是“接近但不正确”的边界框。检测器必须发现真阳性,同时抑制这些接近的假阳性。
许多最近提出的对象检测器基于两阶段R-CNN框架[12,11,27,21],其中检测被构造为结合分类和bounding box回归的多任务学习问题。与对象识别不同,需要intersection over union(IoU)阈值来定义正/负。然而,通常使用的阈值u(通常u = 0.5)为正样本建立了相当宽松的要求。由此产生的检测器经常产生噪声bounding boxes,如图1 (a)所示。大多数人认为接近假阳性的hypotheses经常通过IoU≥ 0.5这个条件的筛查。虽然在u = 0.5标准下数据是丰富多样的,但它们难以训练能够有效拒绝接近假阳性的检测器。
在这项工作中,我们将hypotheses的质量定义为其与groud-truth的IoU,将检测器的质量定义为用于训练它的IoU阈值u。目标是调查到目前为止研究很少的学习高质量对象检测器的问题,其输出包含很少的接近的假阳性,如图1 (b)所示。基本思想是,单个检测器只能对单个质量水平达到最佳。这在cost-sensitive学习文献[7,24]中是已知的,其中对接收器操作特性(ROC)的不同点的优化需要不同的损失函数。主要区别在于,我们考虑的是给定IoU阈值的优化,而不是误报率。
图1 ©和(d)说明了这一想法,分别显示了三个检测器的定位和检测性能,这三个检测器的IoU阈值分别为u = 0.5、0.6和0.7。定位性能作为输入proposals的IoU的函数进行评估,检测性能作为IoU阈值的函数进行评估,如COCO [20]所示。请注意,在图1 ©中,每个bounding box回归器在,接近检测器被训练时的IoU阈值的示例中,表现最好。这也适用于检测性能,直至过拟合。图 1 (d) 显示,对于低 IoU 示例,u = 0.5 的检测器优于 u = 0.6 的检测器,在 IoU 较高的情况下表现不佳。一般来说,在单个 IoU 级别上优化的检测器不一定在其他级别上是最佳的。这些观察表明,更高质量的检测需要检测器与其处理的hypotheses之间质量匹配更紧密。一般来说,检测器只有在提供高质量的proposals时才能具有高质量。
然而,要产生一个高质量的检测器,在训练期间仅仅增加 u 是不够的。事实上,如图 1 (d) 中 u = 0.7 的检测器所示,这会降低检测性能。问题是从proposals检测器出来的hypotheses的分布通常严重不平衡地向低质量方向发展。一般来说,强制使用较大的IoU阈值会导致正训练样本的数量呈指数级减少。这对于神经网络来说尤其成问题,因为众所周知,神经网络是非常典型的密集型训练,这使得“高u”训练策略很容易过度拟合。另一个困难是检测器的质量和推断时测试hypotheses的质量之间的不匹配。如图1所示,高质量的检测器只对高质量的hypotheses是最佳的。当他们被要求处理其他质量水平的hypotheses时,检测可能不是最好的。
在本文中,我们提出了一种新的检测器结构,Cascade R-CNN,解决了这些问题。它是R-CNN的多级扩展,其中更深入级联的检测器依次更有选择性地防止接近的假阳性。级联的R-CNN级被顺序训练,使用一级的输出来训练下一级。这是由于观察到回归变量的输出IoU几乎总是比输入IoU好。这可以在图1©中观察到,他们都被画在灰线以上。这表明用某个 IoU 阈值训练的检测器的输出是训练下一个更高 IoU 阈值的检测器的良好分布。这类似于对象检测文献中常用的组合数据集的增强方法 [31, 8]。主要区别在于 Cascade R-CNN 的重采样过程并不旨在挖掘hard negatives。相反,通过调整边界框,每个阶段的目标是找到一组好的接近假阳性来训练下一个阶段。当以这种方式操作时,适用于越来越高的iou的检测器序列可以克服过拟合问题,从而被有效地训练。在推理时,应用相同的级联过程。逐步改进的hypotheses更好地匹配了每个阶段不断提高的检测器质量。这使得检测精度更高,如图1 ©和(d)所示。
Cascade R-CNN实现起来非常简单,并且是端到端训练的。我们的结果表明,在具有挑战性的COCO检测任务[20]上,特别是在更高质量的评估指标下,一个没有任何花里胡哨的普通实现大大超过了所有先前最先进的单模型检测器。此外,可以使用任何基于 R-CNN 框架的两阶段目标检测器构建 Cascade R-CNN。我们观察到一致的收益(2∼4 个点),计算量略有增加。该增益与基线对象检测器的强度无关。因此,我们相信这种简单而有效的检测架构对于许多对象检测研究工作可能是有意义的。
2. 相关工作
由于 R-CNN [12] 架构的成功,通过结合proposals检测器和区域分类器的检测问题的两阶段公式在最近成为主流。为了减少 R-CNN 中的冗余 CNN 计算,SPP-Net [15] 和 Fast-RCNN [11] 引入了区域特征提取的思想,显着加快了整体检测器的速度。后来,Faster-RCNN [27] 通过引入区域建议网络 (RPN) 实现了进一步的加速。该架构已成为领先的对象检测框架。最近的一些作品将其扩展到解决各种细节问题。例如,R-FCN [4]提出了没有精度损失的有效的 region-wise全卷积,以避免fast-RCNN繁重的region-wise CNN计算;而MS-CNN [1]和FPN [21]在多个输出层检测proposals,以减轻RPN感受野和实际对象大小之间的比例失配,用于高召回proposals检测。一阶段对象检测体系结构也变得流行起来,主要是由于它们的计算效率。这些架构接近经典的滑动窗口策略[31,8]。YOLO [26] 通过将输入图像前向传播一次来输出非常稀疏的检测结果。当用有效的骨干网络实现时,它能够以优异的性能进行实时对象检测。SSD [23]以类似于RPN [27]的方式检测物体,但是使用不同分辨率的多个特征图来覆盖不同比例的物体。这些架构的主要限制是其精度通常低于两阶段目标检测器。最近,RetinaNet [22]被提出来解决密集对象检测中的极端前景-背景类别不平衡,实现了比最先进的两阶段对象检测器更好的结果。
在多阶段目标检测方面也进行了一些探索。多区域检测器[9]引入了迭代bounding box回归,其中R-CNN被应用多次,以产生更好的边界框。CRAFT [33]和AttractioNet [10]使用多阶段程序生成准确的建议,并将其传播给Fast-RCNN。[19,25]在目标检测网络中嵌入了[31]的经典级联架构。[3]交替重复检测和分割任务,用于实例分割。
3. 目标检测
在本文中,我们扩展了 Faster-RCNN [27, 21] 的两阶段架构,如图 3 (a) 所示。第一阶段是proposal子网络(“H0”),应用于整个图像,以产生初步的检测hypotheses,称为对象proposals。在第二阶段,这些hypotheses然后由region-of-interest 检测子网络(“H1”)处理,表示为检测头。最终分类分数(“C”)和边界框(“B”)被分配给每个hypotheses。我们专注于对多级检测子网络进行建模,并采用(但不限于)RPN [27]进行proposal检测。
3.1. Bounding Box Regression
bounding box
b
=
(
b
x
,
b
y
,
b
w
,
b
h
)
b = (bx,by,bw,bh)
b=(bx,by,bw,bh)包含图像块
x
x
x的四个坐标。 bounding box 回归的任务是使用回归器
f
(
x
,
b
)
f (x,b)
f(x,b)将候选 bounding box
b
b
b回归成目标 bounding box
g
g
g。这是从训练样本
g
i
,
b
i
{g_i,b_i}
gi,bi中学习的,以便最小化bounding box风险:
R
l
o
c
[
f
]
=
∑
i
=
1
N
L
l
o
c
(
f
(
x
i
,
b
i
)
,
g
i
)
(
1
)
\mathcal{R}_{l o c}[f]=\sum_{i=1}^{N} L_{l o c}\left(f\left(x_{i}, \mathbf{b}_{i}\right), \mathbf{g}_{i}\right) (1)
Rloc[f]=i=1∑NLloc(f(xi,bi),gi)(1)
其中,
L
l
o
c
L_{loc}
Lloc是R-CNN [12]中的
L
2
L2
L2损失函数,但在Fast-RCNN [11]中更新为smoothed
L
1
L1
L1损失函数。为了使回归不受比例和位置的影响,
L
l
o
c
L_{loc}
Lloc对距离向量
∆
=
(
δ
x
,
δ
y
,
δ
w
,
δ
h
)
∆=(δx,δy,δw,δh)
∆=(δx,δy,δw,δh)进行运算,定义如下:
δ
x
=
(
g
x
−
b
x
)
/
b
w
,
δ
y
=
(
g
y
−
b
y
)
/
b
h
δ
w
=
log
(
g
w
/
b
w
)
,
δ
h
=
log
(
g
h
/
b
h
)
(
2
)
\begin{array}{cc} \delta_{x}=\left(g_{x}-b_{x}\right) / b_{w}, & \delta_{y}=\left(g_{y}-b_{y}\right) / b_{h} \\ \delta_{w}=\log \left(g_{w} / b_{w}\right), & \delta_{h}=\log \left(g_{h} / b_{h}\right) \end{array} (2)
δx=(gx−bx)/bw,δw=log(gw/bw),δy=(gy−by)/bhδh=log(gh/bh)(2)
由于bounding box回归通常对
b
b
b执行较小的调整,因此
(
2
)
(2)
(2)的数值可能非常小。因此,
(
1
)
(1)
(1)的风险通常比分类风险小得多。为了提高多任务学习的有效性,通常用均值和方差来归一化,即
δ
x
δx
δx用
δ
x
′
=
(
δ
x
−
μ
x
)
/
σ
x
\delta_{x}^{\prime}=\left(\delta_{x}-\mu_{x}\right) / \sigma_{x}
δx′=(δx−μx)/σx来代替。这在文献中被广泛使用[27,1,4,21,14]。
一些工作[9,10,16]认为
f
f
f的单个回归步骤不足以精确定位。相反,作为后处理步骤,应该迭代地应用
f
f
f
f
′
(
x
,
b
)
=
f
∘
f
∘
⋯
∘
f
(
x
,
b
)
(
3
)
f^{\prime}(x, \mathbf{b})=f \circ f \circ \cdots \circ f(x, \mathbf{b}) (3)
f′(x,b)=f∘f∘⋯∘f(x,b)(3)
作为细化bounding box
b
b
b的后处理步骤。这被称为 iterative bounding box regression ,表示为iterative BBox。它可以用图3 (b)的推理结构来实现,其中所有的头部都是相同的。然而,这种想法忽略了两个问题。首先,如图1所示,在u = 0.5时训练的回归因子
f
f
f对于更高IoU的hypotheses来说是次优的。它实际上会削弱大于0.85的IoU的bounding boxes。第二,如图2所示,bounding boxes的分布在每次迭代后都会发生显著变化。虽然回归变量对于初始分布是最优的,但在此之后它可能是次优的。由于这些问题,迭代BBox需要相当数量的人工工程,通过proposals累积、box选举等形式。[9,10,16],而且有几分不靠谱的收益。通常情况下,除了应用两次f之外没有任何好处。[9,10,16]中有一些不可靠的收益。通常,除了两次应用
f
f
f之外没有任何好处。
3.2. 分类
分类器是一个函数
h
(
x
)
h(x)
h(x),它将图像块
x
x
x 分配给
M
+
1
M + 1
M+1 个类别之一,其中类0为背景,其余的是要检测的对象。
h
(
x
)
h(x)
h(x) 是对类的后验分布的
M
+
1
M + 1
M+1 维估计,即
h
k
(
x
)
=
p
(
y
=
k
∣
x
)
h_k(x) = p(y = k|x)
hk(x)=p(y=k∣x),其中 y 是类标签。给定一个训练集
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi),通过最小化分类风险来学习:
R
c
l
s
[
h
]
=
∑
i
=
1
N
L
c
l
s
(
h
(
x
i
)
,
y
i
)
(
4
)
\mathcal{R}_{c l s}[h]=\sum_{i=1}^{N} L_{c l s}\left(h\left(x_{i}\right), y_{i}\right) (4)
Rcls[h]=i=1∑NLcls(h(xi),yi)(4)
其中
L
c
l
s
L_{cls}
Lcls 是经典的交叉熵损失。
3.3. 检测质量
由于bounding box通常包括一个对象和一定数量的背景,因此很难确定检测是肯定的还是否定的。这通常通过 IoU 指标来解决。如果IoU高于阈值u,则该补丁被视为该类的示例。因此,假设
x
x
x的类别标签是
u
u
u的函数:
y
=
{
g
y
,
IoU
(
x
,
g
)
≥
u
0
,
otherwise
(
5
)
y=\left\{\begin{array}{cl} g_{y}, & \operatorname{IoU}(x, g) \geq u \\ 0, & \text { otherwise } \end{array}\right. (5)
y={gy,0,IoU(x,g)≥u otherwise (5)
其中
g
y
g_y
gy是ground truth对象
g
g
g的类标签。这个 IoU 阈值 u 定义了检测器的质量。
对象检测是具有挑战性的,因为无论阈值如何,检测设置都是高度对抗性的。当u较高时,正样本包含的背景较少,但很难集合足够多的正训练样本。当u较低时,可以获得更丰富和更多样化的正训练集,但经过训练的检测器几乎没有拒绝接近假阳性的动力。一般来说,很难要求单个分类器在所有IoU级别上表现一致。根据推断,由于由proposals检测器,例如RPN [27]或选择性搜索[30]产生的大多数hypotheses具有低质量,所以检测器必须对较低质量的hypotheses更具鉴别性。这些相互冲突的要求之间的标准折衷方案是确定 u = 0.5。然而,这是一个相对较低的阈值,导致大多数人认为接近假阳性的低质量检测,如图1 (a)所示。
一个简单的解决方案是使用图3( c )的体系结构开发一个分类器集合,针对不同的质量水平进行损失优化
L
c
l
s
(
h
(
x
)
,
y
)
=
∑
u
∈
U
L
c
l
s
(
h
u
(
x
)
,
y
u
)
(
6
)
L_{c l s}(h(x), y)=\sum_{u \in U} L_{c l s}\left(h_{u}(x), y_{u}\right) (6)
Lcls(h(x),y)=u∈U∑Lcls(hu(x),yu)(6)
其中 U 是一组 IoU 阈值。这与 [34] 的积分损失密切相关,其中 U = {0.5,0.55,···,0.75},旨在适应 COCO 挑战的评估指标。根据定义,分类器需要在推理时进行组合。这种解决方案未能解决(6)中不同的损失对不同数量的正样本起作用的问题。如图 4 的第一个图所示,正样本集随着 u 迅速减少。这尤其成问题,因为高质量的分类器容易过拟合。此外,这些高质量的分类器需要处理推断时质量非常低的proposals,而它们并没有为此进行优化。由于所有这些原因,(6)的集合在大多数质量水平上无法实现更高的精度,并且该架构与图3 (a)的架构相比几乎没有增益。
4. Cascade R-CNN
在本节中,我们将介绍图3 (d)中提出的Cascade RCNN对象检测架构。
4.1. Cascaded Bounding Box Regression
如图1(C)所示,很难要求单个回归变量在所有质量水平上表现完全一致。受Cascaded姿态回归[6]和人脸对齐[2,32]工作的启发,困难的回归任务可以分解为一系列更简单的步骤。在Cascaded R-CNN中,它被构造为级联回归问题,具有图3 (d)的架构。这依赖于一系列专门的回归变量
f
(
x
,
b
)
=
f
T
∘
f
T
−
1
∘
⋯
∘
f
1
(
x
,
b
)
(
7
)
f(x, \mathbf{b})=f_{T} \circ f_{T-1} \circ \cdots \circ f_{1}(x, \mathbf{b}) (7)
f(x,b)=fT∘fT−1∘⋯∘f1(x,b)(7)
其中
T
T
T是总级联级数。请注意,级联中的每个回归量
f
t
ft
ft都是针对到达相应阶段的样本分布
b
t
{bt}
bt而不是
b
1
{b1}
b1的初始分布进行优化的。这种级联逐步改进hypotheses。
它在几个方面不同于图3 (b)的迭代BBox架构。首先,迭代BBox是一种用于改进bounding boxes的后处理过程,而级联回归是一种重采样过程,它改变了要由不同阶段处理的hypotheses的分布。第二,因为它同时用于训练和推理,所以在训练和推理分布之间没有差异。第三,针对不同阶段的重采样分布,优化了多个专用回归器
f
T
,
f
T
−
1
,
,
f
1
{f_T,f_{T-1},,f_1}
fT,fT−1,,f1。这与(3)的单一
f
f
f相反,它只对初始分布是最佳的。这些差异使得定位比迭代BBox更精确,无需进一步的人工工程。
如3.1节所讨论的,(2)中的 ∆ = ( δ x , δ y , δ w , δ h ) ∆=(δ_x,δ_y,δ_w,δ_h) ∆=(δx,δy,δw,δh)需要通过其均值和方差进行归一化,以实现有效的多任务学习。在每个回归阶段之后,这些统计数据将按顺序演变,如图 2 所示。在训练中,相应的统计数据用于在每个阶段对 Δ 进行归一化。
4.2. Cascaded Detection
如图 4 左侧所示,初始hypotheses的分布,例如RPN proposals严重倾向于低质量。这不可避免地导致高质量分类器的无效学。Cascaded R-CNN通过依赖级联回归作为重采样机制来解决这个问题。这是因为在图1 ( c)中,所有曲线都在灰色斜线上方,即针对某个u训练的边界框回归器倾向于产生更高IoU的边界框。因此,从一组示例
(
x
i
,
b
i
)
(x_i,b_i)
(xi,bi)开始,级联回归连续地重新采样更高IoU的示例分布
(
x
I
’
,
b
I
’
)
(x_I’,b_I’)
(xI’,bI’)。以这种方式,即使当检测器质量(IoU阈值)增加时,也可以将连续阶段的正样本集保持在大致恒定的大小。这在图 4 中进行了说明,其中在每个重采样步骤之后,分布更倾向于高质量的示例。两个结果随之而来,首先,没有过度拟合,因为各个级别的示例都很丰富。其次,更深阶段的检测器针对更高的 IoU 阈值进行了优化。请注意,如图2所示,通过提高IoU阈值,可以依次消除一些异常值,从而更好地训练专用检测器序列。在每个阶段
t
t
t,R-CNN包括一个分类器
h
t
h_t
ht和一个针对IoU阈值
u
t
u^t
ut优化的回归器
f
t
f_t
ft,其中
u
t
>
u
t
−
1
u^t > u^{t-1}
ut>ut−1。这是通过最小化损失来保证的:
L
(
x
t
,
g
)
=
L
c
l
s
(
h
t
(
x
t
)
,
y
t
)
+
λ
[
y
t
≥
1
]
L
l
o
c
(
f
t
(
x
t
,
b
t
)
,
g
)
(
8
)
L\left(x^{t}, g\right)=L_{c l s}\left(h_{t}\left(x^{t}\right), y^{t}\right)+\lambda\left[y^{t} \geq 1\right] L_{l o c}\left(f_{t}\left(x^{t}, \mathbf{b}^{t}\right), \mathbf{g}\right) (8)
L(xt,g)=Lcls(ht(xt),yt)+λ[yt≥1]Lloc(ft(xt,bt),g)(8)
其中
b
t
=
f
t
−
1
(
x
t
−
1
,
b
t
−
1
)
b^t = f_{t-1}(x^{t-1},b^{t-1})
bt=ft−1(xt−1,bt−1),
g
g
g是
x
t
x^t
xt的ground truth,λ = 1是权衡系数,[·]是指示函数,
y
t
y^t
yt是由(5)给出的
u
t
u^t
ut中
x
t
x^t
xt的标签。与(6)的积分损失不同,这保证了一系列经过有效训练且质量不断提高的检测器。在推理过程中,假设的质量通过应用相同的级联程序依次提高,并且仅需要更高质量的检测器对更高质量的hypotheses进行操作。这可以实现高质量的对象检测,如图 1 ( c) 和 (d) 所示。
5. Experimental Results
Cascade R-CNN 在 MS-COCO 2017 [20] 上进行了评估,其中包含约 118k 图像用于训练,5k 用于验证(val)和 20k 用于没有提供注释的测试(test-dev)。COCO 风格的平均精度 (AP) 在 0.5 到 0.95 的 IoU 阈值上平均 AP,间隔为 0.05。这些评估指标衡量各种质量的检测性能。所有模型都在 COCO 训练集上进行训练,并在 val 集上进行评估。最终结果也报告在测试开发集上。这些评估指标衡量各种质量的检测性能。所有模型都在 COCO 训练集上进行训练,并在 val 集上进行评估。最终结果也报告在测试开发集上。
5.1. Implementation Details
为简单起见,所有回归量都与类无关。 Cascade R-CNN 中的所有级联检测阶段都具有相同的架构,即基线检测网络的头部。总的来说,Cascade R-CNN 有四个阶段,一个 RPN 和三个用于检测 U = {0.5, 0.6, 0.7},除非另有说明。第一检测阶段的采样遵循 [11, 27]。在接下来的阶段,重采样是通过简单地使用前一阶段的回归输出来实现的,如第 4.2 节所示。除了标准的水平图像翻转外,没有使用数据增强。推理是在单个图像尺度上进行的,没有进一步的花里胡哨。所有基线检测器都使用 Caffe [18] 在相同的代码库上重新实现,以进行公平比较。
5.1.1 Baseline Networks
为了测试 Cascade R-CNN 的多功能性,我们使用三个流行的基线检测器进行了实验:Faster-RCNN 与主干 VGG-Net [29]、R-FCN [4] 和 FPN [21] 与 ResNet 主干 [16]。这些基线具有广泛的检测性能。除非另有说明,否则使用它们的默认设置。使用端到端训练而不是多步训练。
Faster-RCNN:网络头有两个全连接层。为了减少参数,我们使用 [13] 来修剪不太重要的连接。每个全连接层保留 2048 个单元,并删除了 dropout 层。训练以 0.002 的学习率开始,在 60k 和 90k 迭代时减少 10 倍,并在 100k 迭代时停止,在 2 个同步 GPU 上,每个 GPU 每次迭代保存 4 个图像。每张图像使用 128 个 RoI。
R-FCN:R-FCN 在 ResNet 中添加了卷积、边界框回归和分类层。 Cascade R-CNN 的所有头部都有这种结构。没有使用 Online hard negative mining[28]。训练以 0.003 的学习率开始,在 160k 和 240k 次迭代时降低了 10 倍,在 280k 次迭代时停止,在 4 个同步 GPU 上,每个 GPU 每次迭代保存一个图像。每张图像使用 256 个 RoI。
FPN:由于尚未公开 FPN 的源代码,我们的实现细节可能会有所不同。 RoIAlign [14] 用于更强的基线。这表示为 FPN+,并用于所有消融研究。像往常一样,ResNet-50 用于消融研究,ResNet101 用于最终检测。训练使用 0.005 的学习率进行 120k 次迭代,使用 0.0005 进行接下来的 60k 次迭代,在 8 个同步 GPU 上,每个 GPU 每次迭代保存一个图像。每张图像使用 256 个 RoI。
5.2. Quality Mismatch
图 5 (a) 显示了三个单独训练的检测器的 AP 曲线,其 IoU 阈值依次增加 U = {0.5, 0.6, 0.7}。 u = 0.5 的检测器在低 IoU 水平上优于 u = 0.6 的检测器,但在更高水平上表现不佳。但是,u = 0.7 的检测器的性能不如其他两个。为了理解为什么会发生这种情况,我们在推理时改变了proposals的质量。图 5 (b) 显示了将ground truth bounding boxes添加到proposals集时获得的结果。虽然所有检测器都在改进,但 u = 0.7 的检测器增益最大,几乎在所有 IoU 级别上都实现了最佳性能。这些结果表明了两个结论。首先,u = 0.5 不是精确检测的好选择,只是对低质量proposals更稳健。其次,高精度检测需要与检测器质量相匹配的hypotheses。接下来,原始检测器proposals被更高质量的 Cascade R-CNN proposals所取代(u = 0.6 和 u = 0.7 分别使用第二和第三阶段proposals)。图 5 (a) 还表明,当测试proposals更接近检测器质量时,两个检测器的性能会显著提高。
在所有级联阶段,测试所有 Cascade R-CNN 检测器产生了类似的观察结果。图 6 显示,当使用更精确的proposals时,每个检测器都得到了改进,而更高质量的检测器具有更大的增益。例如,u = 0.7 的检测器对于第一阶段的低质量proposals表现不佳,但对于更深级联阶段可用的更精确hypotheses则要好得多。此外,即使使用相同的proposals,图 6 的联合训练检测器也优于图 5 (a) 的单独训练检测器。这表明检测器在 Cascade R-CNN 框架内得到了更好的训练。
5.3. Comparison with Iterative BBox and Integral Loss
在本节中,我们将 Cascade R-CNN 与迭代 BBox 和积分损失检测器进行比较。迭代 BBox 是通过三次迭代应用 FPN+ 基线来实现的。积分损失检测器具有与 Cascade R-CNN 相同数量的分类头,U = {0.5, 0.6, 0.7}。
定位:级联回归和迭代BBox的定位性能在图7(a)中进行了比较。使用单个回归器会降低高 IoU hypotheses的定位。。当回归器被迭代应用时,这种效果会累积,就像在迭代 BBox 中一样,性能实际上会下降。注意 3 次迭代后迭代 BBox 的性能非常差。相反,级联回归器在后期具有更好的性能,几乎在所有 IoU 级别上都优于迭代 BBox。
积分损失:共享一个回归器的积分损失检测器中所有分类器的检测性能如图7 (b)所示。u = 0.6的分类器在所有IoU级别都是最好的,而u = 0.7的分类器最差。将所有分类器进行集合没有显示出明显的增益。
表 1 显示,迭代 BBox 和积分损失检测器都略微改进了基线检测器。Cascaded R-CNN 在所有评估指标上都具有最佳性能。低 IoU 阈值的增益是轻微的,但对于较高的 IoU 阈值则非常显著。
5.4.消融实验
还进行了消融实验
Stage-wise 比较:表 2 总结了阶段表现。由于多阶段多任务学习的好处,第一阶段已经优于基线检测器。第 2 阶段大大提高了性能,第 3 阶段相当于第 2 阶段。这与积分损失检测器不同,其中较高的 IOU 分类器相对较弱。虽然前(后)阶段在低(高)IoU 指标上表现更好,但所有分类器的集成在一起总体上是最好的。
IoU阈值:对所有检查头使用相同的IoU阈值u = 0.5来初步训练Cascaded R-CNN。在这种情况下,各个阶段的区别仅在于它们接受的hypotheses不同。用相应的hypotheses训练每个阶段,即考虑图2的分布。表3的第一行显示了级联对基线检测器的改进。这表明优化相应样本分布阶段的重要性。第二行显示,通过增加阶段阈值u,可以使检测器对接近的假阳性具有更高的选择性,并且专门用于更精确的hypotheses,从而导致额外的增益。这支持了第4.2节的结论
回归统计:利用图2中逐步更新的回归统计,有助于分类和回归的有效多任务学习。通过比较表3中有/没有它的模型,可以看出它的好处。学习对这些统计数据不敏感。
阶段数:阶段数的影响总结在表 4 中。添加第二个检测阶段显著提高了基线检测器。三个检测阶段仍然产生了不小的改进,但增加了第 4 阶段(u = 0.75)导致性能略有下降。但是请注意,虽然整体 AP 性能下降,但四级级联在高 IoU 水平下具有最佳性能。三级级联实现了最佳折衷。
5.5. Comparison with the state-of-the-art
表5将基于FPN+和ResNet-101主干的Cascade R-CNN与最先进的单一模型物体检测器进行了比较。设置如第5.1.1节所述,但总共运行了280k次训练迭代,学习率在160k和240k次迭代时下降。感兴趣区的数量也增加到了512个。表5中的第一组检测器是单级检测器,第二组是两级检测器,最后一组是多级检测器(级联R-CNN的3级+RPN)。所有比较的最先进的检测器都经过u = 0.5的训练。值得注意的是,我们的FPN+实施优于最初的FPN [21],提供了一个非常强大的基线。此外,从FPN+到Cascade R-CNN的扩展将性能提高了4个点。在所有评估指标下,Cascade R-CNN也大幅度优于所有单一模型检测器。这包括2015年和2016年COCO challenge获胜者的单模型参赛作品(更快的R-CNN++[16],和G-RMI [17]),以及最近的可变形R-FCN [5],RetinaNet [22]和Mask R-CNN [14]。COCO上最好的多级检测器AttractioNet [10]使用迭代BBox来生成建议。虽然在AttractioNet中使用了许多增强功能,但普通的 Cascade R-CNN仍然比它高出7.1分。注意,与Mask R-CNN不同,在Cascade R-CNN中没有利用分割信息。最后,普通单一模型Cascade R-CNN还超过了在2015年和2016年赢得COCO挑战赛(分别为AP 37.4和41.6)的精心设计的集成检测器。
5.6. Generalization Capacity
表 6 中比较了所有三个基线检测器的三阶段Cascade R-CNN。所有设置如上,FPN+ 有 5.5 节的变化。
检测性能:同样,我们的实现优于原始检测器 [27、4、21]。尽管如此,Cascade R-CNN 在这些基线上持续改进了 2∼4 个点,与它们的强度无关。这些收益在 val 和 test-dev 上也是一致的。这些结果表明 Cascade R-CNN 广泛适用于检测器架构。
Parameter and Timing:Cascade RCNN 参数的数量随着级联级数的增加而增加。基线探测器头的参数数量的增加是线性的。此外,由于与 RPN 相比,检测头的计算成本通常较小,因此 Cascade R-CNN 在训练和测试时的计算开销都很小。
6.结论
在本文中,我们提出了一种多阶段目标检测框架 Cascade R-CNN,用于设计高质量的目标检测器。这种架构被证明可以避免训练时过度拟合和推理时质量不匹配的问题。 Cascade R-CNN 在具有挑战性的COCO 数据集上的可靠和一致的检测表明需要对各种并发因素进行建模和理解来推进目标检测。 Cascade R-CNN 被证明适用于许多目标检测架构。我们相信它对许多未来的目标检测研究工作很有用。