点击上方,选择星标置顶,不定期资源大放送

阅读大概需要10分钟

Follow小博主,每天更新前沿干货

作者:曲終人不散丶

知乎链接:https://zhuanlan.zhihu.com/p/151914931

本文已由作者授权转载,未经允许,不得二次转载。

【导读】众所周知,非极大值抑制NMS是目标检测常用的后处理算法,用于剔除冗余检测框,本文将对可以提升精度的各种NMS方法及其变体进行阶段性总结。

总体概要:

对NMS进行分类,大致可分为以下六种,这里是依据它们在各自论文中的核心论点进行分类,这些算法可以同时属于多种类别。

  1. 分类优先:传统NMS,Soft-NMS (ICCV 2017)

  2. 定位优先:IoU-Guided NMS (ECCV 2018)

  3. 加权平均:Weighted NMS (ICME Workshop 2017)

  4. 方差加权平均:Softer-NMS (CVPR 2019)

  5. 自适应阈值:Adaptive NMS (CVPR 2019)

  6. +中心点距离:DIoU-NMS (AAAI 2020)

分类优先

传统NMS有多个名称,据不完全统计可以被称为:Traditional / Original / Standard / Greedy NMS,为统一起见,下称Traditional NMS。

Traditional NMS算法是最为经典的版本,伪代码如下:

作为最为人所知晓的版本,Traditional NMS不仅有CPU版本,并且现已有GPU版本,GPU版本为Ross Girshick大神编写,俗称CUDA NMS。多个深度学习框架也已将CUDA NMS纳入,作为基本函数使用,如Pytorch在Torchvision 0.3中正式集成了CUDA NMS。

缺点:

  • 顺序处理的模式,计算IoU拖累了运算效率。

  • 剔除机制太严格,依据NMS阈值暴力剔除。

  • 阈值是经验选取的。

  • 评判标准是IoU,即只考虑两个框的重叠面积,这对描述box重叠关系或许不够全面。

Soft-NMS是Traditional NMS的推广,主要旨在缓解Traditional NMS的第二条缺点。

数学上看,Traditional NMS的剔除机制可视为

显然,对于IoU≥NMS阈值的相邻框,Traditional NMS的做法是将其得分暴力置0。这对于有遮挡的案例较不友好。因此Soft-NMS的做法是采取得分惩罚机制,使用一个与IoU正相关的惩罚函数对得分  进行惩罚。

线性惩罚:

其中  代表当前的最大得分框。

线性惩罚有不光滑的地方,因而还有一种高斯惩罚:

在迭代终止之后,Soft-NMS依据预先设定的得分阈值来保留幸存的检测框,通常设为0.0001

该文对两种惩罚方法的超参数也进行了实验,结果验证了超参数的不敏感性。经本人实测,Soft-NMS在Faster R-CNN中的提升约有0.5-0.8个点的AP提升。

缺点:

  • 仍然是顺序处理的模式,运算效率比Traditional NMS更低。

  • 对双阶段算法友好,而在一些单阶段算法上可能失效。

  • 如果存在定位与得分不一致的情况,则可能导致定位好而得分低的框比定位差得分高的框惩罚更多(遮挡情况下)。

  • 评判标准是IoU,即只考虑两个框的重叠面积,这对描述box重叠关系或许不够全面。

定位优先

IoU-Guided NMS出现于IoU-Net一文中,研究者认为框的定位与分类得分可能出现不一致的情况,特别是框的边界有模棱两可的情形时。因而该文提出了IoU预测分支,来学习定位置信度,进而使用定位置信度来引导NMS。

具体来说,就是使用定位置信度作为NMS的筛选依据,每次迭代挑选出最大定位置信度的框  ,然后将IoU≥NMS阈值的相邻框剔除,但把冗余框及其自身的最大分类得分直接赋予  ,这样一来,最终输出的框必定是同时具有最大分类得分与最大定位置信度的框。

优点:

  • IoU-Guided NMS有助于提高严格指标下的精度,如AP75, AP90。

