前言
soft-nms: Improving Object Detection With One Line of Code 发表在ICCV 2017,在写本文之前的引用量为285。
参考内容如下:
文章内容
1. NMS存在什么问题?
从图1可以看出,检测算法本来检测到两个框,但是经过传统的NMS处理后,会把较低置信度的绿色框过滤掉,导致只检测到一个目标,降低了检测的召回率。
会发现,NMS对bbx的处理太过简单粗暴,直接把跟置信度得分最大的box的IOU大于某个阀值直接置为零;
作者便想到,不如做平滑处理,将与置信度得分最大的bbx的IOU更大的的得分设置为更小的值,IOU更小的得分设置为更多大的值。
复习召回率
真正例/真阳性(True Positive, TP):指被分类器正确分类的正元组。令TP为真正例的个数。
真负例/真阴性(True Negative, TN):指被分类器正确分类的负元组。令TN为真负例的个数。
假正例/假阳性(False Positive, FP):指被分类器错误标记为正元组的负元组。令FP为假正例的个数。
假负例/假阴性(False Negative, FN):指被分类器错误标记为负元组的正元组。令FN为假负例的个数。
召回率(recall) = TP/(TP+FN)
精确率(precision) = TP/(TP+FP)
2. Soft-NMS算法
经以上思路 ,Soft-NMS算法的思路如下:
接下来就是怎么实现这个函数,实现IOU大的得分小,IOU小的得分大。
原始的NMS函数:
修改后的Soft-NMS:
但是上述函数是一个不连续的函数,无法直接求导,所以作者又将上式改变为:
3. 实验结果
4. 实战效果
目标检测结果:
总结
本文回溯了NMS到Soft-NMS的改进,首先NMS的操作对与一些特定目标的检测太过简单粗暴,所以作者想到了平滑处理的思想,但是一开始的得到的递减函数是一个不连续的函数,无法进行求导,所以作者又借鉴了常用的减函数的常用公式,得到了最后的Soft-NMS。
PS:
在实战过程中,有些人指出对于非密集数据集,Soft-NMS并不能带来提升,反而会使效果变得更差。
另外,Soft-NMS使用不当,会导致时间开销的增加。