我是靠谱客的博主 自由铅笔,最近开发中收集的这篇文章主要介绍为什么二阶段(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)目标检测算法精度高问题场景:原因分析:总结:的全部内容,希望文章能够帮你解决为什么二阶段(two-stage)目标检测算法比一阶段(one-stage)目标检测算法精度高问题场景:原因分析:总结:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部