一、简介
NMS(Non Maximum Suppression),又名非极大值抑制,是目标检测框架中的后处理模块,主要用于删除高度冗余的bbox,无论是在Faster R-CNN还是SSD中都有应用,作用于提取的候选框上,来得到每一类目标置信度最高且无重叠的最终检测框输入到后面的网络中,能够有效地提升检测网络的准确率和速度。
但是传统的NMS存在一些局限性:
所以在这个基础上提出了一些改进版本的NMS模块,能够有效地解决这些问题,有Soft NMS和Fast NMS等。
二、传统NMS模块
其实特别简单,就是从所有proposals中先选出一个得分最高的proposal,然后计算剩余的proposals与这个得分最高proposal的IOU,高于一定的阈值的就直接舍去,这样就剩下了与被选中的proposal重叠区域不多的proposals,再重复这个操作就行。
三、Soft NMS
论文:Improving Object Detection With One Line of Code(CVPR2017)
https://arxiv.org/pdf/1704.04503.pdf
代码:https://github.com/bharatsingh430/soft-nms
提出的动机就是为了解决这个问题,将NMS算法中的直接舍去候选框改为降低候选框的置信度,从而再通过人为设置阈值来保留那些重叠面积大但不是属于同一个目标的框,原理如下图所示:
将传统方法的直接舍去改为将置信度乘以一个权重函数f,该权重函数与计算得到的iou相关,iou越高则对置信度的衰减越大,但不至于直接舍去,给了那些重叠区域大但是属于另一个目标的候选框一个机会。
改进效果:
如上图所示,可以检测出重叠区域很大的两个目标,所以提高了mAP,并且没有具有相同的算法复杂度,不会提高运算量。
改进细节:
权重函数一般有两种形式,线性加权和高斯加权
可能的提升:
最后仍需要人为设置阈值来进行筛选,是否可以将这个阈值也设置为动态的来得到更加优秀的性能。
四、Fast NMS
论文:YOLACT: Real-time Instance Segmentation
https://arxiv.org/abs/1904.02689
代码:https://github.com/dbolya/yolact
主要是为了解决速度问题,先给出效果:
?
可以看出无论是在YOLACT上还是在Mask上都有12ms的提升,提升很大,而且性能没有明显降低,是一个比较理想的tradeoff。
原理(论文原文):
个人理解:
原文:https://www.cnblogs.com/bupt213/p/11044136.html