缺点:

  • 顺序处理的模式,运算效率与Traditional NMS相同。

  • 需要额外添加IoU预测分支,造成计算开销。

  • 评判标准是IoU,即只考虑两个框的重叠面积,这对描述box重叠关系或许不够全面。

加权平均

多框共同决定一框

Weighted NMS出现于ICME Workshop 《Inception Single Shot MultiBox Detector for object detection》一文中。论文认为Traditional NMS每次迭代所选出的最大得分框未必是精确定位的,冗余框也有可能是定位良好的。那么与直接剔除机制不同,Weighted NMS顾名思义是对坐标加权平均,加权平均的对象包括  自身以及IoU≥NMS阈值的相邻框。

加权的权重为  ,表示得分与IoU的乘积。

优点:

Weighted NMS通常能够获得更高的Precision和Recall,以本人的使用情况来看,只要NMS阈值选取得当,Weighted NMS均能稳定提高AP与AR,无论是AP50还是AP75,也不论所使用的检测模型是什么。

缺点:

  • 顺序处理模式,且运算效率比Traditional NMS更低。

  • 加权因子是IoU与得分,前者只考虑两个框的重叠面积,这对描述box重叠关系或许不够全面;而后者受到定位与得分不一致问题的限制。

方差加权平均

Softer-NMS同样是坐标加权平均的思想,不同在于权重  发生变化,以及引入了box边界的不确定度。

加权公式如下:

其中权重  抛弃了得分  ,而只与IoU有关。

在加权平均的过程中,权重越大有两种情形:1. 与  的IoU越大;2. 方差越小,代表定位不确定度越低。

var voting表示方差加权平均

优点:

  • 可以与Traditional NMS或Soft-NMS结合使用。

  • 通常可以稳定提升AP与AR。

缺点:

  • 顺序处理模式,且运算效率比Traditional NMS更低。

  • 需要修改模型来预测方差。

  • 加权因子是IoU与方差,前者依然只考虑两个框的重叠面积,这对描述box重叠关系或许不够全面。

自适应阈值

以上这些NMS都基于这样的假设:与当前最高得分框重叠越大,越有可能是冗余框。这在物体之间有严重遮挡时可能带来不好的结果。我们期望当物体分布稀疏时,NMS大可选用小阈值以剔除更多冗余框;而在物体分布密集时,NMS选用大阈值,以获得更高的召回。既然如此,该文提出了密度预测模块,来学习一个框的密度。

一个GT框  的密度标签定义如下,

模型的输出将变为  ,分别代表box坐标,宽高,分类得分,密度,其中密度  越大,代表该框所处的位置的物体分布越密集,越有可能是遮挡严重的地方;反之密度  越小,代表该框所处的位置的物体分布越稀疏,不太可能有遮挡。

论文以Traditionnal NMS和Soft-NMS的线性惩罚为基础,将每次迭代的NMS阈值更改如下:

其中  代表最小的NMS阈值。

优点:

  • 可以与前面所述的各种NMS结合使用。

  • 对遮挡案例更加友好。

缺点:

  • 与Soft-NMS结合使用,效果可能倒退 (受低分检测框的影响)。

  • 顺序处理模式,运算效率低。

  • 需要额外添加密度预测模块,造成计算开销。

  • 评判标准是IoU,即只考虑两个框的重叠面积,这对描述box重叠关系或许不够全面。

+中心点距离

DIoU-NMS出现于Distance-IoU一文,研究者认为若相邻框的中心点越靠近当前最大得分框  的中心点,则其更有可能是冗余框。也就是说,考虑IoU相同的情况,如下所示

第一种相比于第三种越不太可能是冗余框。基于该观点,研究者使用所提出的DIoU替代IoU作为NMS的评判准则,公式如下:

DIoU的定义为

DIoU=IoU-d²/c²

而在实际操作中,研究者还引入了参数  ,用于控制  的惩罚幅度。即

