橦言无忌

一个不想改变世界的程序媛

nms的原理和作用

前言

nms的原理,应用和发展方向

尤其在anchor based中用得多~

1,作用和原理

  • 作用
    本质是搜索局部极大值,抑制非极大值元素。

  • 原理
    NMS为非极大值抑制,用来抑制检测时冗余的框。

2,算法流程为

  • 1.对所有预测框的置信度降序排序
  • 2.选出置信度最高的预测框,确认其为正确预测,并计算他与其他预测框的IOU
  • 3.根据2中计算的IOU去除重叠度高的,IOU>threshold阈值就删除
  • 4.剩下的预测框返回第1步,直到没有剩下的为止

注意:
NMS一次处理一个类别,如果有N个类别,NMS就需要执行N次。

3,待改进问题?

假设两个目标靠的很近,则会识别成一个bbox,会有什么问题,怎么解决?

当两个目标靠的非常近时,置信度低的会被置信度高的框抑制掉,从而两个目标靠的非常近时会被识别成一个bbox。为了解决这个问题,可以使用softNMS。

softNMS基本思想:用稍低一点的分数来代替原有的分数,而不是直接置零)

4,发展新动向?

// 代码折叠