【论文解读】一文详解cascade rcnn |《Cascade R-CNN: Delving into High Quality Object Detection》| 二阶段目标检测核心源码解读

1 简介

1.1 资源链接

论文链接:https://arxiv.org/abs/1712.00726
代码链接:https://github.com/zhaoweicai/cascade-rcnn

1.2 原理

目标检测一般是通过 iou (预测proposal与gt bbox交并比)阈值,来进行正负样本的划分,一般会取0.5,这并不算高。iou阈值越高理论上应该和gt bbox越接近,但是这样训练会导致检测效果的(检测指标,例如mAP)大大下降。
主要原因有以下2点:
(1) iou越高,训练过程中正样本数目越少,容易发生过拟合
(2) 推理阶段,选择的detector最优的iou阈值,与训练的数据iou分布不匹配。

所以本文就提出了多阶段/多阈值的cascade rcnn网络,主要目的就是通过级联的、逐渐提升iou阈值的head,有选择性的抑制很相近的假阳样本(close false positives), 尤其是“close but not correct” bounding boxes,从而提升整体检测效果。

该网络结构清晰,效果显著,并且能简单移植到其它detector中,带来2-4%的性能提升.
在这里插入图片描述
如图(a),(b)所示,在测试阶段,阈值较低的时候,会有较多跟gt很靠近的误检(close false positives),提升iou阈值可以减少这样的误检。

作者定义了quality of an hypothesis& quality of the detector 用来表示 localization and detection performance.
quality of an hypothesis(数据分布的质量)表示proposal和gt的iou,其实就是预测值和真实值localization的贴和程度。如图©所示
quality of the detector(检测器的质量)表示训练使用iou阈值的检测效果,其实就是在不同iou阈值下的mAP。如图(d)所示。

先看图c,横轴的是proposal的IoU(input iou),纵轴的是经过box reg得到的新的IoU(output iou),不同的线条代表不同阈值训练出来的detector,显然新的IoU越高,说明detector进行回归的性能越好。可以看到在0.55-0.6的范围内阈值为0.5的detector性能最好,在0.6~0.75阈值为0.6的detector性能最佳,而到了0.75之后就是阈值为0.7的detector了.
这就说明了,只有proposal自身的阈值和训练器训练用的阈值较为接近的时候,训练器的性能才最好,如果两个阈值相距比较远,就是我们之前说的mismatch问题了。

从图中我们可以意识到,单一阈值训练出的检测器效果非常有限,以现在最常见的阈值0.5为例,由于所有IoU大于0.5的proposal都会被选中,那么对于IoU0.6-0.95的proposal来说,detector的表现就很差了。那么,我能不能直接选用0.7的高阈值呢?毕竟这样子0.5-0.7的proposal都被排除了,横轴0.7~0.95之间,红色线条的表现似乎不差啊?
但是看到图d,你就会发现,实际上detector的性能反而是最低的,原因是这样子训练样本大大减少,过拟合问题非常严重。

留意到左图大部分线条都是在y=x的灰色线条之上的,并且input iou越大,output iou在对应阈值范围也就越大。这就说明某个proposal在经过detector后的IoU几乎必然是增加的,那么再经过一个更大阈值训练的detector,它的IoU就会更好。

如何能保证proposal的高质量又不减少训练样本?
采用cascade R-CNN stages,用一个stage的输出去训练下一个stage,就是作者给出的答案。

2 模型

2.1 模型方案对比

在这里插入图片描述
作者罗列了4种方案:
方案1,Faster R-CNN:baseline, 就是对比的基线。
2阶段的检测任务,第一阶段选出proposal,使用iou_threshold=0.5区分正负样本,第二阶段对proposal进行回归+分类,从而得到bbox location + class。缺点是只有一个较低iou阈值的head,会有较多“close but not correct” bounding boxes。

方案2,Iterative BBox at inference:使用3个head, 但是head结构/参数都一样,推理、测试都使用iou threshold=0.5。
(这个作者提供的reference没有看出来跟这个结构有啥关系)

在这里插入图片描述