由公式可以看出,

  1. 当  时,DIoU退化为IoU,此时的DIoU-NMS与Traditional NMS效果相当。

  2. 当  时,此时几乎所有中心点不与  重合的框都被保留了。

研究者进一步比较了Traditional NMS和DIoU-NMS的性能,在YOLOv3和SSD上,选取NMS阈值为[0.43,0.48]。可以看到DIoU-NMS在每个阈值上都优于Traditional NMS,此外还值得一提的是,即便是性能最差的DIoU-NMS也比性能最好的Traditional NMS相当或更优,说明即便不仔细调整NMS阈值,DIoU-NMS也通常能够表现更好。

YOLOv3(左)和SSD(右)在VOC 2007 test集

这里顺便一提,既然都比了[0.43, 0.48]的阈值,就让人比较好奇更宽的阈值范围会怎样?Traditional NMS会不会有反超DIoU-NMS的情况?当然我个人比较认同DIoU-NMS更优的范围会大一些,也就是NMS阈值不必精调也可放心使用DIoU-NMS。

优点:

  • 从几何直观的角度,将中心点考虑进来有助于缓解遮挡案例。

  • 可以与前述NMS变体结合使用。

  • 保持NMS阈值不变的情况下,必然能够获得更高recall (因为保留的框增多了),至于precision就需要调  来平衡了。

  • 个人认为+中心点距离的后处理可以与DIoU/CIoU损失结合使用,这两个损失一方面优化IoU,一方面指引中心点的学习,而中心点距离学得越好,应该对这种后处理思想的执行越有利。

缺点:

  • 依然是顺序处理模式,运算效率低。

  • DIoU的计算比IoU更复杂一些,这会降低运算效率。

  • 在保持NMS阈值不变的情况下,使用DIoU-NMS会导致每次迭代剩余更多的框,这会增加迭代轮数,进一步降低运算效率。(经本人实测,DIoU-NMS是Traditional NMS 起码1.5倍耗时)

总结:

  1. 加权平均法通常能够稳定获得精度与召回的提升。

  2. 定位优先法,方差加权平均法与自适应阈值法需要修改模型,不够灵活。

  3. 中心点距离法可作为额外惩罚因子与其他NMS变体结合。

  4. 得分惩罚法会改变box的得分,打破了模型校准机制。

  5. 运算效率的低下可能会限制它们的实时应用性。

参考文献

  1. Soft-NMS --Improving Object Detection With One Line of Code. ICCV 2017

  2. Acquisition of Localization Confidence for Accurate Object Detection. ECCV 2018

  3. Inception Single Shot MultiBox Detector for object detection. ICME Workshop 2017

  4. Bounding Box Regression with Uncertainty for Accurate Object Detection. CVPR 2019

  5. Adaptive NMS: Refining Pedestrian Detection in a Crowd. CVPR 2019

  6. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression. AAAI 2020


推荐阅读

(点击标题可跳转阅读)

  • 来聊聊COCO数据集上两大霸榜模型-CBNet和DetectoRS

  • 【目标检测系列】非极大值抑制(NMS)的各类变体汇总

  • 【目标检测系列】CNN中的目标多尺度处理方法

  • 超越MobileNetV3,谷歌提出MobileDets:移动端目标检测新标杆

  • 【目标检测基础积累】常用的评价指标

重磅!DLer-目标检测交流群已成立!

为了能给大家提供一个更好的交流学习平台!针对特定研究方向,我建立了目标检测微信交流群,本群旨在交流目标检测、密集人群检测、文本检测、关键点检测、人脸检测、人体姿态估计等内容。

