NMS与Soft NMS

1.NMS
非最大抑制(Non-maximum suppression, NMS)是物体检测流程中重要的组成部分。NMS算法的大致思想:对于有重叠的候选框:若大于规定阈值(某一提前设定的置信度)则删除,低于阈值的保留。对于无重叠的候选框:都保留。根据这个设计,如果一个物体处于预设的重叠阈值之内,可能会导致检测不到该待检测物体。即当两个目标框接近时,分数更低的框就会因为与之重叠面积过大而被删掉。

举个例子,对于下图:
先假设有6个输出的矩形框,根据分类器类别分类概率做排序,从小到大分别属于车辆的概率分别为A、B、C、D、E、F。
(1)从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;
(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
就这样一直重复,找到所有被保留下来的矩形框。最终留下了C、E、F三个。
NMS与Soft NMS
这种贪心式方法存在如下问题: 如果同一类别的2个物体距离较近,按照传统的NMS进行处理,得分稍低的物体会因为与另外一个重叠面积过大而被删掉。另一方面,NMS的阈值也不太容易确定,设小了会漏检,设置过高又容易增大误检。

2.Soft-NMS
思路:不要粗鲁地删除所有IOU大于阈值的框,而是降低其置信度,Soft NMS尤其对密集物体检测的检测效果有一定的提升作用.
Soft-NMS大致思路为:M为当前得分最高框,bi 为待处理框,bi 和M的IOU越大,bi 的得分si 就下降的越厉害。
伪代码如下:
NMS与Soft NMS
NMS中:
NMS与Soft NMS
Soft-NMS的改进有两种形式,:
(1)线性加权:
NMS与Soft NMS
(2)高斯加权:
NMS与Soft NMS
优势
它仅需要对传统的NMS算法进行简单的改动且不增额外的参数。Soft-NMS算法在标准数据集PASCAL VOC2007(较R-FCN和Faster-RCNN提升1.7%)和MS-COCO(较R-FCN提升1.3%,较Faster-RCNN提升1.1%)上均有提升。
Soft-NMS具有与传统NMS相同的算法复杂度,使用高效。
Soft-NMS不需要额外的训练,并易于实现,它可以轻松的被集成到任何物体检测流程中。

样例:
比如一张人脸上有3个重叠的bounding box, 置信度分别为0.9, 0.7, 0.85 。选择得分最高的建议框,经过第一次处理过后,得分变成了0.9, 065, 0.55(此时将得分最高的保存在D中)。这时候再选择第二个bounding box作为得分最高的,处理后置信度分别为0.65, 0.45(这时候3个框也都还在),最后选择第三个,处理后得分不改变。最终经过soft-nms抑制后的三个框的置信度分别为0.9, 0.65, 0.45。最后设置阈值,将得分si小于阈值的去掉。

Soft NMS仍然有问题:其阈值仍然需要手工设定。

参考:
https://zhuanlan.zhihu.com/p/42018282