文章目录

  • NMS
  • ConvNMS(2016)
  • Soft-NMS(2017)
  • Weighted-NMS(2017)
  • IOU-Guided NMS (2018)
  • Pure NMS Network(2017)
  • Softer NMS (2019)
  • Adaptive NMS (2019)
  • DIOU NMS (2020)
  • Cluster NMS(2020)
  • NMS系列总结

NMS


NMS概述
NMS(non maximum suppression)是目标检测框架中的后处理模块,主要用于删除高度冗余的 bboxes,在一定区域内只保留属于同一种类别得分最大的框。

如下图,前面的网络可以给每个检测框一个score,score越大,说明检测框越接近真实值。

现在要去掉多余的检测框,分别在局部选出score最大框,然后去掉和这个框IOU>阈值的框。


NMS的算法流程

  1. 从所有候选框中选取置信度最高的预测边界框B1作为基准,然后将所有与B1的IOU超过预定阈值的其他边界框移除。
  2. 从所有候选框中选取置信度第二高的边界框B2作为一个基准,将所有与B2的IOU超过预定阈值的其他边界框移除。
  3. 重复上述操作,直到所有预测框都被当做基准——这时候没有一对边界框过于相似
  • 同一类别

如上图所示,NMS的处理流程如下:

  1. 「确定是物体集合」 ={=\{={ 空集合 }\}}
  2. Run 1: 先将BBox依照置信度排序,置信度最高的BBox (红色) 会被选入「确定是物体集合」内, 其他BBox会根据这步骤选出最高的BBox进行loU计算,如果粉红色的loU为 0.6 大于我们设定的 0.5 ,所以将粉红色的BBox置信度设置为 0 。
    此时「确定是物件集合」 ={=\{={ 红色BBox }\}}
  3. Run 2: 不考虑置信度为 0 和已经在「确定是物体集合」的BBox,剩下來的物体继续选出最大置信 度的BBox,将此BBox(黄色)丟入「确定是物体集合」,剩下的BBox和Run2选出的最大置信度的 BBox计算loU,其他BBox都大于 0.5 ,所以其他的BBox置信度設置为 0 。
    此时「确定是物件集合」 ={=\{={ 红色BBox; 黄色BBox }\}}
  4. 因为沒有物体置信度> >>> ,所以结束NMS。
    「确定是物件集合」 ={=\{={ 红色BBox; 黄色BBox }\}} 。

如果把上述的IOU阈值设为0.7,则处理结果如下图。可以发现,阈值如果太高,会造成重复的检测。

  • 多个类别
    如果是多个类别,处理方法和上面的单个类别类似。只是辅助参考了p_dog和p_cat分类概率。
  • 实际流程
    先设定一个阈值,初步去掉一些候选的BBOX, 然后再做NMS。

NMS的局限性

  • 循环步骤,GPU难以并行处理,运算效率低
  • 以分类置信度为优先衡量指标分类置信度高的定位不一定最准,降低了模型的定位准确度
  • 直接提高阈值暴力去除bbox 将得分较低的边框强制性地去掉,如果物体出现较为密集时,本身属 于两个物体的边框,其中得分较低的框就很有可能被抑制掉,从而降低了模型的召回率,且阈值 设定完全依赖自身经验。

ConvNMS(2016)

论文:《A Convnet for Non-maximum Suppression》


ConvNMS概述
其主要考虑IoU阈值设定得高一些,则可能抑制得不够充分,而将IoU阈值设定得低一些,又可能多个ture positive被merge到一起。其设计一个卷积网络组合具有不同overlap阈值的greedyNMS结果,通过学习的方法来获得最佳的输出。基础框架如下:

通过网络学习来获得一种泛化性能,是一种不错的思路,但是对于不同的场景要能起到作用应该需要重新训练及调参

Soft-NMS(2017)

论文:《Improving Object Detection With One Line of Code》
代码:soft-nms


Soft-NMS概述

  • nms的局限性 :对于IOU>阈值的两个相邻的检测框,传统的NMS的做法是将其得分暴力置零,相当于直接舍弃。这样的做饭很有可能造成漏检,尤其在遮挡的场景下。

    如上图,传统的NMS会把被遮挡的马的检测框删除。

  • Soft-NMS的思想
    对于与最高分框的IOU大于阈值的框M,我们不把他直接去掉,而是将他的置信度降低(添加惩罚项来抑制,IOU越大,抑制的程度也越大),这样的方法可以使多一些框被保留下来,从而一定程度上避免遮挡的情况出现。
    如果只是把置信度降低,那么是不是原来周围的多个表示同一个物体的框也没办法去掉了?
    Soft-NMS这样来解决这个问题,同一个物体周围的框有很多,每次选择分数最高的框,抑制其周围的框,与分数最高的框的IoU越大,抑制的程度越大,一般来说,表示同一个物体的框(比如都是前面的马)的IoU是会比另一个物体的框(比如后面的马)的IoU大,因此,这样就会将其他物体的框保留下来,而同一个物体的框被去掉。