进群请备注:研究方向+学校/公司+昵称(如目标检测+上交+小明

广告商、博主请绕道!

???? 长按识别,即可进群!

【基础积累】目标检测NMS—精度提升篇相关推荐

  1. 一文打尽目标检测NMS | 精度提升篇

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文作者:曲終人不散丶 https://zhuanlan.zhih ...

  2. 一文打尽目标检测NMS——效率提升篇

    在笔者上一篇文章<一文打尽目标检测NMS--精度提升篇>中,总结了近几年出现的一些可以提升NMS精度的方法.可以看到,NMS由于顺序处理的原因,运算效率较为低下.在笔者的实际项目中,NMS ...

  3. 李沐等将目标检测绝对精度提升 5%,不牺牲推理速度

    本文授权转载自机器之心 未经许可禁止二次转载 天下没有免费的午餐?李沐等研究者在一份名为<Bag of Freebies for Training Object Detection Neural ...

  4. 经验 | 如何提升目标检测NMS精度

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:曲終人不散丶 知乎链接:https://zhuanla ...

  5. 实战解析:真实AI场景下,极小目标检测与精度提升 | 百度AI公开课

    主讲人 | 哈利 百度高级研发工程师 量子位整理编辑 | 公众号 QbitAI 目前,各个企业行业在AI落地应用中,常常会遇到极小目标检测问题.在这些AI应用中,都需要在一个大图中精准识别出极小目标, ...

  6. 做目标检测,这6篇就够了:CVPR 2020目标检测论文盘点

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 来源:机器之心 CVPR 2020 会议上,有哪些目标检测论文值得关注? 目标检测是计算机视觉 ...

  7. access open 知乎_做目标检测,这6篇就够了:CVPR 2020目标检测论文盘点

    CVPR 2020 会议上,有哪些目标检测论文值得关注? 选自heartbeat,作者:Derrick Mwiti,机器之心编译,参与:陈萍. 目标检测是计算机视觉中的经典问题之一.凭借大量可用数据. ...

  8. coco数据集目标检测论文_做目标检测,这6篇就够了:CVPR 2020目标检测论文盘点...

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 选自heartbeat 作者:Derrick Mwiti 转载:机 ...

  9. Anchor-free目标检测综述 -- Dense Prediction篇

      早期目标检测研究以anchor-based为主,设定初始anchor,预测anchor的修正值,分为two-stage目标检测与one-stage目标检测,分别以Faster R-CNN和SSD作 ...

最新文章

  1. shell特殊符_cut命令 sort_wc_uniq命令tee_tr_split命令 shell特
  2. Graves of the Internet - 互联网坟墓
  3. MySQL数据类型(最大值 和 最小值)
  4. jvm系列(十):如何优化Java GC「译」
  5. jQuery 选择器 之 案例:淘宝服饰精品案例
  6. return 函数
  7. C++ Primer 5th笔记(8)chapter8 类:IO库-流的状态
  8. 职坐标 MySQL视频_测试工具之MySQLSlap使用实例
  9. 气泡提示效果css.html,用纯CSS3绘制高端简约的气泡提示框
  10. java汉字转拼音的处理
  11. Android UI 事件研究
  12. setinterval 和 ajax,JavaScriptsetInterval和“this”解决方案
  13. 中燃料场报表生成器--出库报表
  14. vscode推荐编程字体
  15. 华为secoclient提示“无法建立vpn链接,vpn服务器可能无法到达”
  16. 前端大神司徒正美突发病逝,再度思考健康与金钱
  17. 3Dcnn 降假阳性模型调试(一)
  18. slack软件怎么用
  19. 互联网的SEDA高并发架构
  20. ansible使用之——网络设备自动巡检

热门文章

  1. 【BZOJ】3527: [Zjoi2014]力(fft+卷积)
  2. web前端,我的新开始
  3. 安装nagios时出现version 1.21 does not match bootstrap parameter 1.35的解决办法
  4. 为DropDownList 添加optgroup分组以及为ListItem 加式样
  5. php获取头像,WordPress中用于获取及自定义头像图片的PHP脚本详解
  6. 安装anaconda 报错 failed to create menus
  7. python matshow用法
  8. 多模态任务新蓝海:视觉语言导航最新进展
  9. 比尔盖茨是这样审查项目的 1
  10. Ubuntu 16.04 安装arm-linux-gcc交叉编译