目标检测论文分析 (一)

时间:2024-04-10 22:02:37

目标检测论文分析 (一)

Cascade R-CNN
首先要知道一般的检测网络里有2个IOU阈值:

  1. 未开始训练时,anchor与Gt之间的IOU阈值,本文记为IOU threshold。一般我们会设置这个值为0.5,即feature map上该点的anchor与GT之间的IOU大于0.5,就讲该anchor作为训练的样本进行训练,其他的就抛弃。
  2. 网络进行预测的输出bbox与GT间的阈值,本文记为u。同样,一般的网络均设置u = 0.5。

开始正文:
目标检测论文分析 (一)

作者用figure 1 的四幅图来说明几个问题:
(a)说明u较低时容易引入噪声,对于相似性较高的假阳样本无法做到很好的区分;
(c)说明输入IOU不同时,不同区间的输入IOU所对应的最优u 值也是不同的,比如在低质量的0.5~0.62区间,u=0.5有明显优势,而u = 0.7效果很差,而在高质量样本区间0.75以上,u = 0.7效果又占优。证明不同质量的输入样本对应的最优分类器阈值也不同。
(a)、(b)和(d)对比说明u较高时虽然过滤掉了噪声,但是整体AP会很差,原因是较高的u过滤了大量低质量样本,造成训练样本缺失,检测器对高质量的样本过拟合,而对于低质量的样本效果很差。

因此figure1 的结论是:设置单一阈值的分类器无法完美适配全局样本(高低质量不同的样本)

本文的核心就是通过cascade的方式,串联多个分类器,来生成一个全局最优的分类器

如何做到的呢?看下图

目标检测论文分析 (一)

  • (a)是传统的Faster-RCNN结构,这个不多说,应该都能看懂,这里的B0就是RPN网络预筛选出来的样本 bbox,以这个B0作为输入得到C1(分类)和B1(回归)。(b、c、d)就类似于YOLO等一步网络的结构了,其实没有区别,这里相当于省略了(a)中RPN的部分,直接给出了B0。
  • (c)是对B0分别使用多种阈值u={0.5,0.6,0.7}进行预测的结构,然而这种方式并不能解决根本问题,原因不明白的话,一会儿下面会说。
  • (d)和(b)放在一起说了。(d)就是本文使用的结构,跟(b)非常的像。区别在于(b)在对B0进行预测输出B1后,将B1用原来的检测器重复检测得到B2,再次重复得到B3。而本文的(d)在重复检测时,提高了检测器的阈值u,三个检测器u = {0.5,0.6,0.7}。

所以本文真正与前人算法改动的地方很小,只是改变了阈值,但是检测效果却有很大的提高,关键在于,前人并没有找到检测效果差的根本原因。

阈值改变的核心改变在于训练样本的重采样。

详细解释一下:
我们回到Figure1(c),可以看到无论u取何值,曲线都在灰色线上方。这代表着,原样本IOU值在经过网络回归后的IOU值是一定会增加的,即output IOU>input IOU。所以假设我们有个proposal与GT间的IOU为0.5,输入到网络中得到的输出与GT间的IOU可能是0.55/0.6/…>0.5。而Figure3中(b)的网络结构,重复使用u = 0.5的检测器进行检测,无论重复使用多少次,输入的样本始终是同一个,不会改变。 而改变阈值后,会对原始样本进行二次筛选,也就是重采样,剔除掉无用的贡献不高的错误样本。

举个栗子:假设我们的B0有5个Proposal,他们的初始IOU是B0 = {0.5,0.6,0.7,0.8,0.9},输入到u = 0.5 的检测器后得到结果必然要比这个IOU大,所以他们可能变成了B1 = {0.51,0.65,0.72,0.81,0.905},注意这里仍然是5个,即使再重复检测2次,也还是5个。
改变第二个检测器的阈值u = 0.6,由于0.51与0.6的距离较远,经过这个检测器的输出可能超不过0.6.那么输出就可能变成了B2 ={0.68,0.76,0.85,0.92} ,这里就剔除了质量最差的样本。下一个u = 0.7的检测器跟0.68很接近,对它的提升可能很大,所以并不一定会淘汰,很容易超过0.7变成B3 = {0.71,0.8,0.89,0.93}

