参考知乎:
https://zhuanlan.zhihu.com/p/41046620
1.置信度阈值:
假如还检测出了3号框,而我们的最终目标是检测出1号和2号框,并且剔除3号框,原始的nms只会检测出一个1号框并剔除2号框和3号框,而softnms算法可以对1、2、3号检测狂进行置信度排序,可以知道这三个框的置信度从大到小的顺序依次为:1-》2-》3(由于是使用了惩罚,IoU越大,得分越低,所有可以获得这种大小关系),如果我们再选择了合适的置信度阈值,就可以保留1号和2号,同时剔除3号,实现我们的功能。
但是,这里也有一个问题就是置信度的阈值如何选择,作者在这里依然使用手工设置的值,依然存在很大的局限性,所以该算法依然存在改进的空间。
2. 衰减f(iou(M,bi))权重函数的形式:
原来的NMS可以描述如下:将IoU大于阈值的窗口的得分全部置为0。
Soft-NMS的改进有两种形式,一种是线性加权的:
一种是高斯加权的:
实际应用测试结果:
置信度阈值=0.0001
soft-NMS在人体检测上FPPI为1时提升1个点,FPPI为0.05没有结果不变
置信度阈值=0.1
soft-NMS在人体检测上FPPI为1时提升1,FPPI为0.05掉点。受到测试集合不干净影响。
NMS方式 | FPPI@0.05 | FPPI@1 | 备注 | ||
precision | recall | precision | recall | ||
---|---|---|---|---|---|
原始NMS | 0.99715 | 0.58334 | 0.96213 | 0.84840 | |
softNMS-线性加权 | 0.99713 | 0.58005 | 0.96249 | 0.85694 | 置信阈值0.1 |
softNMS-高斯加权 | 0.99624 | 0.44168 | 0.96276 | 0.86333 | 置信阈值0.1 |