以提出背景为出发点详细解读Cascade R-CNN

Faster R-CNN结构回顾

Faster R-CNN的出现将目标检测的速度大幅提升,开启实时目标检测的大门。其主要贡献是提出RPN,使用CNN完成候选框的提取。框架以及流程图请看图。
在这里插入图片描述
Faster R-CNN在训练阶段,经过RPN运算并筛选得到大约2000个Proposals。因为Faster R-CNN属于Two-Stage目标检测框架,需要对前景背景做一个简单的分类,筛除掉一部分无关背景,提升召回率。因此需要在RPN部分做二分类预测,其中二分类任务的真值是通过Anchors与GT的IOU来计算的 (比如IOU>0.5设置为正样本,否则设置为负样本),所以不同的IOU阈值得到的正负样本数目和质量都不一样,结果也是不同的。而在推理阶段呢,所有的proposals不经过筛选(因为在推理阶段我们也不知道GT,无法筛选)直接被分类和回归。proposals在Training阶段筛选,而在Inference阶段不筛选,那么这两阶段的proposals的分布肯定是不一样的,Training阶段的proposals质量肯定更好一些,这就给整个模型带来了不匹配的问题,即Faster R-CNN的Mismatch问题。

Cascade R-CNN提出背景

那么有没有什么办法可以解决Mismatch问题呢?直接提高IOU阈值,这样得到的proposals质量更好,行不行呢?接下来有人做了实验进行分析,我们来看一下。
(实验结果看图) 提高IOU阈值会带来两个显性问题:

  1. 提高IOU阈值之后,正样本会变得更少,正负样本失衡更严重,网络不好训练,而且容易产生过拟合问题。
  2. IOU提高,Training阶段和Inference阶段proposals的分布差别更大,导致Mismatch问题更为严重。
    在这里插入图片描述
    图中横轴为IOU,纵轴为此IOU的Anchors数量,从图中可以看到,Anchor按照IOU划分的分布是很不均衡的。提高IOU阈值,确实会出现上边我们得到的两个结论现象。
    进一步做实验分析,取不同的IOU阈值观察proposals的分布与相应的检测精度。
    在这里插入图片描述
    [C]图中横轴为RPN输出的proposal与GT的IOU,纵轴为proposal经过box regression输出的新proposal与GT的IOU。我们分析相同IOU的proposal在不同IOU阈值下经过box regression输出的proposal的IOU(即在图中画一条竖线),可以发现当input IOU与IOU阈值越接近时,output IOU越大。比如input IOU=0.85时,IOU阈值取0.7时的output IOU最大。这就正好验证了上边所说的Mismatch问题,Training阶段的IOU阈值与Inference阶段的IOU相差太多的话,会造成检测性能下降。得出结论:
    1.只有proposal自身的阈值和训练器训练用的阈值较为接近的时候,训练器的性能才最好。(这个我暂时没有找到理论支持,只能从实验上看出来)
    2.如果两个阈值相距比较远,就是我们之前说的mismatch问题了。
    3.单一阈值训练出的检测器效果非常有限,单一阈值不能对所有的Proposals都有很好的优化作用。
    [d]图中横轴表示在Inference阶段,判定box为正样本的阈值,纵轴为mAP,可以看到阈值从0.5提到0.7时,mAP下降很多。
    针对以上结论,Cascade被提出。
    既然proposals和GT的IOU与筛选的IOU阈值接近时,才能获得比较好的回归效果,那么Cascade R-CNN便设置了多个检测器,每个检测器设置不同的IOU阈值,分别负责检测与GT拥有不同IOU的proposals,较低级的IoU输出效果一定比输入的IoU高(都在baseline上面不同IOU阈值输出的proposals的output IOU都比[c]图中的baseline直线要高),因此拥有小的IOU阈值的检测器位于底部,其经过box regression的proposal作为输入进到下一个具有较高IOU阈值的检测器进行回归,依次级联。

Cascade R-CNN级联结构与其他级联结构比较

Faster R-CNN只有一个检测器,并且采用单一IOU阈值。
Iterative BBox at Inference采用了多个检测器的结构,但是每个检测器是一样的,而且IOU阈值也是一样的,没有解决Mismatch问题,而且经过检测器输出之后proposals的分布发生变化,继续使用相同IOU阈值的相同检测器造成网络结构不稳定,训练也会更困难。
Integral Loss设计了多个不同IOU的head,但是是并行pipeline,在一个stage中进行运算,Mismatch问题依然没有解决
在这里插入图片描述
Cascade R-CNN设计了多个具备不同IOU阈值的检测器head,并且采用级联的形式,一步步地将proposals的质量提升,前一阶段输出的proposals分布正好适用于下一阶段检测器head的IOU阈值,逐阶段回归,最后一个检测器回归出的结果当然最好。
在这里插入图片描述
可以看到,随着级联阶段的不断回归,与GT具备高IOU的proposals数目逐渐增多,质量更好。因此Cascade R-CNN的设计在解决Mismatch问题的同时又避免了过拟合的问题,是很巧妙的设计。

总结

其实我们可以看到Cascade R-CNN的结构巧妙但是并不复杂,作者是从很细节的地方入手,并实际做了大量实验证明自己猜测的正确与否,然后根据得到的结论按症下药设计网络,并且取得了很好的效果。我们平时在学习的时候也应该具备这种品质,最后祝大家都能培养这样的品质并迸发出不同寻常的idea,并做出不错的工作。

参考

https://zhuanlan.zhihu.com/p/66412749
https://arxiv.org/abs/1712.00726

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>