Soft-nms算法
如下图所示,红色的部分表示原始的NMS算法,绿色的部分表示Soft-NMS算法,区别在于,绿色的框只是把si降低了,而不是把bi直接去掉,极端情况下,如果f只返回0,那么等同于普通的NMS。

f函数: 降低目标框的置信度,如果biM的IOU越大,f(iou(M,bi))就越小。

两种惩罚函数:

  • 线性函数
    si={si,iou (M,bi)<Ntsi(1−iou⁡(M,bi)),iou (M,bi)≥Nts_i= \begin{cases}s_i, & \text { iou }\left(\mathcal{M}, b_i\right)<N_t \\ s_i\left(1-\operatorname{iou}\left(\mathcal{M}, b_i\right)\right), & \text { iou }\left(\mathcal{M}, b_i\right) \geq N_t\end{cases} si​={si​,si​(1−iou(M,bi​)),​ iou (M,bi​)<Nt​ iou (M,bi​)≥Nt​​
  • 高斯函数
    si=sie−iou⁡(M,bi)2σ,∀bi∉Ds_i=s_i e^{-\frac{\operatorname{iou}\left(\mathcal{M}, b_i\right)^2}{\sigma}}, \forall b_i \notin \mathcal{D} si​=si​e−σiou(M,bi​)2​,∀bi​∈/D

Weighted-NMS(2017)

论文:《Inception Single Shot MultiBox Detector for object detection》
代码:Weighted-Boxes-Fusion


Weighted-NMS

  • 提出背景
    NMS方法在一组候选框中选择分数最大的框作为最终的目标框。然而,非极大的检测结果保存了特征的最大值,因此忽略非极大的检测检测结果是不合适的。
    box=Bargmax⁡Ciib o x=B_{\underset{i}{\operatorname{argmax} C_i}} box=BiargmaxCi​​​
  • Weighted-NMS思想
    W-NMS通过分类置信度和IOU对同类物体所有的边框坐标进行加权平均,并归一化。其中加权对象包括M自身和IOU>阈值的相邻框。
    假定所有的Box来自相同的物体,通过考虑非极大结果充分考虑了目标的信息,提出了如下的非极大权重(Non-Maximum Weighting):
    box=∑i=1nwi×Bi∑i=1nwiwi=Ci×iou⁡(Bi,Biargmax⁡Ci)\begin{gathered} b o x=\frac{\sum_{i=1}^n w_i \times B_i}{\sum_{i=1}^n w_i} \\ w_i=C_i \times \operatorname{iou}\left(B_i, B_i^{\operatorname{argmax} C_i}\right) \end{gathered} box=∑i=1n​wi​∑i=1n​wi​×Bi​​wi​=Ci​×iou(Bi​,BiargmaxCi​​)​

IOU-Guided NMS (2018)

论文:《Acquisition of Localization Confidence for Accurate Object Detection》
代码:vacancy/PreciseRoIPooling


IOU-Guided NMS概述

  • IOU-Guided 的提出背景
    目标定位的两个缺点:
  1. 分类准确率和定位准确率的误匹配;

    黄色:Groud-truth 绿色:位置置信度高 红色:分类置信度高
    下图为IoU与分类置信度,定位置信度的相关性示意图。可以看出,IoU与定位置信度高度相关(0.617),而与分类置信度几乎无关(0.217)。

  2. 边界框回归的非单调性。

    基于回归的边界框改进,迭代的过程,定位准确率却在降低。

  • IOU-Guided NMS的思路
    在一般检测的框架中,增加了一个额外的分支用来预测每个框的定位置信度(该框与GT的IoU,下图),然后用预测的IoU代替分类置信度作为NMS排序的关键,消除误导性分类置信度引起的抑制失效。

IOU-Guided NMS的算法流程
旷视 IOU-Net 论文提出了 IoU-Guided NMS,即一个预测框与真实框 IoU 的预测分支来 学习定位置信度,进而使用定位置信度来引导 NMS 的学习。具体来说,就是使用定位置信度作为 NMS 的筛选依据,每次迭代挑选出最大定位置信度的框 MMM ,然后将IoU>=NMS 阈值的相邻框剔除,但把冗余框及其自身的最大分类得分直接赋予 MMM 。因此,最终输出的框必定是同时具有最大分类得分与最大定位置信度的框
伪代码如下:

Pure NMS Network(2017)

论文:《Learning Non-Maximum Suppression》


Pure NMS Network概述
考虑目标间具有高遮挡的密集场景,其提出一个新的网络架构来执行NMS。经分析,检测器对于每个目标仅产生一个检测结果有两个关键点是必要的,一是一个loss惩罚double detections以告诉检测器我们对于每个目标仅需一个检测结果,二是相邻检测结果的joint processing以使得检测器具有必要的信息来分辨一个目标是否被多次检测。论文提出Gnet,其为第一个“pure”NMS网络。Gnet图示如下:

Softer NMS (2019)

《Bounding Box Regression with Uncertainty for Accurate Object Detection》


Softer NMS概述

  • 提出背景
    NMS 默认置信度分数较高的框,定位更精确,由于分类和回归任务没有直接相关性,因此这个条件并不总是成立。
    如下图(a)中两个边界框位置都不够精确;(b)中置信度较高的边界框的左边界精确度较低。因此需要一种新的方法来衡量框的位置置信度。

  • 解决方法
    从Softer-NMS的公式来看,Softer-NMS可以看成是前面三种NMS变体的结合,即:其极大值的选择/设定采用了与类似Weighted NMS(加权平均)的方差加权平均操作,其加权的方式采用了类似Soft NMS的评分惩罚机制(受Soft-NMS启发,离得越近,不确定性越低,会分配更高的权重),最后,它的网络构建思路与IOU-Guided NMS相类似。
    与 IOU-Guided NMS 区别 Softer-NMS 与 IOU-Guided NMS 的出发点同样是解决定位与分类置信度之间非正相关的问题,所采用的思路一样是增加一个定位置信度的预测,但不一样的是 IoU-Guided NMS 采用 IoU 作为定位置信度而 Softer-NMS 采用坐标方差作为定位置信度,具体的做法就是通过 KLK LKL 散度来判别两个分布的相似性。


Softer NMS的算法流程
边界框参数化(预测一个分布替代唯一的定位);训练时边框回归时采取KL损失;一个新的NMS方法提高定位准确性。
其中,Softer NMS 论文中有两个先验假设:
(1) Bounding box的是高斯分布
(2) ground truth bounding box是狄拉克delta分布(即标准方差为 0 的高斯分布极限)。
当选择了最大分数的b之后,它的新位置根据它自身和邻居框计算。受Soft-NMS启发,离得越近,不确定性越低,会分配更高的权重。新的坐标计算如下:
pi=e−(1−IoU(bi,b))2/σtx=∑ipixi/σx,i2∑ipi/σx,i2subject to IoU⁡(bi,b)>0\begin{aligned} & p_i=e^{-\left(1-I o U\left(b_i, b\right)\right)^2 / \sigma_t} \\ & x=\frac{\sum_i p_i x_i / \sigma_{x, i}^2}{\sum_i p_i / \sigma_{x, i}^2} \\ & \quad \text { subject to } \operatorname{IoU}\left(b_i, b\right)>0 \end{aligned} ​pi​=e−(1−IoU(bi​,b))2/σt​x=∑i​pi​/σx,i2​∑i​pi​xi​/σx,i2​​ subject to IoU(bi​,b)>0​

Adaptive NMS (2019)

论文:《Adaptive NMS: Refining Pedestrian Detection in a Crowd》


Adaptive NMS的概述

  • Adaptive NMS的提出背景
    使用单一阈值的NMS会面临这种困境:较低的阈值会导致丢失高度重叠的对象(图中蓝框是未检测出来的目标),而较高的阈值会导致更多的误报(红框是检测错误的目标)。这在密集场景下,如行人检测中,会导致较低的准确率。
  • Adaptive-NMS的思想
    Adaptive NMS应用了动态抑制策略,其中阈值随着目标聚集和相互遮挡(密度)而上升,并在目标单独出现时衰减。并设了一个自网络用于学习密度的分数。
  1. 对于远离M的检测框,它们被误报的可能性较小,因此应该保留它们。
  2. 对于高度重叠的相邻检测,抑制策略不仅取决于与M的重叠,还取决于M是否位于拥挤区域。如果M位于拥挤的区域,其高度重叠的相邻框很可能是真正的正例,应该分配较轻的惩罚或保留。但是对于稀疏区域中的实例,惩罚应该更高以修剪误报。

Adaptive-NMS的算法流程
对于每个目标的密度,定义如下:
di:=max⁡bj∈G,i≠jiou⁡(bi,bj)d_i:=\max _{b_j \in \mathcal{G}, i \neq j} \operatorname{iou}\left(b_i, b_j\right) di​:=bj​∈G,i=jmax​iou(bi​,bj​)
依据这个定义,则更新策略为:
NM:=max⁡(Nt,dM)si={si,iou⁡(M,bi)<NMsif(iou⁡(M,bi)),iou⁡(M,bi)≥NM\begin{gathered} N_{\mathcal{M}}:=\max \left(N_t, d_{\mathcal{M}}\right) \\ s_i= \begin{cases}s_i, & \operatorname{iou}\left(\mathcal{M}, b_i\right)<N_{\mathcal{M}} \\ s_i f\left(\operatorname{iou}\left(\mathcal{M}, b_i\right)\right), & \operatorname{iou}\left(\mathcal{M}, b_i\right) \geq N_{\mathcal{M}}\end{cases} \end{gathered} NM​:=max(Nt​,dM​)si​={si​,si​f(iou(M,bi​)),​iou(M,bi​)<NM​iou(M,bi​)≥NM​​​
其中 NMN_MNM​ 表示 MMM 的Adaptive NMS 阈值, dMd MdM 是目标 MMM 覆盖的密度。
可以看出,这个抑制措施具有三个属性:

  • 当相邻box远离 MMM 时,即 loU⁡(M,bi)<Nt\operatorname{loU}(\mathrm{M}, \mathrm{bi})<N tloU(M,bi)<Nt ,他们的分值仍为 si;
  • 如果M位于拥挤区域, 即 dM>Nt\mathrm{dM}>\mathrm{Nt}dM>Nt, 则NMS的阈值为 MMM 的密度 dMd MdM 。因此,相邻的边框被保留,既然 它们非常可能定位到M周围的其他目标。
  • 如果目标在稀疏区域,即 dM<=Nt\mathrm{dM}<=\mathrm{Nt}dM<=Nt, 则 NMSN M SNMS 的阈值为 Nt。 \mathrm{Nt}_{\text {。 }}Nt。 ​

文中将密度估计看作一个回归问题,使用如下的三层的卷积子网络进行预测,采用Smooth L1 损失。

因为检测器的输出特征只包含目标本身的信息,也就是语义特征和位置,难以直接进行目标密度的预测,因为密度信息除了需要目标本身的特征图外,还需要周围目标的信息。论文首先使用11卷积层降维,然后concatenate降维后的特征与objectness和bounding boxes,作为Density-subnet的输入。而且,在最后一层应用55的大卷积核将周围的信息考虑进去。

如下,是Adaptive NMS的伪代码,与基本NMS算法相比仅替换了阈值。

DIOU NMS (2020)

论文:《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》
代码:DIOU


DIOU-NMS概述
NMS在DIoUloss一文中提出,在nms过程中采用DIoU的计算方式替换了IoU,由于DIoU的计算考虑到了两框中心点位置的信息,故使用DIoU进行评判的nms效果更符合实际,效果更优。

si={si,IoU −RDIoU (M,Bi)<ε0,IoU −RDIoU (M,Bi)≥εs_i= \begin{cases}s_i, & \text { IoU }-R_{\text {DIoU }}\left(M, B_i\right)<\varepsilon \\ 0, & \text { IoU }-R_{\text {DIoU }}\left(M, B_i\right) \geq \varepsilon\end{cases} si​={si​,0,​ IoU −RDIoU ​(M,Bi​)<ε IoU −RDIoU ​(M,Bi​)≥ε​

Cluster NMS(2020)

论文:《Enhancing Geometric Factors in Model Learning and Inference for Object Detection and Instance Segmentation》
代码:CIoU


Cluster NMS的概述
研究者主要旨在弥补Fast NMS的性能下降,期望也利用pytorch的GPU矩阵运算进行NMS,但同时又使得性能保持与Traditional NMS相同,此外作者在这其中加入了很多其他的操作,如得分惩罚机制(SPM),加中心点距离(DIOU),框的加权平均法(Weighted NMS)

NMS系列总结

  • 根据是否需要训练分类
    不需要训练的NMS方法(NMS、Soft-NMS、Weighted-NMS、Cluster-NMS)
    需要训练的NMS(ConvNMS、PureNMS、 IOU-GuidedNMS、AdaptiveNMS)

  • 根据改进策略进行分类
    带权重的NMS(Soft NMS, Softer NMS,Weighted NMS)
    考虑定位的NMS(IOU-Guided NMS)
    阈值自适应的NMS(Adaptive NMS)
    并行的NMS(Fast NMS, Cluster NMS)

NMS系列(NMS,Soft-NMS,Weighted-NMS,IOU-Guided NMS,Softer-NMS,Adaptive NMS,DIOU NMS,Cluster NMS)相关推荐

  1. 目标检测中NMS和mAP指标中的的IoU阈值和置信度阈值

    有时候路走的太远,会忘了为什么要出发. 学习亦如是 在目标检测中,经常看到置信度阈值和IoU阈值这两个关键参数,且NMS计算和mAP计算中都会有这两个,那它们的区别是什么?本文就这个问题做一次总结. ...

  2. nms修改为soft nms

    nms修改为soft nms 一,NMS与soft nms原理 先放一张论文中的图 在对上述图片中的目标进行检测过程中,使用非极大值抑制(NMS)进行筛选时只能获取到得分最高的框(得分0.95),对于 ...

  3. Linux系列之soft lockup机制 浅析

    Linux系列之soft lockup机制 浅析 1.背景 2.什么是lockup? 2.1 lockup检测机制 2.2 softlockup的工作原理 3.soft lockup机制分析 3.1 ...

  4. 一文汇总 NMS,持续更新~~

    转载请注明作者和出处: http://blog.csdn.net/john_bh/ 文章目录 1. NMS 1.1 什么是NMS 1.2 为什么要用 NMS 1.3 如何使用 NMS 2. NMS 提 ...

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

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

  6. 交并比 (IoU), mAP (mean Average Precision), 非极大值抑制 (NMS, Soft NMS, Softer NMS, IoU-Net)

    目录 目标检测的评价指标 交并比 (Intersection of Union, IoU) mAP (mean Average Precision) 其他指标 非极大值抑制 (Non-Maximum ...

  7. 《一文搞懂NMS发展历程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS

    <一文搞懂NMS发展历程>Soft-NMS.Weighted NMS.IoU-Net.Softer-NMS.Adaptive NMS.DIoU-NMS 文章目录 <一文搞懂NMS发展 ...

  8. NMS、soft NMS、softer NMS与IOU-Guided NMS

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 NMS.soft NMS.softer NMS与IOU-Guided NMS 一.NMS 二.soft NMS 三.softer NM ...

  9. Soft NMS+Softer NMS+KL Loss

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

最新文章

  1. LR 为什么离散化离散化的优势
  2. 前沿丨人工智能的框架战争:FB继续挑战Google
  3. android4被淘汰,这五类安卓手机已经被淘汰,购买时别贪便宜,需慎重考虑!
  4. 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )
  5. wxWidgets:操作档案manipulate archives的示例应用程序
  6. Openfire4源码部署到eclipse中并编译
  7. 采购订单模板_采购必备:如何搭建合规的采购流程
  8. C语言 · 滑动解锁
  9. ios整理(六)关于用富文本在tableview的cell去加载html字符串的优化方案
  10. 解决问题的能力 > 10倍程序员
  11. java 面试 概率论_仿概率论系列(一) 开篇引导
  12. google离线地图制作
  13. linux mv中途进程断掉,shell入门
  14. IDEA 反编译失败 提示/*compiled code*/的解决方法
  15. win10便签常驻桌面_Win10下环境有哪些好用的便签记事本?想和iPhone一块儿用 - 学显...
  16. [Python图像识别] 四十七.Keras深度学习构建CNN识别阿拉伯手写文字图像
  17. 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...
  18. 正则表达式的字符匹配(一)
  19. GDAL C++ API 学习之路 (1)Driver篇 代码示例 翻译 自学
  20. matlab车牌识别错误,求解决Matlab车牌识别

热门文章

  1. 气相色谱仪如何操作,气相色谱仪操作方法
  2. t420i升级固态硬盘提升_系统迁移教程:升级SSD后笔记本性能提升两倍?浦科特M9P PLUS 1TB_固态硬盘...
  3. 1小时会议录音,30秒整理成文字,这款APP有点牛呀!
  4. 拓嘉辰丰:拼多多网店需要降低退款纠纷率该怎么办
  5. AMCL代码详解(六)amcl中的重采样
  6. ubuntu下迅雷安装完全策略
  7. Word去掉拼音检查
  8. 每周一磁 · 充磁方向与取向方向
  9. 安卓手机软件开发!已成功拿下字节、腾讯、脉脉offer,已拿offer入职
  10. zynq7000系列移植—JRE移植到嵌入式ARM平台(java运行在嵌入式linux)