今年的图像领域的顶会CVPR收录了很多目标检测的论文,Cascade R-CNN: Delving into High Quality Object Detection这篇文章关注的是IOU的最优选择,很小的trick,不过在效果上有不错的提高。git
目标检测中,须要肯定IOU的阈值来区分正样本和负样本。低的阈值如0.5训练网络,易产生检测噪声,但随着IOU阈值的增长,检测性能会下降。两个主要的因素:1)在训练期间过拟合,致使正样本指数消失;2)检测算法最佳的IOU和假设的IOU之间不匹配。在多阶段目标检测架构中,为了解决以上两个问题,提出了级联R-CNN算法。该算法由一系列随着IOU阈值增长而训练的检测器组成,按部就班的对close false positive更具选择性。检测器被阶段性的训练,若是检测器的输出是一个好的分布,则用于训练下一个阶段更好的检测器。对逐渐改进的假设进行重采样,保证全部的检测器由一组同等大小的正样本组成,缓解过拟合问题。在假设阶段应用一样的级联程序,使得每个阶段的假设和检测器的质量有一更匹配的性能,级联R-CNN算法的简单实现,在COCO数据集上检测性能超过了全部单模型对象检测算法。实验还代表,级联R-CNN可普遍用于不一样的检测架构,得到与基准检测器强度无关的增益。代码地址为:github.com/zhaoweicai/…。github
检测问题和分类问题有很大的不一样,检测问题要经过IOU区分正负样本,所以IOU的选择对train和inference有很大的影响。做者作了一组实验算法
如图(a),阈值为0.5会有大量的噪声,这个阈值很难区分与正样本类似的误检测;而一个较好的阈值,检测算法基本上没有误报。图c中,横轴是proposal的IOU,纵轴是通过box reg训练后获得的新的IOU,不一样的线条表明不一样的阈值训练出的检测器。三条线的总体趋势都显示,IOU越高,检测器的回归性更好。在0.55~0.6之间时,0.5的阈值训练出的检测器性能最好,在0.6~0.75之间,0.6的阈值性能最好,而在0.75以上,0.7的阈值训练出的检测器性能最好。经过以上分析代表,当proposal自身的IOU阈值与训练时的阈值接近时,检测器的性能最好。然而这会带来一个问题:目标检测中训练和测试的数据集是大量的,若使用单一的IOU阈值,以经常使用的0.5为例。在proposal时,全部IOU大于0.5的都会被认为是正样本,在0.6到0.95之间的proposal上,0.5的阈值表现会比较糟糕。而若是选用0.7的阈值,单纯看图(c)0.7的阈值也有较好的表现,可是图(d)中,0.7的阈值表现是最糟糕的,缘由是0.7的阈值会使训练样本大幅减小,过拟合的现象会很是严重。网络
为了解决以上的问题,做者提出了级联R-CNN框架,用一个stage的输出训练下一个stage。仍是图(c)中,三条线的大部分区域都在y=x这条线之上,说明proposal在通过box reg训练以后,IOU是增长的。所以,做者想到能够将多个检测器级联起来,例如将三个IOU分别为0.5.0.6和0.7的检测器串起来,对于IOu为0.55的proposal,在通过0.5的detector后,IOU变为了0.7;再通过0.6的检测器,IOU变为了0.85;再通过0.7的检测器,IOU变为了0.89。这种训练方式比任何一个单独的检测器的结果要好。除了改善IOU外,通过多个检测器,proposal的IOU变高,正样本的质量会更好,即便下一个检测器的IOU阈值设置的较高,也不会有太多的样本被舍弃,能有效的缓解过拟合现象。架构
做者将本身的工做与其他的几种工做作了对比实验。框架
上图中第一行横纵轴分别为回归目标中box的x和y方向的偏移量,第二行横纵轴分别为回归目标中box的宽高误差量。能够看到在级联中从1st stage到2st stage,proposal的分布发生了很大的变化,有不少噪声在通过box reg训练以后提升了IOU,在2st stage和3st stage中那些红点属于异常值。所以须要在后续的级联结构中提升阈值去除噪声干扰。 但前面提到提升阈值会减小正样本的数量,在前言部分对此给出了感性的解释,做者又给出了更相信的理论依据。性能
而Figure3中的图(c)的Interative Loss没有级联结构,该结构使用了不一样阈值分类,而后融合多个结果进行分类推理,并且只取了一个结果作边界框回归。做者指出,Figure4的1st stage部分能够看出,当IOU越高,proposal占的比重越小,所以Interative Loss的结构不能从根本上克服过拟合的现象。测试
做者提出的级联结构在Figure 3的(d)中已经给出,做者采用的结构是一个RPN网络加上3个检测器(阈值分别为0.5/0.6/0.7)。在这三个级联检测器中,每一个检测器的输入都是上一层检测器边界框回归以后的结果。 在COCO数据集上实验结果以下:优化
目标检测与分类任务很大的不一样就在于数据集的样本没有明确的区分正负样本,在检测任务中是经过设置IOU的值区分正负样本,这就涉及到一个调参的问题,能够想象做者在调IOU参数作对比实验时时所受的折磨。做者作的对比实验中,也比较了一些关于优化IOU参数前人作的结构调整,Cascade R-CNN所提的方法,在前人的基础上更进了一步,作的理论分析也十分的合理。cdn
最后打个广告:欢迎关注个人掘金帐号和我的博客冲弱's Blog。