原博客地址:https://blog.csdn.net/u014380165/article/details/79502197#comments

提出问题

如下图,测算法本来应该输出两个框,但是传统的NMS算法可能会把score较低的绿框过滤掉(如果绿框和红框的IOU大于设定的阈值就会被过滤掉),导致只检测出一个object(一个马),显然这样object的recall就比较低了。 

Soft NMS算法笔记

可以看出NMS算法是略显粗暴(hard),因为NMS直接将和得分最大的box的IOU大于某个阈值的box的得分置零,那么有没有soft一点的方法呢(不将它直接变为0,而是将其变小一点)?这就是本文提出Soft NMS。

Soft NMS

具体以什么方法将其变小呢,如果是传统的NMS操作,那么box bi和M的IOU值大于阈值Nt,那么就去除该box,及这个box bi的分数变为0;如果是Soft NMS,则对于box bi也是先计算其和M的IOU,然后该IOU值作为函数f()的输入,最后和box bi的score si相乘作为最后该box bi的score

NMS算法可以用下面的式子表示: ,其中Soft NMS算法笔记就是当前box bi 的score

Soft NMS算法笔记
为了改变NMS这种hard threshold做法,并遵循iou越大,得分越低的原则(iou越大,越有可能是false positive),自然而然想到可以用下面这个公式来表示Soft NMS: 

Soft NMS算法笔记
但是上面这个公式是不连续的,这样会导致box集合中的score出现断层,因此就有了下面这个Soft NMS式子(也是大部分实验中采用的式子): 

Soft NMS算法笔记

相关文章:

  • 2021-06-26
  • 2021-11-01
  • 2021-04-11
  • 2021-10-14
  • 2021-07-15
  • 2021-08-20
  • 2021-07-25
猜你喜欢
  • 2021-12-08
  • 2021-08-09
  • 2022-12-23
  • 2021-07-13
  • 2021-08-03
相关资源
相似解决方案