Soft NMS

时间:2024-03-16 19:56:36

昨天阿里一面,聊到了Soft NMS,回来记下:
这是ICCV2017的文章,改进NMS,论文链接:https://arxiv.org/abs/1704.04503 【Improving object detection with one line of code】

我们知道nms是用在目标检测中,去除重复框,降低误检率的。大致解释如下:
Soft NMS
可以看出,nms略显粗暴啊,因为他直接把和得分最高的box相交大于某个阈值的box置零了,所以就有了这样一个比较soft的算法。
SoftNMS的原理:用稍低一点的分数来代替原有的分数,而不是直接置为零,并且SoftNMS可以直接引入object detection中,不需要重新训练模型,因此这是该算法的一大优点。
下面是SoftNMS的伪代码:
Soft NMS
简单来说就是NMS在比较IOU后,直接将把与最大置信度重合高的box给扔掉了,而SoftNMS并没有直接扔掉,而是将和最大置信度重合的box的置信度值降低,IOU与置信度变化的关系由函数f()给出。

首先NMS算法可以用下面的式子表示:
Soft NMS
为了改变NMS这种hard threshold做法,并遵循IOU越大,得分越低的原则(IOU越大,越有可能是false positive),自然可以想到用下面这个公式来表示Soft NMS:
Soft NMS
但是上面这个公式是不连续的,这样会导致box集合中的score出现断层,因此就有了下面这个Soft NMS式子(也是大部分实验中采用的式子):
Soft NMS
这个式子可以满足:一个连续的惩罚函数应该对没有重叠的box不产生惩罚,而对重叠度高的产生高的惩罚。

https://blog.csdn.net/u014380165/article/details/79502197【参考博客】