论文: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中对这个问题进行了说明。

由此本文对传统的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所示。

方法

目前的检测评估标准强调精确定位,并在多个重叠阈值(从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),

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

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

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

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

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

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

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

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

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函数,但这些函数会增加超参数的数量。

Soft NMS论文笔记相关推荐

  1. Soft NMS算法笔记

    原博客地址:https://blog.csdn.net/u014380165/article/details/79502197#comments 提出问题 如下图,测算法本来应该输出两个框,但是传统的 ...

  2. Soft Actor-Critic 论文笔记

    无模型深度强化学习算法(Model-free DRL)有两个主要缺点: 1.非常高的样本复杂性(需要与环境进行大量交互产生大量样本) 2.脆弱的收敛性(它的收敛性受超参数影响严重:学习率,探索常量等等 ...

  3. Soft NMS+Softer NMS+KL Loss

    论文1: Soft-NMS – Improving Object Detection With One Line of Code (ICCV2017) 速达>> 论文2: Softer-N ...

  4. Softer-NMS 论文笔记

    文章目录 背景 创新点 Bounding Box Regression with KL Loss Softer-NMS 实验结果 参考 <Softer-NMS: Rethinking Bound ...

  5. 目标检测中的NMS,soft NMS,softer NMS,Weighted Boxes Fusion

    NMS 非最大值抑制算法,诞生至少50年了. 在经典的两阶段目标检测算法中,为了提高对于目标的召回率,在anchor阶段会生成密密麻麻的anchor框. 所以在后处理的时候,会存在着很多冗余框对应着同 ...

  6. 论文笔记(二十二):Soft Tracking Using Contacts for Cluttered Objects to Perform Blind Object Retrieval

    Soft Tracking Using Contacts for Cluttered Objects to Perform Blind Object Retrieval 文章概括 摘要 1. 介绍 2 ...

  7. NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing论文笔记

    NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing论文笔记 看论文的笔记,欢迎 ...

  8. 论文笔记 | 谷歌 Soft Prompt Learning ,Prefix-Tuning的 -> soft promt -> p tuning v2

    论文笔记 | 谷歌 Soft Prompt Learning ptuning -> Prefix-Tuning -> soft promt -> p tuning v2 " ...

  9. 论文笔记:Distilling the Knowledge

    原文:Distilling the Knowledge in a Neural Network Distilling the Knowledge 1.四个问题 要解决什么问题? 神经网络压缩. 我们都 ...

最新文章

  1. 常考数据结构与算法:合并k个已排序的链表
  2. 内建函数对象(STL)
  3. JS 中 indexOf 的用户及注意事项
  4. 测试过程中常用的linux命令之【查找指定的文件内容】
  5. 事件映射 消息映射_映射幻影收费站
  6. 梁鑫:美股交易架构实践
  7. shell调用hive客户端导致nohup后台进程stopped
  8. 宁波python学习_python学习第二十天
  9. 16 树的子结构(这题多复习)
  10. 值得推荐的win10动态壁纸软件
  11. [密码学]如何生成PKCS8密钥
  12. 两强格局初定,网易云能拿什么跟腾讯音乐打
  13. Adobe软件中PS、PR、AE、AI软件如何安装【附软件下载】
  14. Rsoft光波导软件基于七芯光纤波导耦合器模拟
  15. vb计算机二级操作题考试试题,2017全国计算机二级VB考试操作题与答案
  16. 事大发了!小助理告诉我:小伙伴21天斩获字节offer的关键竟是这份面试题!
  17. 前端开发:使用JS正则表达式校验邮箱和手机号的方法,安卓面试题最新2020
  18. android自适应屏幕方向,Android 屏幕自适应方向尺寸与分辨率-Fun言
  19. 码流 | 码率 | 比特率 | 帧速率 | 分辨率 | 高清的区别
  20. 在几何画板中怎样添加链接

热门文章

  1. R语言-单一变量分析
  2. Android-apk文件反编译
  3. slice,Array.prototype.slice,Array.protyotype.slice.call
  4. SSL 1108——【USACO 2.1】海明码(DFS)
  5. 再回首Java第十七天
  6. C#0008--制作闪烁的窗体
  7. 搭建内网yum服务器
  8. BitmapFactory.Options详解
  9. 自步对比学习: 充分挖掘无监督学习样本
  10. ICCV 2019 | 视频综合理解:行为识别、场景识别以及视频综述