非极大值抑制(non maximum suppression, NMS)介绍

在最近几年常见的物体检测算法(包括rcnn、sppnet、fast-rcnn、faster-rcnn等)中均使用了NMS,下面就从几个方面进行介绍:


为什么要NMS?

在进行目标检测时一般会采取窗口滑动的方式,在图像上生成很多的候选框,然后把这些候选框进行特征提取后送入分类器,一般会得出一个得分(score),比如人脸检测,会在很多框上都有得分,然后把这些得分全部排序。选取得分最高的那个框,接下来计算其他的框与当前框的重合程度(iou),如果重合程度大于一定阈值就删除,因为在同一个脸上可能会有好几个高得分的框,都是人脸但是不需要那么框我们只需要一个就够了。
所以需要一个方法在众多的检测框中挑选出最终的结果(尤其是在多目标检测中,因为在单目标检测中,可以简单的认为得分最高的就是目标检测框)


NMS是什么?

NMS通过筛选出局部极大值,或者说是抑制非极大值之外的其他解,从而最终得到最优解。


NMS的应用场景

NMS不仅用于在同类别内的挑选极大值(确定目标框),也用于分类中挑选极大值(确定类别)

  • 在2维边缘提取中,体现在提取边缘轮廓后将一些梯度方向变化率较小的点筛选掉,避免造成干扰。
  • 在三维关键点检测中,也起到重要作用,筛选掉特征中非局部极值。
  • 在目标检测中,如Yolo和RCNN等模型中均有使用,可以将较小分数的输出框过滤掉,同样,在三维基于点云的目标检测模型中亦有使用。

NMS过程(目标检测)

依靠分类器得到多个候选框,以及关于候选框中属于类别的概率值,根据分类器得到的类别分类概率做排序,具体算法流程如下:
先假设有6个矩形框,根据分类器类别分类概率做排序,从小到大分别属于车辆的概率分别为A<B<C<D<E<F。

  • (1) 从最大概率矩形框F开始,分别判断A、B、C、D、E与F的重叠度IOU是否大于某个设定的阈值;

  • (2) 假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。

  • (3) 从剩下的矩形框A、C、E中,选择概率最大的E,然后判断A、C与E的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。

  • (4) 重复这个过程,找到所有被保留下来的矩形框。


NMS存在的问题

优于NMS中的阈值是通过人工指定的固定超参数。因此不可避免的存在,适用范围有限的情况。
例如在目标检测中,如果两个人靠得很近,将很难确定NMS的阈值,太大则会导致误检多,太小导致漏检多。


参考文章

目标检测中NMS(非极大抑制)的概念理解——对于yolo中的NMS解释的很仔细且清楚,说明了NMS不仅用于在同类别内的挑选极大值(确定目标框),也用于分类中挑选极大值(确定类别)
NMS(非极大值抑制)——这篇博客对于NMS的过程解释的挺清楚的,但缺少理论介绍。
NMS(非极大值抑制)算法详解与示例——这篇博客给出了opencv、yolo、pcl中的代码例子,但是缺少解释。
非极大值抑制(non-maximum suppression)的理解——这篇博客对于NMS的解释很清楚,所举的例子也很恰当。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁博特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值