目标检测——非极大值抑制算法(NMS算法)

1、非极大值抑制算法提出的目的

         在目标检测中,为了消除多余的检测框,找到最佳的物体检测的位置。

2、 非极大值抑制(Non-Maximum Suppresion, NMS)

  • 什么是非极大值抑制

        非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。此处主要说明NMS用于目标检测中提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。NMS在计算机视觉领域有着非常重要的应用,如视频目标跟踪、数据挖掘、3D重建、目标识别以及纹理分析等。

  • 思想:

         选取那些邻域里分数最高的窗口,同时抑制那些分数低的窗口。

  • 原理分析:

        对所有检测到的检测框按照他们的得分进行排序(这个得分就是我们利用分类器来进行时,会得到一个概率值,这个概率值就表示当前检测框是我们所需要检测目标的概率大小。)选出得分最大的检测框A,设定阈值b,在剩下的检测框中,计算他们与最大检测框A之间的IoU(Intersection over Union,若IoU大于阈值b,即重叠率高的检测框。删除这些检测框;有可能存在与当前检测框完全不重叠的,或者他们的重叠面积非常小(IoU小于阈值b),接下来会对这些没有处理过的检测框重新进行排序,排序完成后同样选择一个得分最大的检测框,然后计算其他检测框与这个最大检测框的IoU值,然后将IoU大于一定阈值的检测框再进行一次删除,不断的迭代这个过程,直到所有的检测框都被处理之后,输出最后的检测结果。

3、NMS在目标检测中应用实例

 

  • 去除人脸检测中的重叠框:我们的目的就是要去除冗余的检测框,保留最好的一个

face box

  • 目标检测 pipline

        产生proposal(区域)后使用分类网络给出每个框的每类置信度,使用回归网络修正位置,最终应用NMS。

obj-det-pipline

4、NMS改进的方法——Soft-NMS

  • 相邻区域内的检测框的分数进行调整而非彻底抑制,从而提高了高检索率情况下的准确率
  • 在低检索率时仍能对物体检测性能有明显提升

改进方法在于将置信度改为IoU的函数:f(IoU),具有较低的值而不至于从排序列表中删去。即公式的第二项由0改成现在的第二项。

  • 在基于proposal方法的模型结果上应用比较好,检测效果提升:

  • 在YOLO、SSD等非proposal上没有提升。

猜你喜欢

转载自blog.csdn.net/gaoyu1253401563/article/details/86483446