内容简介:本文由极市博客原创,作者Panzer。论文地址:代码地址:
本文由极市博客原创,作者Panzer。
论文地址: arxiv.org/abs/1712.00…
代码地址: github.com/zhaoweicai/…
背景介绍
通用目标检测是计算机视觉领域最广为关注的问题之一。尽管近年来自于CNN的目标检测算法较传统方法在准确率上取得的突飞猛进的进展,然而较目标分类问题而言依然还有很长一段路要走。早期的目标检测方法主要是由VJ框架所引领,其核心思想是在图像上枚举大量的滑动窗口,提取滑动窗口里的图像特征,通过级联分类器对滑窗进行打分,对得分较高的滑窗予以保留作为最终的检测结果。随着RBG大神将RCNN带入目标检测领域,目标检测被构建为分类+回归的问题进行解决,这股浪潮主要由两类算法引领:以Faster R-CNN为代表的两阶段方法和以SSD为代表的单阶段方法,其中Faster R-CNN准确率更高,而SSD则速度占优。
本文作者是目标检测领域的一位大牛,早在ECCV 2016就推出了目标检测的一篇力作MSCNN [1],其主要解决的是目标检测领域的多尺度问题。而本文主要针对的是目标检测在训练过程中的IoU阈值的选取问题,作者将对这一问题的深入思考并汲取了传统方法中的级联思想,为我们呈现了一场理论和实验都十分精彩的盛宴。
主要内容
基本问题
众所周知,随着RBG大神将RCNN带入目标检测领域,目标检测被构建为分类+回归的问题进行解决,所以检测问题本质是一个分类问题,但又和分类问题有很大区别,因为在检测问题中是对图像中的所有候选框进行打分,在训练过程中通过IoU阈值来判定正负样本,因此IoU阈值的选取是一组需要精心挑选的超参数。一方面,IoU阈值选取的越高,则得到的正样本更接近目标,因此训练出的检测器定位更加精准,但是一味提高IoU阈值会引发两个问题:一是正样本过少导致训练的过拟合问题,二是训练和测试使用不一样的阈值导致评估性能的下降;另一方面,IoU阈值选取的越低,得到的正样本更为丰富,有利于检测器的训练,但势必会导致测试时出现大量的虚检,也即论文中提到的“close but not correct”。以上分析可以通过作者做的下面这组实验进行佐证:
图1(c)给出了经过一次回归以后目标候选框与真实目标框匹配的IoU的变化,横轴代表回归前,纵轴代表回归后,不同颜色的曲线反映的是不同IoU阈值训练的检测器。总体而言,经过回归器以后,目标候选框的IoU均有所提升,但区别在于:IoU在0.55~0.6之间时,基于0.5的IoU阈值训练的回归器输出最佳(蓝色线);IoU在0.6~0.75之间,基于0.6的IoU阈值训练的回归器输出最佳(绿色线);IoU在0.75以上,基于0.7的阈值训练出的回归器输出最佳(红色线)。以上结果表明:要得到定位精度较高的检测器(也即IoU越大越好),就必须选用较大的IoU阈值,然而图1(d)的结果表明,基于0.7的阈值训练出的检测器(红色线)的AP反而是最差的,只有在选用IoU阈值为0.85以上进行评测时,其结果才略好于蓝色线,但依然劣于绿色线,充分验证了我们之前的分析:基于0.7的IoU阈值训练出的检测器中正样本过少,因此正样本的diversity不够,容易导致训练的过拟合,因此在验证集上表现不佳。进而作者思考,能否有一种方式既可以用较高的IoU阈值训练检测器,又能够保证正样本的diversity足够丰富?基于以上分析,下面我们详细论述上作者所提出的Cascade R-CNN,其核心思想就是‘分而治之’。
模型结构
图3给出了本文方法和其他相关工作的直观对比。(d)展示的就是本文Cascade R-CNN的基本框架;(a)就是经典的Faster R-CNN框架,也是本文的baseline;(b)结构上和Cascade R-CNN非常相似,区别在于只在测试时采用级联结构对Box多次回归,因此ROI检测网络部分“H1”结构是相同的,也即训练时还是采用的单一的IoU阈值;(c)则是在ROI检测网络部分并联多个检测器,这些检测器是不相关的,有点类似‘multi-expert’的思想。
尽管图3(b)的Iterative BBox采用了级联结构来对Box进行多次回归,但采用单一IoU阈值训练唯一的检测器会带来以下问题:目标候选框经过0.5阈值的detector后样本的分布已经发生了变化,如下图所示,可以发现经过多个stage的检测器,正样本的分布更加集中于中心点,表明正样本和真实目标的匹配度越来越高,这时候再使用同一个IoU阈值训练检测器显然是次优的,因为如果不提高IoU阈值来去掉这些红色的outlier,就会引入大量噪声干扰,因此有必要提高IoU阈值来保证样本的质量。
另一方面,单纯提高IoU阈值会带来一个疑问:这样是否就减少了正样本的数量?诚然,如果还是用的初始目标候选框,这个答案是肯定的,但本文是从经过回归器后的目标候选框中进行resample,这个疑问就不存在了,有下图为证:经过多个stage之后,正样本的IoU在不断提升,我们可以任性提高IoU阈值,依然能够获取足够多的正样本。
至此我们完成了Cascade R-CNN核心部分的阐释,训练采用的还是通用的分类+回归loss,这里不再赘述。
实验分析
实验细节
(1)验证实验是在MS-COCO 2017上做的,所有detector都是基于caffe框架开发,保证对比的公平性。
(2)作者选用的级联结构共有4个stages, IoU阈值分别设定为递进的0.5/0.6/0.7,大于该阈值的选为正样本,其余均为负样本。
实验结果
首先我们看下本文的Cascade对于不同检测器的提升,作者选用了三种two-stage的检测器:Faster R-CNN、R-FCN和FPN,从下表中可以发现:在不加任何trick的情况下,对于不同的检测器和不同的基准网络,Cascade均能稳定提升3-4个点左右,且IoU阈值越高提升越明显,这张表所展现的效果是相当具有说服力了。
此外,论文给出了大量的剥离实验来验证Cascade的有效性(见下图)。
从中我们可以得出以下结论:表1充分展示了Cascade较Iterative BBox和Intergral loss的优越性,尤其是在AP 90 。评估指标上,说明提高IoU阈值训练级联检测器的必要性;表2展示了联合多个分类器的分类得分的必要性,在AP指标上,stage2比stage1展现了3个点的性能提升,而stage3并没有比stage2展现优势,而联合多个分类器的分类得分可以将AP提升到38.9;表3展示了提高IoU阈值以及利用不同回归统计信息的必要性,第二行与第四行的对比表明前者比后者更为重要,再次证明提高IoU阈值训练级联检测器的必要性;表4展示了采用几个stage会使性能达到饱和,可以发现stage4已经无法带来性能提升,stage3可以达到AP的最高点38.9,而stage2带来的性能提升最为明显,因此对于实际应用而言,两个stage已经足够。
总结展望
本文贡献
(1)深入研究了目标检测中的IoU阈值选取问题,并通过大量的实验分析验证了IoU阈值选取对检测器性能的影响;
(2)基于对以上问题的分析,提出了级联版的Faster R-CNN,也即Cascade R-CNN目标检测算法,在不使用任何trick的情况下,在MS COCO通用目标检测数据集上展现了非常出色的性能。
个人见解
(1)本文探讨了目标检测中长期以来无人问津但非常重要的问题——IoU阈值选取问题,是极具启发性的一篇工作,作者结合传统方法中的cascade思想和当前主流的Faster R-CNN检测框架,将two-stage方法在现有数据集上将检测性能又提升到了一个新高度。抛开文中大量的实验分析不谈,当我们重新审视当前目标检测算法两大主流框架(Faster R-CNN和SSD)时,一个值得思考的问题是为什么Faster R-CNN的准确率要比SSD高?笔者认为这其中的一个关键是:Faster R-CNN完成了对目标候选框的两次预测,其中RPN一次,后面的检测器一次。而本文作者则更进一步,将后面检测器部分堆叠了几个级联模块,并采用不同的IoU阈值训练,进一步提升了Faster R-CNN的准确率。进而我们思考这种提升的上限什么时候会出现?表4表明cascade R-CNN在stage3时性能就已经达到饱和,这和我们的预期还是有一定差距的,如何进一步提升cascade的上限,是值得进一步探索的问题。
(2)本文实验揭示了Cascade R-CNN成功的两个关键:一是级联而非并联检测器,二是提升IoU阈值训练级联检测器。然而实验验证是在Faster R-CNN检测框架下做的,考虑到现实应用场景中我们更关注的是检测器的时效性,能否将这一cascade思想迁移到SSD的检测框架中,进而提升SSD的准确率,这也是非常值得探索的一个问题。
(3)本文更为值得关注的一点贡献是:通过提升IoU阈值训练级联检测器,可以使得检测器的定位精度更高,在更为严格的IoU阈值评估下,Cascade R-CNN带来的性能提升更为明显,不得不说Cascade R-CNN向高精度的目标检测器迈出了坚实的一步,而这恰恰也是我们在实际应用中更希望看到的。
参考文献
[1] A unified multi-scale deep convolutional neural network for fast object detection. ECCV (2016)
本文为 极市平台 原创文章,更多技术分享和项目需求合作请关注极市平台微信号(extrememart).
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- FaceBoxes:官方开源 CPU 实时高精度人脸检测器
- InsightFace 力作:RetinaFace 单阶段人脸检测器
- 向「假脸」说 No:用OpenCV搭建活体检测器
- 【火炉炼AI】机器学习052-OpenCV构建人脸鼻子眼睛检测器
- MIT团队:开发自动化假新闻检测器|技术前沿洞察
- CVPR 2019 | 天秤座R-CNN:全面平衡的目标检测器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Linux Command Line
William E. Shotts Jr. / No Starch Press, Incorporated / 2012-1-17 / USD 39.95
You've experienced the shiny, point-and-click surface of your Linux computer-now dive below and explore its depths with the power of the command line. The Linux Command Line takes you from your very ......一起来看看 《The Linux Command Line》 这本书的介绍吧!