【目标检测】—— Cascade R-CNN


开始之前学习一个单词热热身:

delve into 英[delv ˈɪntə]
探索,钻研;
She had started to delve into her father’s distant past.
她开始探究她父亲久已逝去的岁月。


0 写在前面

      Cascade R-CNN Delving into High Quality Object Detection.

     Cascade R-CNN主要是解决基于 R-CNN的Two Stage检测器中关于 用于正负样本判定的IOU阈值与检测器结果之间的问题。在检测问题中是对所有候选框进行打分,在训练过程中通过IoU阈值来判定正负样本。一方面,IoU阈值选取的越高,则得到的正样本更接近目标,因此训练出的检测器定位更加精准,但是一味提高IoU阈值会引发两个问题:一是正样本过少导致训练的过拟合问题,二是训练和测试使用不一样的阈值导致评估性能的下降;另一方面,IoU阈值选取的越低,得到的正样本更为丰富,有利于检测器的训练,但势必会导致测试时出现大量的假阳性,也即论文中提到的“close but not correct”。

     由下图可以看到,随着IoU阈值选取越大,网络结果越差。这是因为IOU🐟越大,筛选出的正样本anchor数量越少,一方面使得网络在训练阶段更加可能出现过拟合现象;另一方面,由于在训练阶段选用的IoU与 Inference 阶段预测出的 proposals 与真实框间的IoU 的不匹配问题,使得网络表现能力degrade。
在这里插入图片描述
     我们当然是希望正样本与真实框的IoU越大越好,然而上图显示增加训练IoU阈值会降低AP,这可能是因为基于0.7的IoU阈值训练出的检测器中正样本过少,因此正样本的diversity不够,容易导致训练的过拟合,因此在验证集上表现不佳。
     论文提出的Cascade R-CNN解决了这一问题。

     " A multi-stage object detection architecture, the Cascade R-CNN, is proposed to address these problems. It consists of a sequence of detectors trained with increasing IoU thresholds, to be sequentially more selective against close false positives. "

     首先简要回顾一下R-CNN结构。
在这里插入图片描述
     在 training 阶段,RPN网络生成 2000 左右的 proposals,这些proposals被送入到Fast R-CNN结构中,在Fast R-CNN结构中,首先计算每个 proposals 和 gt 之间的 IoU,通过人为的设定一个IoU阈值(通常为0.5),把这些Proposals分为正样本(前景)和负样本(背景),并对这些正负样本采样,使得它们之间的比例尽量满足(1:3,二者总数量通常为128),之后这些proposals(128个)被送入到Roi Pooling,最后进行类别分类和box回归。

     在 inference 阶段,RPN网络生成 300 左右的proposals,这些proposals被送入到Fast R-CNN结构中,与 training 阶段不同的是,inference 阶段没有办法对这些 proposals 根据 IoU 采样(inference 阶段由于不知道 gt,也就没法计算 IoU),所以它们直接进入Roi Pooling,之后进行类别分类和box回归。

1 关于 mismatch 问题

     在 train 和 inference 阶段使用不同的阈值很容易导致mismatch。什么意思呢?

     在 inference 阶段,只有生成的 proposals 自身的IOU值和训练器训练时设定的IOU阈值较为接近时,训练器输出的IOU值才会高即网络性能才好。
     在 training 阶段,由于给定了 gt ,所以可以把与 gt 的iou大于threshold(0.5)的proposals作为正样本,这些正样本参与之后的bbox回归学习;
     在 inference 阶段,由于 gt 是未知的,所以只能把所有的 proposals 都当做正样本,让后面的bbox回归器回归坐标。
     所以在 training 阶段和 inference 阶段,bbox回归的输入分布是不一样的,training 阶段输入的proposals质量更高(被采样过,IoU>threshold),inference阶段的输入proposals质量相对较差(没有被采样过,可能包括很多IoU<threshold的情况),这就是论文中提到mismatch问题,这个问题是固有存在的,通常threshold取0.5时,mismatch问题不会很严重。

2 关于单纯增大训练时iou阈值问题

     在训练阶段,IoU一般设为0.5, 在RPN选择正负anchor的时候,往往会产生close but not correct 的框,而检测器必须找到正样本并且抑制这些 IoU接近于正样本的 负样本,一些人容易想到把IoU设置大一些来获得更加高质量的正样本,"However, to produce a high quality detector, it does not suffice to simply increase IoU during training. "

单纯增大训练时iou阈值会带来什么问题呢?

  • 过拟合问题。提高了IoU阈值,满足这个阈值条件的proposals必然比之前少了,即正样本数量减少,容易导致过拟合。
  • 带来更严重的 mismatch 问题。R-CNN结构本身就有这个问题,IoU阈值变得更高,在 inference 阶段产生的 proposals 分布与训练时的 proposals 分布之间的 mismatch 会更加严重,进而使得网络预测结果变差。

3 Cascade结构

在这里插入图片描述
     在训练阶段,既然一个单一的IoU阈值训练出的检测器效果有限,作者便提出了muti-stage的结构,每个stage都有一个不同的IoU阈值;在ROI Pooling之前,通过不同的阈值(论文实验中设置为0.5、0.6、0.7)来生成质量越来越高的bbox。可以看到经过回归后的B1、B2bbox又送入IoU阈值更高的stage2和stage3中进行训练,这是因为作者通过实验发现,输入的IoU较小时经过网络的回归预测后,会产生较大IoU的bbox,所以可以这样传下去进行训练。

在这里插入图片描述

4 Cascade类似的结构对比

     在这篇论文之前,已经有类似于Cascade结构的提出,如下图。
在这里插入图片描述
     图(b)为"iterative bounding box regression, denoted as iterative BBox",它为了获得位置回归更加精确的bbox,对于低阶段回归的bbox进行再次回归和分类,然而 Iterative BBox 的 H 位置都是共享的,而且3个分支的IoU阈值都取0.5。Iterative BBox存在的问题:

  • 取单一阈值0.5,是无法对所有proposal取得良好效果的;
  • detector会改变样本的分布,这时候再使用同一个共享的H对检测肯定是有影响的。作者做了下面的实验证明样本分布在各个stage的变化。
    在这里插入图片描述
         图(c)为 Integral Loss ,它共用ROI pooling,且只有一个stage,但有3个不共享的 H,每个H处都对应不同的IoU阈值。Integral Loss存在的问题为它仅仅通过不同的IoU阈值对样本进行类别的判断,而没有再次对bbox进行回归。

5 总结

     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。

     Cascade R-CNN成功的两个关键:一是级联而非并联检测器,二是提升IoU阈值训练级联检测器。最关键的是逐渐提高的IoU阈值的stage要对应着高IoU阈值样本的分布,否则很容易发生过拟合;恰巧的是低IoU阈值的bbox在经过回归后,其IoU阈值一定会变大,故这样就级联起来了


参考博客

欢迎关注【OAOA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值