目标检测 | 经典算法笔记—Cascade R-CNN再回首

AI研习图书馆,发现不一样的精彩世界

论文
笔记
  • 论文:https://arxiv.org/abs/1712.00726
  • 代码:https://github.com/zhaoweicai/cascade-rcnn
一、引言
Cascade R-CNN,目标检测领域的一篇经典文章。
曾带给我对目标检测研究的无尽遐想,斗转星移,物是人非,今天又再来记录旧时光~
文章主要关注IOU的最优选择,很小的改进却带来了不错的性能提升,值得我们学习。作者从检测器的过拟合问题出发,提出了基于多阶段的Cascade R-CNN,网络结构清晰,效果显著,并且能够简单地移植到其它检测器中,带来2-4%的性能提升。
高质量的多阶段目标检测架构Cascade R-CNN,解决了训练时的过拟合问题以及推理时的IoU不匹配问题,适用于各种检测器基线,并带来可观的性能提升。
二、Abstract
在目标检测中,需要确定IOU的阈值来区分正样本和负样本。低的阈值训练网络,容易产生检测噪声,但随着IOU阈值的增加,检测性能便会降低。其中两个最主要的因素为:
  • 在训练期间过拟合,导致正样本指数消失
  • 检测算法最佳的IOU和假设的IOU间不匹配

为了解决以上问题,在多阶段检测架构中提出了级联R-CNN算法,由一系列随着IOU阈值增加而训练的检测器组成,循序渐进的对接近的负例更具选择性。检测器被阶段性的训练,如果检测器的输出是一个好的分布,则用于训练下一个阶段更好的检测器。

对逐渐改进的假设进行重采样,保证所有的检测器由一组同等大小的正样本组成,缓解过拟合问题。在假设阶段应用同样的级联程序,使得每一个阶段的假设和检测器的质量有更匹配的性能,级联R-CNN算法的简单实现,在COCO数据集上检测性能超过了所有单阶段目标检测算法。

三、Introduction
目标检测是一个复杂的问题,检测器需要同时解决两个任务:
  • 识别问题:区分前景物体与背景,并为其分配类别标签
  • 定位问题:预测目标位置,找到正例,抑制负例
许多目标检测器都基于two-stage框架,其中检测被定义为一个多任务学习问题,将分类和预测框回归相结合。与物体识别不同,需要跨越IoU阈值的交集来定义正例和负例。然而,通常使用的阈值对正例提出了相当宽松的要求。
在这项工作中,作者将假设的质量定义为具有基本事实的IoU,并将检测器的质量定义为用于训练的IoU阈值。基本思想是单个检测器只能针对单个质量水平进行优化,主要区别在于作者考虑了给定IoU阈值的优化,而不是负例比例。

在本文中,作者提出了一种检测器架构Cascade R-CNN来解决这些问题,其是R-CNN的多阶段延伸,级联更深的检测器对接近的负例有更强的选择性。R-CNN的级联是按顺序训练的,一个阶段的输出来训练下一阶段,这是由观察到回归器的输出IoU几乎总是优于输入IoU的动机。用某个IoU阈值训练的检测器的输出是良好的分布以训练下一个较高IoU阈值的检测器。

Cascade R-CNN的实施和端对端训练非常简单。作者的研究结果表明,在没有任何花销的情况下,在很大程度上超过了所有先前的state-of-the-art 的单阶段检测器。

四、Object Detection

Faster R-CNN

经典的two-stage架构,第一阶段是一个提议的子网络,用于生成初步的bounding box,第二阶段为特定区域处理的检测子网络,给定bndbox最终的分类和bndbox坐标。

Iterative BBox at inference

部分研究者认为单次的box regress不足以产生准确的位置信息,因此需要进行多次迭代来精调bndbox,即iterative bounding box regression:

Integral Loss

由于bounding box经常包含目标和背景,因此很难判定当前bndbox是否正样本。
常用的方法是判断其与GT的IoU,当IoU大于阈值时,则赋予其对应GT的标签。但是阈值的设定是困难的,当阈值过高时,正样本包含很少的背景,但会导致难以生成足够多的正样本进行训练,反之,则会导致检测器易产生接近负例。因此,很难找到一个单独的分类器一致地对所有IoU的bndbox是最优的。
一种方法是使用分类器集合,优化针对各种质量的bndbox的loss,设定IoU阈值合集,按照定义,分类器在推理时再进行组合。
这种解决方法存在两个问题:
  • 不同的classifer的正样本数量是不一样的
  • 推理时,高质量的分类器需要处理相对低质量的bndbox

因此,Integral loss在很多IoU水平难以表现出高的准确率。相对于原始的two-stage架构,Integral loss的架构收益相对较小。

五、Cascade R-CNN
Cascaded Bounding Box Regression
由于很难训练一个能符合所有IoU水平的回归器,因此把回归任务分解成一个级联的回归问题:
T是级联阶段数,每个回归器对于当前的级联输入都是最优的,随着阶段的深入,bndbox在不断的提升。
cascade regression与iterative BBox的区别:
  • 级联回归为可以改变bndbox分布的重采样过程
  • 级联回归在训练和推理时是一致的
  • 级联回归的多个回归器对于相应阶段的输入分布是最优的
Cascaded Detection
Cascade R-CNN的出发点:
  • 初始的bndbox分布大多落在低质量的区域
  • regressor都倾向于能够提升bndbox的IoU
通过级联回归产生高IoU的集合,在提升样本整体IoU水平的同时,使得样本的总数维持在一个水平,两个好处:
  • 不会存在某个阈值的regressor过拟合
  • 高阶段的检测器对于高IoU阈值是最优的

随着阶段的深入,一些离群点会被过滤,这保证了特定阈值检测器的训练。

六、Experiment

  部分实验设置:

  • 所有回归都带分类,级联架构相同
  • 4个stage,一个为RPN,其余为U={0.5, 0.6, 0.7}的检测器
  • 垂直翻转数据增强及单一图片输入尺寸
可以得出两个结论:
  • u=0.5不是一个好的选择,仅限于低质量锚框
  • 高质量的检测器,高质量的边框输入
图5对比了以Cascade R-CNN的stage输出作为输入时detector的表现,当提升了输入边框的质量后,检测器性能得到了明显的提升
图6对比了各级联检测器在各阶段上的表现,提高输入质量后,各检测器都得到了收益。

Comparison with Iterative BBox and Integral Loss

Table5对比了Cascade R-CNN与主流检测器的性能,可以看出,Cascade R-CNN的性能提升十分明显,各方面都很优秀。
Detection Performance: 在所有基础检测器上,使用Cascade R-CNN均有2~4%的提升,表明其广泛适用于多种检测器架构。
Parameter and Timing: Cascade R-CNN的参数量增加跟阶段数量有关,与基线的检测头呈线性关系。此外,其额外计算开销比较小。

七、Conclusion

在本文中,作者提出了一个多阶段物体检测框架-Cascade R-CNN,用于设计高质量的物体检测器。该架构被证明可以避免训练过拟合和推理质量不匹配的问题。cascade R-CNN在COCO数据集上的检测改进表明,需要对各种并发因子进行建模和理解,以推进物体检测。Cascade R-CNN被证明适用于许多目标检测结构,作者相信它可能对未来的目标检测研究工作有很大的影响。如今看来,事实也确实如此。
最后,祝大家科研顺利,学业有成~~
(0)

相关推荐