为什么二阶段(two-stage)目标检测算法比一阶段(one-stage)目标检测算法精度高

Posted vodka、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么二阶段(two-stage)目标检测算法比一阶段(one-stage)目标检测算法精度高相关的知识,希望对你有一定的参考价值。

问题场景:

目标检测算法大致可分为两阶段(two stage)目标检测算法和一阶段(one stage)目标检测算法,在没有过多的tricks的情况下,两阶段的目标检测算法的检测精度是要比一阶段的目标检测算法精度高的。


原因分析:

其实我认为主要原因有以下几点:
1.正负样本的不均衡性
   这一点想必大家在做目标检测实验的时候深有体会,当某一类别的样本数特别多的时候,训练出来的网络对该类的检测精度往往会比较高。而当某一类的训练样本数较少的时候,模型对该类目标的检测精度就会有所下降,这就是所谓样本的不均衡性导致的检测精度的差异。
   对于一阶段的目标检测来说,它既要做定位又要做分类,最后几层中1×1的卷积层的loss都混合在一起,没有明确的分工哪部分专门做分类,哪部分专门做预测框的回归,这样的话对于每个参数来说,学习的难度就增加了。
   对于二阶段的目标检测来说(Faster RCNN),在RPN网络结构中进行了前景和背景的分类和检测,这个过程与一阶段的目标检测直接一上来就进行分类和检测要简单的很多,有了前景和背景的区分,就可以选择性的挑选样本,是的正负样本变得更加的均衡,然后重点对一些参数进行分类训练。训练的分类难度会比一阶段目标检测直接做混合分类和预测框回归要来的简单很多。

2.样本的不一致性
   怎么理解样本不一致性呢?首先我们都知道在RPN获得多个anchors的时候,会使用一个NMS。在进行回归操作的时候,预测框和gt的IoU同回归后预测框和gt的IOU相比,一般会有较大的变化,但是NMS使用的时候用的是回归前的置信度,这样就会导致一些回归后高IoU的预测框被删除。这就使得回归前的置信度并不能完全表征回归后的IoU大小。这样子也会导致算法精度的下降。在第一次使用NMS时候这种情况会比较明显,第二次使用的时候就会好很多,因此一阶段只使用一次NMS是会对精度有影响的,而二阶段目标检测中会在RPN之后进行一个更为精细的回归,在该处也会用到NMS,此时检测的精度就会好很多。


总结:

   最后,想说的是,现在的一阶段目标检测的数据不平衡问题已经用focal loss解决了,在一阶段目标检测中使用focal loss就能够使得预测效果媲美二阶段目标检测算法。本文是自己的一些想法,欢迎讨论。

以上是关于为什么二阶段(two-stage)目标检测算法比一阶段(one-stage)目标检测算法精度高的主要内容,如果未能解决你的问题,请参考以下文章

目标检测中的样本不平衡处理方法——OHEM, Focal Loss, GHM, PISA

论文解读Faster R-CNN 实时目标检测

深度学习和目标检测系列教程 23-300 :FasterRCNN和yolov5训练飞机目标识别的小项目

One Stage目标检测

9种深度学习算法简介

基于深度学习的目标检测综述