前言
《Soft-NMS – Improving Object Detection With One Line of Code》发表于2017年ICCV
资源
论文下载
论文题目及作者
摘要
非最大抑制是对象检测流程的一个组成部分。首先,它根据分数对所有检测框进行排序。选择具有最大得分的检测框M,并且抑制与M有显著重叠(使用预定义阈值)的所有其他检测框。根据该算法的设计,如果一个对象位于预定义的重叠阈值内,它将被丢弃。为此,我们提出了Soft-NMS算法,该算法将所有其他对象的检测分数衰减为它们与M的重叠的连续函数。在这个过程中,没有目标被消除。Soft-NMS在标准数据集上对于coco-style的mAP指标获得了一致的提高,比如PASCAL VOC 2007数据集(R-FCN和fast-RCNN均为1.7%)和MS-COCO数据集(R-FCN为1.3%,fast-RCNN为1.1%),只需更改NMS算法,无需任何额外的超参数。使用Deformable-RFCN,Soft-NMS在最先进的目标检测的同一模型中从39.8%提高到40.9%。此外,Soft-NMS的计算复杂度与传统NMS相同,因此可以有效地实现。由于Soft-NMS不需要任何额外的训练,并且易于实现,它可以很容易地集成到任何对象检测流程。Soft-NMS的代码可以在http://bit.ly/2nJLNMu上公开获得。
1.介绍
目标检测是计算机视觉中的一个基本问题,在这个问题中,算法为指定的目标类别生成Bounding Boxes,并为它们分配分类分数。它在自动驾驶[6,9]、视频/图像索引[28,22]、监控[2,11]等方面有许多实际应用。因此,为对象检测流水线提出的任何新组件都不应该创建计算瓶颈,否则在实际实现中它将被方便地“忽略”。此外,如果引入了一个复杂的模块,需要对模型进行重新训练,从而导致性能略有提高,则该模块也将被忽略。然而,如果一个简单的模块可以提高性能,而不需要对现有模型进行任何重新训练,它将被广泛采用。为此,我们提出了一种Soft non-maximum suppression抑制算法,作为当前目标检测流水线中传统NMS算法的替代。传统的对象检测流程[4,8]采用基于多尺度滑动窗口的方法,该方法基于在每个窗口中计算的特征为每个类别分配前景/背景分数。然而,相邻窗口通常具有相关的分数(这增加了false positives),因此non-maximum suppression被用作获得最终检测的后处理步骤。随着深度学习的出现,滑动窗口方法被使用卷积神经网络的类别无关的生成region proposals所取代。在最先进的检测器中,这些proposals被输入到一个分类子网络中,该网络给它们指定特定类别的分数[16, 24].
另一个并行回归子网络改善了这些proposals的位置。这种改善过程改进了对象的定位,但也导致了混乱的检测,因为多个proposals经常回归到同一个感兴趣区域(RoI)。因此,即使是最先进的检测器,non-maximum suppression也被用来获得最终的检测集,因为它大大减少了false positives的数量。
Non-maximum suppression 从具有分数S的检测Boxes B列表开始。在使用最大得分M选择检测后,它将其从集合B中移除并将其追加到最终检测D。它还移除集合B中与M的重叠大于阈值Nt的任何框。对剩余的Boxes B重复这个过程。non-maximum suppression的一个主要问题是它将相邻检测的分数设置为零。因此,如果一个对象实际上出现在重叠阈值中,它将被丢弃,这将导致平均精度下降。然而,如果我们根据它与M的重叠来降低检测分数,它仍然会在排名列表中,尽管置信度较低。我们在图1中展示了问题的说明。
利用这种直觉,我们对传统的greedy NMS算法提出了一行简单的修改,其中,我们将检测分数降低,作为越来越重叠的函数,而不是将分数设置为零,如在NMS中。直观地,如果Bounding Boxes与M重叠非常高,则应分配非常低的分数,而如果它具有低重叠,则可以保持其原始检测分数。该Soft-NMS算法如图2所示。Soft-NMS导致在标准数据集(如PASCAL VOC和MSCOCO)上测量的物体状态检测器的多个重叠阈值的平均精度显著提高。由于Soft-NMS不需要任何额外的训练,并且易于实现,它可以很容易地集成到对象检测流程。
2.相关工作
近50年来,NMS一直是计算机视觉中许多检测算法的组成部分。它首先用于边缘检测技术[25]。随后,它被应用于多个任务,如特征点检测[19,12,20],人脸检测[29]和物体检测[4,8,10]。在边缘检测中,NMS进行边缘细化以消除虚假响应[25,1,31]。在特征点检测器[12]中,NMS在执行局部阈值化以获得独特的特征点检测方面是有效的。在人脸检测[29]中,通过使用重叠标准将边界框划分成不相交的子集来执行NMS。最终检测是通过对集合中检测boxes的坐标求平均值而获得的。对于人体检测,Dalal和Triggs [4]证明了一种greedy NMS算法,其中选择具有最大检测分数的Bounding Boxes,并使用预定义的重叠阈值来抑制其相邻的Bounding Boxes,与用于人脸检测的方法相比提高了性能[29]。从那时起,greedy NMS算法就成了物体检测中事实上的算法[8,10,24,16]。
令人惊讶的是,检测流程的这一部分十多年来一直未被触及。当平均精度(AP)用作评估指标时,greedy NMS仍然获得最佳性能,因此被用于最先进的检测器[24,16]。已经提出了一些基于学习的方法作为greedy NMS的替代,这些方法对于对象类检测获得了良好的性能[5,26,21]。例如,[26]首先计算每对检测boxes之间的重叠。然后,它执行相似性传播聚类,为每个代表最终检测框的聚类选择样本。该算法的多类版本在[21]提出。然而,对象类检测是一个不同的问题,其中每个图像同时评估所有类的对象实例。因此,我们需要为所有类选择一个阈值,并生成一组固定的框。由于不同的阈值可能适用于不同的应用,在一般对象检测中,平均精度是使用特定类别中所有对象实例的排序列表来计算的。因此,greedy NMS对于这些算法在一般的对象检测指标表现良好。
在另一项工作中,为了检测显著对象,提出了一种proposals子集优化算法[30],作为greedy NMS的替代。它执行基于MAP的子集优化,以共同优化检测窗口的数量和位置。在显著目标检测中,该算法预期只找到显著目标,而不是所有目标。因此,这个问题也不同于一般的对象检测,并且当测量对象检测度量的性能时,greedy NMS表现良好。对于像行人检测这样的特殊情况,提出了一种二次无约束二进制优化(QUBO)解决方案,该方案使用检测分数作为一元潜在值,使用检测之间的重叠作为成对潜在值来获得检测盒的最优子集[27]。像greedy NMS一样,QUBO也应用硬阈值来抑制检测boxes,这与Soft-NMS不同。在另一个基于学习的行人检测框架中,确定点过程与个体预测分数相结合,以优化选择最终检测[15]。据我们所知,对于通用对象检测,greedy NMS仍然是挑战物体检测数据集的最强大的基础,如Pascal VOC和MS-CoCo。
3.背景
我们简要介绍了本节中最先进的对象检测器中使用的对象检测流程。在推理期间,对象检测网络使用深卷积神经网络(CNN)在图像上执行一系列卷积操作。网络在层L的两个分支中分为两个分支,一个分支生成region proposals,而另一个分支通过汇集由proposal网络生成的ROI内的卷积特征来执行分类和回归。该proposal网络生成用于在卷积feature map中的每个像素处放置的多个尺度和纵横比的anchor box的分类分数和回归偏移。然后,它对这些anchor boxes进行排列,并选择添加到的top K(≈6000)anchor,以便增加Bounding Box回归偏移以获得每个anchor的图像水平坐标。Greedy non-maximum suppression应用于最终产生region proposal的top K anchor。
分类网络为proposal网络生成的每个proposal生成分类和回归分数。由于网络中没有强制它为一个对象生成唯一RoI的约束,多个proposal可能对应于同一个对象。因此,除了第一个正确的Bounding Box,同一对象上的所有其他boxes都会产生false positives。为了缓解这个问题,对每个类别的检测box独立地执行non-maximum suppression,具有指定的重叠阈值。因为检测的数量通常很少,并且可以通过修剪低于非常小的阈值的检测来进一步减少,所以在这个阶段应用non-maximum suppression在计算上并不昂贵。我们在对象检测流程中提出了一种在这种non-maximum suppression算法中的替代方法。物体检测流程的概述如图3所示。
4.Soft-NMS
当前检测评估标准强调精确定位,并在多个重叠阈值下测量检测框的平均精度(范围为0.5到0.95)。因此,当对true positive的评估期间的重叠标准是0.7时,施加具有低阈值的NMS可以导致平均精度平均精度下降(从这里开始,我们将检测评估阈值作为OtO_tOt?的检测评估阈值)。这是因为,可以有一个检测Box bib_ibi?,它非常接近物体(0.7重叠内),但是得分略低于M(M没有覆盖物体),因此bib_ibi?低于NtN_tNt?被抑制。随着重叠阈值标准增加,这种情况的可能性会增加。因此,抑制了具有低NtN_tNt?的所有附近检测box,增加丢失率。此外,当OtO_tOt?更低时,使用一个高NtN_tNt?,如0.7,会增加false positives 并且会因此降低在多个阈值上的平均精度。False positives的增长远高于这种情况的true positives的增长因为对象的数量通常比探测器生成的RoI数量小得多。因此,使用高NMS阈值也不是最佳的。
为了克服这些困难,我们更详细地重新审视了NMS算法。NMS算法中的修剪步骤可以作为重新评分函数写入如下,
因此,NMS设置了硬阈值,同时决定应该保存或从M的邻域中移除。假设,相反,我们衰减了一个与M具有高重叠box bib_ibi?的分类得分,而不是完全抑制它。如果bib_ibi?包含了一个未被M覆盖的对象,这在一个低的OtO_tOt?不会导致丢失。然而,如果bib_ibi?不覆盖任何其他对象(而M覆盖一个对象),并且即使在衰减其分数之后,它仍然排在true detection之上,它仍然会产生false positive。因此,NMS应考虑以下条件:
- 相邻检测的得分应该降低到这样的程度,即它们增加false positives率的可能性较小,同时在检测的排位列表中高于明显的false positives。
- 当在高重叠阈值OtO_tOt?下执行评估时,用低NMS阈值完全去除相邻检测将是次优的,并且会增加漏检率。(博主解释:用高OtO_tOt?筛选正负样本,用低NtN_tNt?对挑选的正负样本去除重叠,高重叠阈值OtO_tOt?筛选之后保留了和Ground Truth重叠较多的bounding boxes,而在用低NtN_tNt?阈值去执行NMS时,保留下来的bounding boxes重叠性很高,大部分都大于低NtN_tNt?这个阈值,很多bounding boxes会给筛掉,丢失了很多正样本,增加漏检率)
- 在使用高NMS阈值时,在一系列重叠阈值OtO_tOt?上测量的平均精度会降低。
我们通过第6.3节中的实验评估这些条件。
Soft-NMS的重新评分函数:衰减与M有重叠的其他检测boxes的分数似乎是改善NMS的一个有希望的方法。同样清楚的是,与M具有更高重叠的检测boxes的分数应该衰减得更多,因为它们具有更高的false positives可能性。因此,我们建议使用以下规则更新修剪步骤,
上述函数将衰减高于阈值NtN_tNt?的检测分数,作为与M重叠的线性函数。因此,远离M的检测boxes不会受到影响,而非常靠近的检测boxes将被分配更大的惩罚。
然而,就重叠而言,它不是连续的,当达到NMS阈值NtN_tNt?时,会应用快速的惩罚。如果惩罚函数是连续的,这将是理想的,否则它可能导致检测的排位列表的突然变化。当没有重叠时,连续惩罚函数应该没有惩罚,而在高重叠时,应该有非常高的惩罚。此外,当重叠较低时,它应该逐渐增加惩罚,因为M不应该影响与其重叠非常低的盒子的分数。然而,当box bib_ibi?和M的重叠接近1时,bib_ibi?应该被大力度地惩罚。考虑到这一点,我们建议用高斯罚函数更新修剪步骤,如下所示,
该更新规则应用于每次迭代,并且所有剩余检测框的分数都被更新。
图2正式描述了Soft-NMS算法,其中f(iou(M,bi))f(iou(M,b_i))f(iou(M,bi?))是基于重叠的加权函数。Soft-NMS中每一步的计算复杂度为O(N),其中N是检测框的数量。这是因为更新了与M重叠的所有检测框的分数。因此,对于N个检测框,Soft-NMS的计算复杂度为O(N2N^2N2),与传统的greedy NMS相同。
由于NMS没有应用于所有的检测框(在每次迭代中具有最小阈值的框被修剪掉),所以该步骤在计算代价上并不昂贵,因此不会影响当前检测器的运行时间。
请注意,Soft-NMS也是一个贪心算法,并没有找到检测框的全局最优重新评分。检测盒的重新评分是以贪心的方式执行的,因此那些具有高局部评分的检测不会被抑制。然而,Soft-NMS是non-maximum suppression的广义版本,而传统的NMS是具有不连续二元加权函数的non-maximum suppression的特例。除了提出的两个函数之外,其他具有更多参数的函数也可以用Soft-NMS来探索,其考虑了重叠和检测分数。例如,可以使用像Gompertz函数这样的广义逻辑函数的实例,但是这样的函数会增加超参数的数量。
5.数据集和评估
我们在两个数据集上进行实验,PASCAL VOC [7]和MS-COCO [17]。Pascal数据集有20个对象类别,而MS-COCO数据集有80个对象类别。我们选择VOC 2007测试部分来衡量性能。对于MS-COCO数据集,灵敏度分析是在一组公开的5000幅图像上进行的。我们还给出了在由20288幅图像组成的MS-COCO数据集上的test-dev部分的结果
为了评估我们的方法,我们用三种最先进的探测器进行了实验,即fast-RCNN[24]、RFCN [16]和Deformable-RFCN。对于PASCAL数据集,我们选择了作者提供的公开可用的预训练模型。Faster-RCNN探测器是在VOC 2007训练集上训练的,而R-FCN探测器是咋子VOC 2007和2012上训练的。对于MS-COCO,我们也使用Faster-RCNN的公共可用模型。然而,由于没有在MS-COCO上为R-FCN训练的公开可用的模型,我们在Caffe [14]中从ResNet-101 CNN架构[13]开始训练我们自己的模型。对于RPN anchor的5个尺度,使用简单的修改,最小图像尺寸800,每个minibatch16幅图像并且每副图像使用256个ROIs。培训并行于8个GPU。请注意,我们的实现在不使用多尺度训练或测试的情况下,获得了比[16]中报告的精度高1.9%的精度。因此,对于R-FCN对MS-COCO,这是一个强有力的baseline。这两个检测器都使用0.3的默认NMS阈值。在灵敏度分析部分,我们还改变了这个参数并显示了结果。我们还用同样的设置训练了deformable R-FCN。在10e-4的阈值下,使用4个CPU线程,对于80个类,每个图像需要0.01秒。每次迭代后,低于阈值的检测被丢弃。这减少了计算时间。在10e-2下,单核运行时间为0.005秒。我们在MS-COCO上将每个图像的最大检测数设置为400,评估server选择每个类别的前100个检测来生成指标(我们确认COCO评估server直到2017年6月才选择每个图像的前100个评分检测)。将最大检测设置为100会将coco-style的AP减少0.1。
6.实验
在本节中,我们展示了比较结果,并进行灵敏度分析,以显示Soft-NMS与传统NMS相比的鲁棒性。我们还进行了具体的实验,以了解Soft-NMS为什么以及在哪里比传统的NMS表现得更好。
6.1.结果
在表1中,我们将R-FCN和fast-RCNN与传统的non-maximum suppression 和Soft-NMS进行了比较。使用线性加权函数时,我们将NtN_tNt?设置为0.3,使用高斯加权函数时,将σ\sigmaσ设置为0.5。很明显,Soft-NMS(使用高斯和线性加权函数)在所有情况下都会提高性能,尤其是在多个重叠阈值下计算AP并进行平均时。例如,对于R-FCN和fast-RCNN,我们分别获得了1.3%和1.1%的改进,这对于MS-COCO数据集是显著的。请注意,我们仅通过改变NMS算法就获得了这种改进,因此它可以很容易地应用于多个检测器,并且变化很小。我们在PASCAL VOC 2007测试集上执行相同的实验,如表1所示。我们还报告了像MS-COCO这样的多个重叠阈值的平均精度。即使在PASCAL VOC 2007,Soft-NMS获得了1.7%的改善,无论是更快的RCNN和R-FCN。对于SSD[18]和YOLOv2 [23]等not proposal探测器,通过线性函数,Soft-NMS仅获得0.5%的改善。这是因为基于proposal的检测器具有更高的召回率,因此Soft-NMS更有潜力在更高的OtO_tOt?下提高召回率。
从这里开始,在所有实验中,当我们提到Soft-NMS时,它使用高斯加权函数。在图6中,我们还显示了每类在MS-COCO上的改进。有趣的是,Soft-NMS应用于R-FCN时,能使斑马、长颈鹿、绵羊、大象、马等动物的最高性能提高3-6%,而烤面包机、运动球、吹风机等不太可能同时出现在同一幅图像中的物体的性能几乎没有提高。
6.2.灵敏度分析
Soft-NMS具有σ参数,传统NMS具有重叠阈值参数NtN_tNt?。我们改变这些参数,并在每个检测器的MS-COCO集的minival集上测量平均精度,见图4。请注意,AP稳定在0.3到0.6之间,并且对于两个检测器而言,都显著下降到该范围之外。在这个范围内,传统NMS的AP变化约为0.25%。从0.1到0.7之间,Soft-NMS获得了比NMS更好的表现。它的性能稳定在0.4到0.7之间,即使在我们在coco-minival集上选择的最佳NMS阈值下,每个检测器的性能也提高了1%。在所有实验中,我们将σ设置为0.5,尽管σ值为0.6似乎在coco minival集上有更好的性能。这是因为我们稍后进行了灵敏度分析实验,0.1%的差异并不显著。
6.3.Soft-NMS什么时候效果更好?
当Soft-NMS获得显著的性能提升时,仅仅是平均精度并不能清楚地向我们解释。因此,当在不同重叠阈值下测量时,我们给出了NMS和Spft-NMS的平均精度。我们还改变了NMS和Soft-NMS超参数,以了解这两种算法的特点。从表3中,我们可以推断平均精度随着NMS阈值的增加而降低。尽管对于大OtO_tOt?来说,高NtN_tNt?的性能比低NtN_tNt?稍好,但当使用低NtN_tNt?时,AP不会显著下降。
另一方面,使用高NtN_tNt?会导致在低OtO_tOt?的AP显著下降,并且因此,当AP是多阈值取平均时,我们观察到性能下降。因此,使用更高的NtN_tNt?获得更好的性能并不能推广到低OtO_tOt?的传统NMS。然而,当我们改变Soft-NMS的σ时,我们观察到一个不同的特征。表3显示,即使我们在更高的OtO_tOt?下获得更好的性能,在更低的OtO_tOt?下性能也不会下降。此外,我们观察到,Soft-NMS表现明显好于传统NMS(2%),而不管在高OtO_tOt?上所选的NtN_tNt?值如何。这种比较非常清楚地表明,在所有参数设置中,Soft-NMS的最佳σ参数的性能优于传统NMS中的硬阈值NtN_tNt?。此外,当对所有阈值的性能进行平均时,由于Soft-NMS中的单个参数设置在多个OtO_tOt?值下运行良好,因此整体性能增益会被放大。不出所料,较低的σ值在较低OtO_tOt?时表现更好,较高的σ值在较高OtO_tOt?时表现更好。与NMS不同,其中高NtN_tNt?导致很少的AP改善,高σ\sigmaσ在高OtO_tOt?下导致显著的AP改善.因此,可以使用较大的σ\sigmaσ去提高探测器的性能,以获得更好的本地化,这不是NMS的情况,当较大的NtN_tNt?获得很少的改进。
精确率vs召回率 最后,我们希望在不同OtO_tOt?下知道在什么召回率值下是Soft-NMS的性能是比NMS更好的。请注意,我们重新评分检测分数并将其分配更低的分数,因此我们不会预计在较低召回时会改善精度。然而,随着总召回率的提高,Soft-NMS在精度方面取得了显著的进步。这是因为,传统的NMS给所有与M重叠大于NtN_tNt?的boxes打零分。因此,许多框被遗漏,因此在较高的召回值下精度不会增加。Soft-NMS重新评分相邻的boxes,而不是完全压制它们,这导致在较高的召回值下精度的提高。此外,Soft-NMS获得了显著的改善,即使是较低的召回值在较高的OtO_tOt?,因为未丢失事件更有可能发生在这种情况下。
6.4.定性结果
我们在图7中显示了一些定性结果,使用0.45的检测阈值来检测来自COCO验证集的图像。FCN探测器用于产生探测。有趣的是,当坏检测(false positives)与好检测(true positives)有小重叠时,以及当它们与好检测有低重叠时,Soft-NMS有所帮助。例如,在街道图像(8号)中,跨越多人的大的宽边界框被抑制,因为它与分数比它高的多个检测框有小的重叠。因此,它的分数被多次降低,因此它被抑制。我们在9号图像中观察到类似的行为。在海滩图像(第1名)中,女子手提包附近的较大边界框的得分被抑制在0.45以下。我们还看到,厨房图像(4号)中碗附近的false positives被抑制。在其他情况下,像斑马、马和长颈鹿的图像(图像2、5、7和13),检测框会被NMS抑制,而Soft-NMS会为相邻的框分配稍低的分数因此我们能够检测到高于0.45检测阈值的false positives。