Paper Reading Note
URL: https://arxiv.org/pdf/1704.04503
TL;DR
NMS是目标检测流程中重要的一部分,但当多个目标的overlap较大时,NMS算法会导致检测结果的丢失,针对这一问题,本论文提出了Soft-NMS算法,该算法不会把与最高分框overlap较大的检测框的score置0,而是使用一个与最高分框overlap的连续函数进行衰减。Soft-NMS相比常规的NMS只是做了一行code的修改,不需要其他任何额外的训练,因此可以很简单的结合到任何检测模型中,实际的实验也证明了Soft-NMS的确是有效的。
Dataset/Algorithm/Model/Experiment Detail
NMS存在的问题如图1所示,如果两个检测框的overlap超过了预设的NMS阈值,那么其中有一个框的score会被设为0(图中绿框),导致recall降低,作者因此提出了一种更加soft的方式,将其score从原来的0.8降低到0.4,这样绿框就会以一个更低的分数存在于检测框的list中
根据这种降低与最高分框overlap大于阈值的思想,作者提出了Soft-NMS的算法,如图2所示,其和NMS唯一的区别就在于对那些overlap超过阈值的框的处理,NMS中直接把框和score丢弃,而Soft-NMS则是使用一个函数
f
f
f 来衰减当前框的分数,其输入为当前框与最高分框IoU
关于函数
f
f
f ,原始NMS设置了一个hard的阈值
N
t
N_t
Nt ,其score的更新可以用下面的公式表示:
对于该函数在Soft-NMS中的定义,作者采用了两种方法,第一种是使用线性函数,其不连续:
第二种则是使用高斯函数进行连续的定义:
后续的实验证明,这两种定义方式在最终的结果上基本没有差别
COCO和Pascal VOC上的结果如表1和表2所示,其中S-NMS后的G和L分别表示高斯以及线性函数,最终的结果在AP上确实较NMS有提升
Thoughts
思路比较简单直接,只需要在传统的NMS上稍作修改即可。但目前在实际使用上可能不太work,对于AP的提高主要集中在高recall的部分(如图5所示),在对Precision要求较高的场景下基本上提升不大