昨天阿里一面,聊到了Soft NMS,回来记下:
这是ICCV2017的文章,改进NMS,论文链接:https://arxiv.org/abs/1704.04503 【Improving object detection with one line of code】
我们知道nms是用在目标检测中,去除重复框,降低误检率的。大致解释如下:
可以看出,nms略显粗暴啊,因为他直接把和得分最高的box相交大于某个阈值的box置零了,所以就有了这样一个比较soft的算法。
SoftNMS的原理:用稍低一点的分数来代替原有的分数,而不是直接置为零,并且SoftNMS可以直接引入object detection中,不需要重新训练模型,因此这是该算法的一大优点。
下面是SoftNMS的伪代码:
简单来说就是NMS在比较IOU后,直接将把与最大置信度重合高的box给扔掉了,而SoftNMS并没有直接扔掉,而是将和最大置信度重合的box的置信度值降低,IOU与置信度变化的关系由函数f()给出。
首先NMS算法可以用下面的式子表示: