- 论文:https:///abs/1712.00726
- 代码:https://github.com/zhaoweicai/cascade-rcnn
Cascade R-CNN,目标检测领域的一篇经典文章。曾带给我对目标检测研究的无尽遐想,斗转星移,物是人非,今天又再来记录旧时光~文章主要关注IOU的最优选择,很小的改进却带来了不错的性能提升,值得我们学习。作者从检测器的过拟合问题出发,提出了基于多阶段的Cascade R-CNN,网络结构清晰,效果显著,并且能够简单地移植到其它检测器中,带来2-4%的性能提升。高质量的多阶段目标检测架构Cascade R-CNN,解决了训练时的过拟合问题以及推理时的IoU不匹配问题,适用于各种检测器基线,并带来可观的性能提升。在目标检测中,需要确定IOU的阈值来区分正样本和负样本。低的阈值训练网络,容易产生检测噪声,但随着IOU阈值的增加,检测性能便会降低。其中两个最主要的因素为:为了解决以上问题,在多阶段检测架构中提出了级联R-CNN算法,由一系列随着IOU阈值增加而训练的检测器组成,循序渐进的对接近的负例更具选择性。检测器被阶段性的训练,如果检测器的输出是一个好的分布,则用于训练下一个阶段更好的检测器。 对逐渐改进的假设进行重采样,保证所有的检测器由一组同等大小的正样本组成,缓解过拟合问题。在假设阶段应用同样的级联程序,使得每一个阶段的假设和检测器的质量有更匹配的性能,级联R-CNN算法的简单实现,在COCO数据集上检测性能超过了所有单阶段目标检测算法。 目标检测是一个复杂的问题,检测器需要同时解决两个任务:许多目标检测器都基于two-stage框架,其中检测被定义为一个多任务学习问题,将分类和预测框回归相结合。与物体识别不同,需要跨越IoU阈值的交集来定义正例和负例。然而,通常使用的阈值对正例提出了相当宽松的要求。在这项工作中,作者将假设的质量定义为具有基本事实的IoU,并将检测器的质量定义为用于训练的IoU阈值。基本思想是单个检测器只能针对单个质量水平进行优化,主要区别在于作者考虑了给定IoU阈值的优化,而不是负例比例。在本文中,作者提出了一种检测器架构Cascade R-CNN来解决这些问题,其是R-CNN的多阶段延伸,级联更深的检测器对接近的负例有更强的选择性。R-CNN的级联是按顺序训练的,一个阶段的输出来训练下一阶段,这是由观察到回归器的输出IoU几乎总是优于输入IoU的动机。用某个IoU阈值训练的检测器的输出是良好的分布以训练下一个较高IoU阈值的检测器。 Cascade R-CNN的实施和端对端训练非常简单。作者的研究结果表明,在没有任何花销的情况下,在很大程度上超过了所有先前的state-of-the-art 的单阶段检测器。 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阈值合集,按照定义,分类器在推理时再进行组合。- 推理时,高质量的分类器需要处理相对低质量的bndbox
因此,Integral loss在很多IoU水平难以表现出高的准确率。相对于原始的two-stage架构,Integral loss的架构收益相对较小。 Cascaded Bounding Box Regression由于很难训练一个能符合所有IoU水平的回归器,因此把回归任务分解成一个级联的回归问题:T是级联阶段数,每个回归器对于当前的级联输入都是最优的,随着阶段的深入,bndbox在不断的提升。 cascade regression与iterative BBox的区别:- 级联回归的多个回归器对于相应阶段的输入分布是最优的
Cascaded Detection- regressor都倾向于能够提升bndbox的IoU
通过级联回归产生高IoU的集合,在提升样本整体IoU水平的同时,使得样本的总数维持在一个水平,两个好处:随着阶段的深入,一些离群点会被过滤,这保证了特定阈值检测器的训练。 部分实验设置: - 4个stage,一个为RPN,其余为U={0.5, 0.6, 0.7}的检测器
图5对比了以Cascade R-CNN的stage输出作为输入时detector的表现,当提升了输入边框的质量后,检测器性能得到了明显的提升图6对比了各级联检测器在各阶段上的表现,提高输入质量后,各检测器都得到了收益。Comparison with Iterative BBox and Integral LossTable5对比了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被证明适用于许多目标检测结构,作者相信它可能对未来的目标检测研究工作有很大的影响。如今看来,事实也确实如此。
|