也就是说通过这种阶梯型的门槛,会筛选掉一些没有提升潜力的差样本,这些样本不剔除,每次都参与训练限制了检测效果的提高。

作者通过几个实验证明了理论的真实性:
目标检测论文分析 (一)
Figure2 的实验看出,在通过多个stage的检测器筛选后,样本分布有了较大改变,红色区域的样本被剔除,也就是阶梯式检测器的具备重采样的功能。那么有童靴问了,这样剔除样本,会不会像之前只用u = 0.7时那样,剔除了大量的检测样本,只留下了极少的正样本引起过拟合呢?答案是并不会。

目标检测论文分析 (一)

作者对训练样本的数量进行了统计,由于一开始0.5的检测器对大家进行了强化,大部分有潜力的样本都“激流勇进”冲进了0.6大关,只剩下小部分的“菜鸡”被淘汰,同样,下个阶段也是这样,每个阶段都只淘汰小部分,总体样本并不会减少太多。

我举个最通俗易懂的栗子我相信大家一定会明白:有一群小学生,他们从一年级到五年级不等(0.5-0.95的proposal的样本),这时校长说:“同学们啊,大家无论是几年级的都一起上课,就上一年课,学多少是多少,不用考什么试,重在参与嘛~~米娜桑一年后就让你们毕业!”然后无论学渣学霸,大家皆大欢喜,都毕业了(只用u = 0.5,对应Figure3a)

过两年校长发现这不行啊,学生质量参差不齐,学校风评堪忧啊,没有中学敢要我们的学生,升学率提不上去啊,不行,得考试了。所以校长说了:“米娜桑,我们还是一起上课,还是就学一年,学多少是多少,但是我们要积极响应国家政策,所以学完了我们就进行毕业考试,考五年级水平的题!~”考完试学生们就爆炸了,广大低年级学生纷纷表示 “劳资一年级小学生学一年课就要考五年级的题?考个鬼啊,能过才怪,必须要锤爆校长的狗头!”,只有零星几个五年级大学霸表示,还好劳资天赋异禀。(u = 0.7时情况,对应Figure1d,直接用高阈值导致剩余样本大量缺失)

**由于校长狗头被锤爆,只能换个校长,这回新校长可不敢考试了,怕脑袋不保,但是必须得提高生源质量啊,要不学校不得黄了。所以就想到“学一年学的不好,那么就多学几年呗”所以新校长指示大家我们学习三年,然后再考试,行了吧。。。三年后,考上重点中学的学生确实比以前多了,但是却没多太多。主要是学校里有些学生素质不行(一些噪声样本),自己不学习,天天还打扰别人学习,搞得大家整体都没学好,升学率依旧全市垫底。(Figure3c情况,多个u = 0.5 级联)

省里一看这学校的情况,就把这校长撤了,又换个新的校长。新新校长说,我们要改变教学模式,每年都要进行升级考试,通不过就留级(退学)吧!这下学生们就慌了,每年都淘汰几个吊车尾的,大家学习没人打扰了,学习环境浓郁,最后大家都取得了很好的成绩,考上了理想的中学(对应本文的思路)

总结:
本文最后通过各个角度与其他算法进行比对,证明了算法具有很高的优越性,同时,本文也是发现了网络训练的盲点,我觉得是很有意义的一篇文章。比对的结果就不展示了,大家可以看原文,最后放上源码和文章地址

References:
【1】 Cai Z, Vasconcelos N. Cascade R-CNN: Delving into High Quality Object Detection[J]. 2017.
原文地址
源码地址