点上方蓝字计算机视觉联盟获取更多干货

在右上方 ··· 设为星标 ★,与你不见不散

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者:曲終人不散丶

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

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

【导读】众所周知,非极大值抑制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

end

这是我的私人微信,还有少量坑位,可与相关学者研究人员交流学习 

目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟

王博的公众号,欢迎关注,干货多多

王博的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章(上)

博士笔记 | 周志华《机器学习》手推笔记第八章(下)

博士笔记 | 周志华《机器学习》手推笔记第九章

点个在看支持一下吧

经验 | 如何提升目标检测NMS精度相关推荐

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

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

  2. 【基础积累】目标检测NMS—精度提升篇

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 作者:曲終人不散丶 知乎链接:https://zhuanlan.zhihu.com/p/151 ...

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

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

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

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

  5. 提升目标检测模型性能的tricks

    提升目标检测模型性能的tricks bag of freebies pixel-wise调整 几何畸变 光照变化 遮挡 Random Erase CutOut Hide-and-Seek Grid M ...

  6. Label Assign综述:提升目标检测上限

    原文链接:https://bbs.cvmart.net/topics/2960 专注计算机视觉前沿资讯和技术干货 微信公众号:极市平台 官网:https://www.cvmart.net/ 最近因为A ...

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

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

  8. LCCL网络:相互指导博弈来提升目标检测精度(附源代码)

    论文地址:https://openaccess.thecvf.com/content/ACCV2020/papers/Zhang_Localize_to_Classify_and_Classify_t ...

  9. ICCV2021最佳检测之一:主动学习框架较大提升目标检测精度(附论文下载)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Edison_G 来源丨计算机视觉研究院 新框架优于基于单模型的方法,并且以一小部分计算成本与基 ...

最新文章

  1. 四种排序方法用java实现
  2. linux freopen函数
  3. 洛谷P1852 奇怪的字符串
  4. 如何设置打印的时候不加上页面链接_电子面单史上最全打印问题集合--【拼点管家软件】...
  5. Linux Fedora8 下安装 IE6
  6. c#正则表达式应用实例
  7. 怎样在input里加入搜索_影视类公众号文章怎样图文排版可以吸引用户?
  8. CSU 2124智慧树(建图+BFS)
  9. 系统清理软件测试,系统垃圾清理有用吗?六大清理工具评测
  10. QTP(Quick Test Professional)安装详细教程
  11. 网站如何被百度蜘蛛快速抓取?
  12. 程序员电脑(减少辐射)(¥37)
  13. 开源高手推荐 十大最流行开源软件
  14. 从零开始学python项目_从零开始学Python程序设计
  15. PostgreSQL 磁盘空间的保护伞 PG_repack VS 表膨胀
  16. NOIP模拟系列 [BZOJ4668]冷战
  17. 华为云服务器更换操作系统,华为云 更换操作系统
  18. ext表格内容自动换行
  19. vs2008配置opencv2.4.0
  20. 本地文件上传FTP或远程目录

热门文章

  1. python的read函数调用报错_从零开始学Python(七):文件存储I/O流和异常捕捉
  2. html瀑布流下拉刷新,瀑布流下拉刷新 - osc_1wnye1so的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. linux拷贝文件1003无标题,2.27Linux和windows互传;3.1用户配置文件和密码配置文件;3.2/3.3用户组用户...
  4. java compareto方法怎么排序的_很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚
  5. windows2019域控降级退域
  6. 详细设计 英文_官宣 | 闽江学院官方文创产品设计稿征集
  7. 比特币全节点(bitcoind) eth 全节点
  8. 生成pyd文件时提示“Unable to find vcvarsall.bat”的问题
  9. Java基础语法学习11——流程控制(循环)
  10. [西瓜书习题] 第二章 模型评估与选择