目标检测总结:Cascade RCNN

目标检测总结:Cascade RCNN

    • IOU对目标检测的影响
    • 其他相关工作
    • Cascade RCNN

目标检测中通常用IOU来区分正例和负例,通常IOU取0.5,但通常0.5的IOU阈值会带来大量的噪声,这里的噪声指的是false positive。但是如果增加阈值的选取,检测器的性能并没有提升反而有所下降,其原因在于:1样本减少引起的过拟合,2 train和inference时的阈值不一致带来的mismatch。为了解决iou的问题,作者提出了malti-stage训练的Cascade RCNN算法。

IOU对目标检测的影响

在监测问题中,通常是通过IOU来来判断样本的正负及分类。因此IOU的选取的检测的精度有很大的影响,作者做了几个实验在论证IOU对检测的影响,实验结果如上图所示。
目标检测总结:Cascade RCNN_第1张图片
首先,较低的IOU会产生很多的噪声(FP),如figure1(a)所示,当增大IOU的阈值时,噪声减少,如figure1(b)所示。这一点比较直观,很好理解,就是较高的IOU阈值对于噪声有抑制作用,使检测更精确。
另外,如figure1(c)所示,通常来说,经过boxreg之后,新的box的IOU会变得更高,说明detector是有效果的,使得box框更加的精确。另外从图中可以看出,0.55-0.6范围内阈值为0.5的detector性能最好,在0.6-0.75范围内阈值为0.6的detector性能最好,0.75以上的范围内阈值为0.7的detector性能最好。这说明了只有proposal自身的阈值和训练器训练的阈值较为接近的时候,训练器的性能才是最好的。如果两个阈值相隔较远,就是我们之前说的mismatch问题了。
因此,可以确认的是,单一阈值训练出的检测器效果一般,以最常见的0.5阈值为例,由于所有的大于0.5的proposal均被选中,那么对于iou大于0.6的proposal来说,0.5阈值的检测器并不是最优的,那如果把检测器的阈值调到0.7呢,从figure1(d)可以发现,提高阈值的方法并没有提升。原因就在于提升了阈值,样本减少,过拟合问题非常严重。

其他相关工作

目标检测总结:Cascade RCNN_第2张图片
作者比较了目前比较类似的相关工作,Figure3(a)的fasterRCNN比较好理解,figure3(b)的Iterative BBox是为了定位准确,采用了级联结构对box进行回归,使用的是完全相同的级联的结构,但是这样做是有问题的。1),单一阈值0.5无法对所有的proposal都有好的效果,如figure1(c)所示,proposal经过0.5阈值的detector之后IOU都在0.5以上了,再使用0.5的阈值有些欠妥。2),detector会改变原来样本的分布,再使用同样的结构也是不合理的。如下图figure2所示:经过1st-stage之后,proposal的分布已经发生很大的变化了,很多噪声经过box reg之后都提高了IOU,在2nd和3rd中那些红色点属于异常点(False Positive)了,如果不提高阈值来去除,就会引入大量的噪声干扰。这里可以看出,阈值的重新选取本质是一个Resample过程。
目标检测总结:Cascade RCNN_第3张图片
同时,作者通过实验证明,如figure(4)所示,提升阈值之后,proposal的数量并没有太大的变化。
另外figure3(c)中的Integral Loss实际上没有级联的结构,知识使用了不同的阈值进行分类,然后将不同阈值的分类结果进行融合,但是从figure(4)的第一个图可以看出,当iou的阈值上升时,proposal的数量迅速下降,这种方法没有从根本上解决问题。

Cascade RCNN

如figure2(d)所示,cascade RCNN采用的是级联的结果,但是他的创新点在于:

  1. 由于box reg改变了proposal的分布,Cascade RCNN通过调整阈值的方式进行重采样
  2. Cascade的级联结构在train和inference的时候均使用,并没有mismatch问题。
  3. 级联的检测器对于重采样的proposal是最优的。

论文中实验给出的结构包含1个RPN和3个检测器,其中检测器的阈值设定为0.5/0.6/0.7.
论文中实验的对比效果提升还是很明显的,相比如之前的算法提升不少。
Detection其实并不是一个很合适的分类问题,没有一个明确的离散的正负样本的定义,而是通过IoU来连续定义的。但是IoU这个指标很难通过gradient descent来优化,虽然之前也有一些IoU loss的工作,但是效果并不理想。Cascade RCNN便是一个在这个方向上很好的尝试。

你可能感兴趣的:(深度学习)