第一行横纵轴分别是回归目标中的box的x方向和y方向偏移量;第二行横纵轴分别是回归目标中的box的宽、高偏差量,由于比较基础这里不贴公式了。我们可以看到,从1st stage到2nd stage,proposal的分布其实已经发生很大变化了,因为很多噪声经过box reg实际上也提高了IoU,2nd和3rd中的那些红色点已经属于outliers,如果不提高阈值来去掉它们,就会引入大量噪声干扰,对结果很不利。从这里也可以看出,阈值的重新选取本质上是一个resample的过程,它保证了样本的质量。

在这里插入图片描述

上图是cascade rcnn,在3个stage训练过程中,x,y,w,h预测值和gt值偏差值的分布情况。公式参见(1)

单个head不能修正bbox,那选择多个一样的head多次迭代,是否可以修正bbox问题。答案显然是不能的。主要原因:
(1) 训练时候iou =0.5,在进行测试的时候,数据分布对于高iou并不是最优的。也就是对于高分布的iou并没有提升效果。参见图c
(2)如图2所示,在多次迭代之后,每个stage的分布发生了较大变化,只是使用一个iou=0.5 会引入较多噪声。可以看到经过一个stage训练之后,下一个stage 预测的bbox更靠近gt,也就是iou分布会更高。

当然,这里会有另一个问题,我们这样子真的不会减少样本数量么?虽然第1部分给了比较直观感性的解释,但是似乎还不够……作者给出了更加详细的实验证明:
从这张图,我们可以看到,1st stage大于0.5的,到2nd stage大于0.6的,到3rd stage大于0.7的……在这一个过程中proposal的样本数量确实没有特别大的改变,甚至还有稍许提升,和2图结合起来看,应该可以说是非常强有力的证明了。
在这里插入图片描述

方案3,Integral Loss :通过loss控制不同阈值范围的bbox效果提升。
这个主要是参照 A multipath network for object detection.

在这里插入图片描述

最主要的事是,Fast R-CNN里所有IoU>50%的proposals的得分是相等的,作者改进了损失函数,设置6个不同大小的IoU,分别计算得分然后求平均。这样的话,IoU越高,得分就越高。

改进的积分损失函数:把求得的6个预测类概率求平均 作者设置n=6,u=[50,55,60,65,70,75].(IoU增大,正样本减少)
在这里插入图片描述
作者认为,想要通过设置多个classifier来对不同iou分布进行loss回归也是行不通的。
因为高质量分类器更容易过度拟合。此外,这些高质量的分类器需要处理推理时质量较差的proposal,而这些proposal其实没有得到优化。由于所有这些,(4)的集成在大多数质量级别上都无法实现更高的精度,并且该架构与图3(a)的架构相比几乎没有什么优势

方案4,cascade rcnn:通过3个不同的head,进行逐次迭代送入下一级,并且每一级提升iou阈值,从而提高高位样本的检测效果。训练和推理过程效果设置一致。

方案2 与 方案4差异点:
(1)iterative BBox只是一个后处理阶段去处理bbox,cascade rcnn是一个再采样筛选过程/并且会影响不同stage的数据分布
(2) iterative BBox训练的时候使用的是一套参数/只有一个iou, cascade rcnn是3个stage有不同iou/并且在训练,测试阶段参数不变
(3) 不同的iou参数针对不同的数据分布,更有助于提升不同分不情况下的检测效果(Figure1 图c下,不同训练iou在对应iou下检测效果更好)

总结起来,就是:
cascaded regression不断改变了proposal的分布,并且通过调整阈值的方式重采样
cascaded在train和inference时都会使用,并没有偏差问题
cascaded重采样后的每个检测器,都对重采样后的样本是最优的,没有mismatch问题

2.2 方案效果对比

在这里插入图片描述
4种方案检测效果对比, 可以看出还是cascade rcnn效果比较明显

3 实验

3.1 模块必要性选择

对于每个stage提升 , 加入gt训练效果
在这里插入图片描述

cascade rcnn全部head逐次采用递增, 相同iou下检测效果,stage 1=0.5,stage2=0.6,stage3= 0.7较好
在这里插入图片描述
输出不同stage的效果
在这里插入图片描述
提升iou or 使用级联结构效果
在这里插入图片描述
采用不同stage num效果比较
在这里插入图片描述

3.2 模型效果环比

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 源码解读

Ref

目标检测 | 经典算法
目标检测论文阅读
轻松掌握 Cascade R-CNN
A multipath network for object detection

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI扩展坞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值