Soft NMS论文笔记

论文:Improving Object Detection With One Line of Code. Navaneeth Bodla*, Bharat Singh*, Rama Chellappa, Larry S. Davis

 

摘要

NMS是目标检测管道中不可分割的一部分。首先,它根据置信度对所有检测的边界框进行排序。选中最大置信度的框M,抑制(剔除)其它与M有很大(预定义阈值)重叠的框。这个过程递归地应用到其余的框上。如果一个目标处于预定义的重叠阈值内(即重叠大于该阈值),就会导致漏检。换句话说,当两个目标靠的很近时,预测了两个边界框,置信度更低的框可能会被剔除,导致漏检。

为此,本文提出了一种算法Soft-NMS,它将所有其他目标的检测分数作为它们与M重叠的连续函数衰减。因此,在这个过程中不会消除任何目标。Soft-NMS在标准数据集上,如PASCAL VOC 2007 (R-FCN和Faster-RCNN均为1.7%)和MS-COCO (R-FCN为1.3%,Faster-RCNN为1.1%),只需改变NMS算法,而不需要任何额外的超参数,即可获得一致的改进。通过使用Deformable-RFCN, Soft-NMS在单个模型下将目标检测的精度从39.8%mAP提高到40.9%。此外,Soft NMS的计算复杂度与传统NMS相同,可以有效地实现soft NMS。由于Soft-NMS不需要任何额外的训练,而且易于实现,因此它可以很容易地集成到任何目标检测管道中。开源 http://bit.ly/2nJLNMu.

 

引言

目标检测是计算机视觉的一个基本问题,在这个问题中,一个算法为指定的目标类别生成边界框,并给每个预测的边界框一个类别置信度。目标检测在自动驾驶、视频/图像索引、监控等领域有许多实际应用。因此,任何为目标检测管道提出的新组件都不应该产生计算瓶颈,否则在实际实现中会很方便地“忽略”它。此外,如果引入了一个复杂的模块,需要对模型进行再训练,从而导致性能略有提高,也会被忽略。反之,如果一个简单的模块可以提高性能,而不需要对现有模型进行任何再训练,那么它就会被广泛采用。为此,本文提出了一种soft NMS(non-maximum suppression)算法,作为当前目标检测管道中传统NMS算法的替代。

传统的目标检测管道采用了一种基于多尺度滑动窗口的方法,根据每个窗口计算的特征为每个类分配前景/背景分数。然而,相邻的窗口通常有相关的分数(这增加了假阳率),因此NMS被用作一个后处理步骤,以获得最终的检测。随着深度学习的出现,滑动窗口方法被卷积神经网络生成的类别无关的候选区域生成算法取代。

在最先进的检测器中,这些候选框被输入到一个分类子网络中,该网络给它们指定类别的分数(或称为置信度)。另一个并行回归子网络细化了这些候选框的位置。这一细化过程修正了了目标的定位,但也会导致混乱的检测,因为多个候选框往往会被修正到到相同的感兴趣区域(RoI)。因此,即使在最先进的目标检测器中,NMS也被用于获得最后检测结果,因为它显著地减少了假阳(false positive,即误把背景区域当做目标区域)的数量。

设有一组检测框B,其分数为S。NMS首先选择分数最大的边界框M,将其从B中移除,并添加到最终检测框集合D中。删除B中与M重叠大于阈值Nt的框。

NMS的一个主要问题是它将相邻检测框(即重叠程度大于阈值)的分数设为零。因此,如果一个目标实际上存在于重叠阈值中,那么它就会被忽略,这将导致平均精度的下降。但是如果降低该重叠程度高的框的检测分数,且作为其与M重叠的函数,那么它仍然在B中,只是置信度降低了。在图1中对这个问题进行了说明。

图片1.jpg 

由此本文对传统的greedy NMS算法提出了single line修改,在该算法中,我们将检测分数作为重叠的递增函数来降低,而不是像在NMS中那样将检测分数设置为零。从直观上看,如果一个边界框与M有很高的重叠,则应该给它一个很低的分值,而如果它有很低的重叠,则可以保持它原来的检测分值。Soft-NMS算法如图2所示。Soft-NMS可以显著提高PASCAL-VOC和MS-COCO等标准数据集上的SOTA检测器在多个重叠阈值上测量的平均精度。由于Soft-NMS不需要任何额外的训练,而且易于实现,因此它可以很容易地集成到目标检测管道中。

 

 

相关工作

50年来,NMS一直是计算机视觉中许多检测算法的组成部分。它首先被用于边缘检测技术[25]。随后,它被应用于特征点检测[19,12,20]、人脸检测[29]、物体检测等多个任务中。在边缘检测中,NMS通过边缘细化来去除虚假响应[25,1,31]。在特征点检测器[12]中,NMS可以有效地进行局部阈值化以获得唯一的特征点检测。在人脸检测[29]中,NMS是通过重叠准则将边界框划分为不相交的子集来实现的。最后的检测是通过对集合中检测框的坐标取平均得到的。在人脸检测方面,Dalal和Triggs[4]证明了greedy NMS算法的性能优于用于人脸检测的方法,该算法选择了检测得分最高的包围框,并使用预定义的重叠阈值抑制其相邻框。从那时起,greedy NMS实际上已经成为目标检测中使用的算法。

令人惊讶的是,检测管道的这一组成部分十多年来一直未被触及。当mAP用于评估指标时Greedy NMS可以获得最佳性能,因此SOTA检测器中仍在使用。提出了几种基于学习的方法作为greedy NMS的替代方法,在目标类检测方面取得了良好的性能。

 

