Cascade R-CNN: Delving into High Quality Object Detection 论文笔记

Cascade R-CNN: Delving into High Quality Object Detection

Cascade R-CNN CVPR2018

论文链接: https://arxiv.org/abs/1712.00726

一、 Problem Statement

在目标检测中,通常使用IoU的值来确定正负样本,如果使用低的IoU值,会产生noisy detection,如果使用高的IoU值,会有两个问题:

  1. 在训练的时候会过拟合,因为正样本的数量指数级减少。
  2. 推理的时候与训练的时候不匹配。也就是,RPN网络输出的proposals可以根据IoU阈值分为正负样本,然后进行正负样本的采用,使得比例满足1:3。而在推理的时候,没有进行采样环节(推理的时候没有ground-truth,无法计算IoU),所以所有的proposals都会进行分类和回归。

所以,训练阶段和推理阶段,bbox回归器的输入分布是不一样的,训练阶段的输入proposals质量更高(被采样过,IoU>threshold),推理阶段的输入proposals质量相对较差(没有被采样过,可能包括很多 I o U < t h r e s h o l d IoUIoU<threshold的)。

二、 Direction

对于R-CNN网络框架的检测器,提出一个串级的检测头,提供不同的阈值。即每一个检测头对应一个IoU阈值,然后输出对应的Bounding boxes之后,输入到下一个检测头。

三、 Method

先来看一下具体的网络结构:

上图的第一种就是正常的Faster R-CNN结构。通过RPN输出的B0输入到后面的Pooling层后,经过一个特定的IoU之后,区分正负样本进行训练。 对于第二个,使用同样的检测头,串级相连。第三个是对不同的IoU进行分类检测,bounding box预测只有一个头在进行。而最后一个,本文所提出的Cascade R-CNN:

f ( x , b ) = f T ∘ f T − 1 ∘ . . . ∘ f 1 ( x , b ) f(x, b) = f_T \circ f_{T-1} \circ ... \circ f_1(x,b) f(x,b)=fTfT1...f1(x,b)

其中 T T T是cascade stage的个数。每一个回归器 f t f_t ft 是对应于样本分布 { b t } \{b^t\} {bt},而不是最初的 { b 1 } \{b^1\} {b1}每一个检测头,都有不同的IoU阈值,输出的Proposals质量越高。

相比较于iterative BBox结构, 有以下区别:

  1. iterative BBox 是后处理过程,而cascaded regression是重采样过程。
  2. cascaded regression 过程在训练中和推理中都保留,因此没有样本分布差异。
  3. multiple regressors { f T , f T − 1 , . . . , f 1 } \{f_T, f_{T-1}, ..., f_1 \} {fT,fT1,...,f1}都是对不同阶段的重采样分布进行优化。

即使在检测器质量(IoU阈值)增加的情况下,也可以将positive samples集合保持在大致恒定的大小。在每个重采样步骤后,分布更倾向于高质量示例。随之而来的是两个结果。首先,没有过度拟合,因为在各个层面都有大量的例子。其次,针对更高的IoU阈值,对较深阶段的检测器进行了优化。

对于每个阶段 t t t, R-CNN 包括了一个classifier h t h_t ht和regressor f t f_t ft,用IoU 阈值 u t u^t ut进行优化,其中 u t > u t − 1 u^t \gt u^{t-1} ut>ut1。整体的loss function为:

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 ) L(x^t, g) = L_{cls}(h_t(x^t), y^t) +\lambda[y^t \geq 1]L_{loc}(f_t(x^t, b^t), g) L(xt,g)=Lcls(ht(xt),yt)+λ[yt1]Lloc(ft(xt,bt),g)

其中,
b t = f t − 1 ( x t − 1 , b t − 1 ) b^t = f_{t-1} (x^{t-1}, b^{t-1}) bt=ft1(xt1,bt1)
g是对于 x t , λ = 1 x^t, \lambda=1 xt,λ=1的ground-truth。 [ ⋅ ] [\cdot] []表示indicator function。 y t y^t yt是给定一个IoU阈值 u t u^t ut x t x^t xt的label。

这保证了一系列经过有效训练的检测器的质量不断提高。在推理时,通过应用相同的级联程序,假设的质量依次得到改善,并且只需要更高质量的检测器对更高质量的假设进行操作。

性能表现:

四、 Conclusion

这一部分总结来自于参考[1]

RPN提出的proposals大部分质量不高,导致没办法直接使用高阈值的detector,Cascade R-CNN使用cascade回归作为一种重采样的机制,逐stage提高proposal的IoU值,从而使得前一个stage重新采样过的proposals能够适应下一个有更高阈值的stage。

  • 每一个stage的detector都不会过拟合,都有足够满足阈值条件的样本。
  • 更深层的detector也就可以优化更大阈值的proposals。
  • 每个stage的H不相同,意味着可以适应多级的分布。
  • 在inference时,虽然最开始RPN提出的proposals质量依然不高,但在每经过一个stage后质量都会提高,从而和有更高IoU阈值的detector之间不会有很严重的mismatch。

Reference

  1. https://zhuanlan.zhihu.com/p/42553957

你可能感兴趣的:(2D目标检测论文笔记,目标检测,计算机视觉,深度学习)