背景

目标检测模型中的分类网络为每个候选边界框分类,赋给每个类别的分数(置信度)。由于没有使模型为单个目标生成唯一的RoI的约束,因此可能会预测多个候选边界框对应于同一个目标。因此,除了第一个正确的边界框之外,同一目标上的所有其他框都将成为假阳结果。

为了解决这一问题,需要对每个类别的检测框分别执行NMS,并指定重叠阈值。由于检测结果的数量通常很小,并且可以通过修剪检测结果来进一步减少,当检测低于一个非常小的阈值时,在这个阶段应用NMS并不会带来计算上很大的开销。在目标检测过程中,我们提出了一种替代的NMS。目标检测管道概述如图3所示。

图片2.jpg 

 

 

方法

目前的检测评估标准强调精确定位,并在多个重叠阈值(从0.5 ~ 0.95)下测量检测边界框的平均精度。因为评估目标检测精度的时候,通常将与GT边界框的IoU大于某一阈值的预测的边界框作为正样本,因此正确需要设定一个判别阈值。若阈值是0.5,如果预测边界框与GT框的loU>0.5,则认为是真实的检测(true detection),否则认为是错误的检测(false detection)。

若使用阈值Nt较低(如0.3)的NMS,当设置的IoU评估判别阈值为0.7时(将记为Ot),会导致mAP下降。这是因为可能存在一个检测框bi,它非常接近一个目标(重叠大于0.7),但置信度略低于M (M没有覆盖这个目标),因此bi被一个低的Nt抑制。当Ot增加时,发生这种情况的可能性将增加。因此,抑制M中所有相邻的低Nt检测框会增加错误率。

此外,当Ot较低时,使用高的Nt(比如0.7)会增加假阳检测(false positive),从而降低mAP。在这种情况下,假阳结果的增加将远远高于真阳(true positive)结果的增加,因为目标的数量通常比检测器生成的ROI数量小得多。因此,使用较高的NMS阈值也不是最优的。

为了克服这些困难,我们更详细地回顾NMS算法。NMS算法中的剪枝步骤可以写成重评分函数(re-scoring function),

图片3.jpg 

因此,NMS在决定应该从M的相邻区域中保留什么或删除什么时,会设置一个硬性阈值。相反,假设去衰减与M有高度重叠的框bi的分类置信度分数,而不是直接删除它。如果bi中有M没有框住的目标,在较低的检测阈值下不会出现漏检。但是,如果bi不框任何目标(而M框里有一个目标),即使置信度衰减后它的排名高于评估判别阈值,它仍然会产生一个假阳结果。因此,NMS需要考虑以下条件:

Ø 降低相邻检测框的得分,使其增加假阳率的可能性较小,同时在排序检测框列表中高于明显的假阳检测。

Ø 用较低的NMS阈值剔除相邻框将是次优的,并且当在较高的评估重叠判据时会增加漏检率。

Ø 当使用较高的NMS阈值时,在很多评估重叠判据上的mAP将下降。

Soft-NMS重评分函数:衰减与M有重叠的其他检测框的分数似乎是改进NMS的一种有希望的方法。但是与M重叠程度较高的检测框的分数应该衰减得更多,因为它们假阳性的可能性更高。因此,本文提出使用以下规则更新剪枝步骤:

图片4.jpg 

上述函数将阈值Nt以上的检测框的得分衰减为与M重叠的线性函数。因此,距离M较远的检测框不会受到影响,距离M较近的检测框会受到较大的衰减(惩罚)。但是,框的重叠不是连续的,当达到NMS的阈值Nt时,会突然施加惩罚。惩罚函数最好是连续的,否则会导致排序好的检测框列表的突然改变。一个连续的惩罚函数在没有重叠的情况下应该没有惩罚,而在高重叠的情况下应该有很高的惩罚。另外,当重叠较低时,应该逐渐增加惩罚,因为M不应该影响与它重叠很低的检测框的得分。然而,当一个边界框biM的重叠接近于1时,bi应该被显著地惩罚。考虑到这一点,本文提出使用高斯惩罚函数更新剪枝步骤,如下:

图片5.jpg 

此更新规则应用于每次迭代,并更新所有剩余检测框的得分。

Soft-NMS算法形式化描述如图2所示,其中f(iou(M, bi))为基于重叠的加权函数。

图片6.jpg 

Soft-NMS每一步的计算复杂度为O(N),其中N为检测框数。这是因为所有与M重叠的检测框的分数都会更新。因此,对于N个检测盒,Soft-NMS的计算复杂度为O(N2),与传统的greedy-NMS相同。由于NMS并不是应用于所有的检测框(具有最小阈值的框在每次迭代中都被修剪),因此这个步骤不需要大量的计算,因此不会影响当前检测器的运行时间。

注意,Soft-NMS也是一种贪婪算法,并去找检测框的全局最优重评分。检测框的重评分(Re-scoring)被以贪婪的方式执行,因此那些有高的局部评分的检测框没有被抑制。However, Soft-NMS is a generalized version of non-maximum suppression and traditional NMS is a special case of it with a discontinuous binary weighting function.除了这两个本文提出的函数外,还可以使用考虑探索其他函数。例如,可以使用广义逻辑函数的实例,如Gompertz函数,但这些函数会增加超参数的数量。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


上一篇:
下一篇:

首页 所有文章 机器人 计算机视觉 自然语言处理 机器学习 编程随笔 关于