阅读笔记8——NMS

NMS(非极大值抑制)算法详解与示例 nms的使用总结 阅读详情

一、基本NMS

1. 处理过程

  为了保证物体检测的召回率,对于同一个真实物体往往会有多于1个的候选框输出。但是多余的候选框会影响检测精度,因此需要利用NMS过滤掉重叠的候选框,基本的NMS方法利用得分高的边框抑制得分低且重叠程度高的边框。

  如图1-1所示,图片中存在3个候选框,但是候选框A与C对应的是同一个物体,由于C的得分比A要低,在计算召回率时,C候选框会被当做一个False Positive来看待,从而降低模型的精度。(Recall=TNTN+FPRecall=\frac{TN}{TN+FP}Recall=TN+FPTN​,当FPFPFP增大时,RecallRecallRecall减小)实际上,由于候选框A的质量要比C好,理想的输出是A而不是C,因此希望能够抑制掉候选框C。

在这里插入图片描述

图1-1 NMS处理过程示意图
2. 量化指标

  检测网络在最后会增加一个NMS(非极大值抑制),将重复冗余的候选框去掉。这个过程涉及以下两个量化指标:

  • 预测得分:NMS假设一个边框的预测得分越高,这个边框就要被优先考虑,其他与其重叠超过一定程度的边框都要被舍弃,非极大值即是指得分的非极大值。
  • IoU:用于评价两个边框的重合程度。如果两个边框的IoU超过一定阈值时,得分低的边框会被舍弃。阈值通常取0.5或者0.7。
3. 具体流程

  NMS的输入包含5个预测量,即所有候选框的得分、左上点坐标、右下点坐标,以及1个设定的IoU阈值。
  具体流程如下:

  • 按照得分,对所有边框进行降序排列,记录下排列的索引order,并新建一个列表keep,作为最终筛选后的边框索引结果。
  • 将排序后的第一个边框置为当前边框,并将其保留到keep中,再求当前边框与剩余所有框的IoU。
  • 在order中,仅仅保留IoU小于设定阈值的索引,重复第二步,直到order中仅仅剩余一个边框,则将其保留到keep中,退出循环,NMS结束。

二、Soft NMS

1. 漏检现象

  NMS对于分布密集的物体,容易出现漏检现象。即当两个真实物体靠的较近且得分不一致时,两个框的IoU较大,可能超过了阈值,此时NMS会筛掉得分较低的框。

  NMS的计算公式如式(2-1)所示:
si={si,iou(M,bi)<Nt0,iou(M,bi)⩾Nt(2-1)s_{i}=\left\{\begin{matrix} s_{i}, & iou(M,b_{i})< N_{t}& \\ 0, & iou(M,b_{i})\geqslant N_{t}& \end{matrix}\right.\tag{2-1}si​={si​,0,​iou(M,bi​)<Nt​iou(M,bi​)⩾Nt​​​(2-1)

  公式中SiS_{i}Si​代表了每个框的得分,MMM为当前得分最高的框,bib_{i}bi​为剩余框的某一个,NtN_{t}Nt​为设定的阈值,可以看到当IoU大于NtN_{t}Nt​时,该边框的得分直接置0,相当于被舍弃了,从而有可能造成边框的漏检。

2. Soft NMS

  Soft NMS对于IoU大于阈值的边框,没有将其得分直接置0,而是降低该边框的得分。

  Soft NMS的计算公式如式(2-2)所示:

si={si,iou(M,bi)<Ntsi(1−iou(M,bi)),iou(M,bi)⩾Nt(2-2)s_{i}=\left\{\begin{matrix} s_{i}, & iou(M,b_{i})< N_{t}& \\ s_{i}(1-iou(M,b_{i})), & iou(M,b_{i})\geqslant N_{t}& \end{matrix}\right.\tag{2-2}si​={si​,si​(1−iou(M,bi​)),​iou(M,bi​)<Nt​iou(M,bi​)⩾Nt​​​(2-2)

  从公式中可以看出,利用边框的得分与IoU来确定新的边框得分,如果当前边框与边框MMM的IoU超过设定阈值NtN_{t}Nt​时,边框的得分呈线性的衰减。

  但是,式(2-2)不是一个连续函数,当一个边框与MMM的重叠IoU超过阈值NtN_{t}Nt​时,其得分会发生跳变,这种跳变会对检测结果产生较大的波动,因此还需要寻找一个更为稳定、连续的得分重置函数,最终Soft NMS给出了式(2-3)所示的重置函数。

si=sie−iou(M,bi)2σ,∀bi∉D(2-3)s_{i}=s_{i}e^-{\frac{iou(M,b_{i})^{2}}{\sigma }}, \forall b_{i}\notin D \tag{2-3}si​=si​e−σiou(M,bi​)2​,∀bi​∈/D(2-3)

  采用这种得分衰减的方式,对于那些得分很高的边框来说,在后续的计算中还有可能被作为正确的检测款框,从而提高模型的召回率。

三、Softer NMS

1. 定位置信度

  NMS和Soft NMS都使用了预测分类置信度作为衡量指标,即假定分类置信度越高的边框,其位置也越准确。

  但位置置信度与分类置信度并不是强相关的关系,基于此,Softer NMS新增加了一个定位置信度的预测,使得高分类置信度的边框位置变得更加准确,从而有效提升了检测的性能。

2. 分布假设

  为了更全面地描述边框预测,Softer NMS方法对预测边框与真实物体做了两个分布假设:

  • 真实物体的分布是狄拉克delta分布,即标准差为0的高斯分布的极限。

δ(x)={+∞,x=00,x=otherwise\delta (x)=\left\{\begin{matrix} +\infty , & x=0 & \\ 0 , & x=otherwise & \end{matrix}\right.δ(x)={+∞,0,​x=0x=otherwise​​

  • 预测边框的分布满足高斯分布。

X∼N(μ,σ2)X\sim N(\mu ,\sigma ^{2})X∼N(μ,σ2)

  基于以上两个假设,Softer NMS提出了一种基于KL(Kullback-Leibler)散度的边框回归损失函数KL Loss。(KL散度是用来精确计算当把一个分布近似为另一个分布时,损失了多少信息KL散度是用来精确计算当把一个分布近似为另一个分布时,损失了多少信息KL散度是用来精确计算当把一个分布近似为另一个分布时,损失了多少信息)这里的KL Loss是最小化预测边框的高斯分布与真实物体的狄克拉分布之间的KL散度。即预测边框分布越接近于真实物体分布,损失越小。

3. 网络结构

在这里插入图片描述

图3-1 Softer NMS网络结构图

  Softer NMS在计算回归损失时,增加了一个标准差预测分支,从而形成边框的高斯分布,与边框的预测一起求得KL损失。

  边框的标准差可以被看做边框的位置置信度,因此Softer NMS利用该标准差也改善了NMS过程。

NMS算法(NonMaximumSuppression) NMS算法 非极大值抑制(NMS)顾名思义就是抑制不是极大值的元素,搜索局部的极大值。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。这里不讨论通用的NMS算法,而是用于在目标检测中用于提取分数最高的窗口的。 例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要... 阅读详情

相关推荐

torchvision.ops.nms实现NMS

torchvision.ops.nms计算NMS

蓝羽飞鸟的博客 6669

【目标检测】 非极大值抑制—NMS

在目标检测任务中,一个目标可能会被多个边界框检测到,这些边界框可能会有不同的位置和大小,但表示同一个目标。)非极大值抑制是一种常用的方法,用于抑制这些重叠的边界框,只保留置信度最高的那个边界框,从而得到最终的目标检测结果。

qq_43456016的博客 8132

我的世界Bukkit服务器插件开发教程(九)NMS

NMS 万不得已不要用,一般情况下还是用 Bukkit API 吧。在下一章,我们将要学会自己自定义实体的行为特征,这就要接触到 NMS 中的一些东西了,比如触发器。

一个无聊的程序猿 4909

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

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

深度学习技术前沿 1161

芒果YOLOv8改进174:NMS篇:独家首发最新原创ShapeIoU_NMS、PIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度

YOLOv8改进172:NMS篇:独家首发最新原创ShapeIoU_NMS、PIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1181

小知识点系列(十五) 本文(4.2万字) | 解读NMS | Soft-NMS | IoU-Net | Softer-NMS | Adaptive NMS | DIoU NMS |

在执行目标检测任务时,算法可能对同一目标有多次检测。NMS是一种让你确保算法只对每个对象得到一个检测的方法,即“清理检测”。如下图所示:如果用一句话概括NMS的意思就是:筛选出一定区域内属于同一种类别得分最大的框NMSSoft-NMS及都是以分类置信度优先的NMS,未考虑定位置信度,即没有考虑定位与分类得分可能出现不一致的情况,特别是框的边界有模棱两可的情形时。采用的都是传统的IoU,只考虑两包围盒子之间的重叠率,未能充分反映两包围盒子之间相对位置关系。实际上NMS。

专注于人工智能学习,总结 1329

目标检测之非极大值抑制(NMS)各种变体

由于图片不能复制,原连接如下: https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247488685&idx=1&sn=73c1274ae8801c6cfd21fd8e72a0206e&chksm=ec1ff954db68704227272a6a563d4df7577bd281490d3605a63...

张伟的专栏 5908

芒果YOLOv8改进12:NMS篇:独家首发最新原创XIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能、收敛速度和鲁棒性

YOLOv8独家原创改进:提出原创XIoU_NMS改进点

包括YOLOv5、YOLOv7、YOLOv8等模型改进 2486

目标检测中NMS的GPU实现(来自于Faster R-CNN中的nms_kernel.cu文件)

最近要修改Faster R-CNN中实现的GPU版的NMS代码,于是小白的我就看起了CUDA编程,当然也只是浅显地阅读一些教程,快速入门而已,所以具体需要注意的以及一些思想,大家移步此博主的系列教程: 在了解了CUDA编程的核心思想后,我们便可以开始阅读nms_kernel.cu文件了,先直接上源码(部分简单的已经注释),如下: // ----------------------------...

qq_21368481的博客 1万+

芒果YOLOv8改进01:NMS 篇:独家首发最新原创EfficiCLNMS改进点,改进有效可以直接当做自己的原创改进点来写

YOLOv8 代码实践|独家原创内容,直接当做原创点

包括YOLOv5、YOLOv7、YOLOv8等模型改进 7352

芒果YOLOv8改进04:损失函数NMS篇:原创改进创新点 SIoU-NMS,EIoU-NMS,DIoU-NMS,CIoU-NMS,GIoU-NMS改进

YOLOv8代码实践,结合SIoU-NMS,EIoU-NMS,DIoU-NMS,CIoU-NMS,GIoU-NMS改进

包括YOLOv5、YOLOv7、YOLOv8等模型改进 2266

YOLOv3源码阅读之五:nms_utils.py

一、YOLO简介   YOLO(You Only Look Once)是一个高效的目标检测算法,属于One-Stage大家族,针对于Two-Stage目标检测算法普遍存在的运算速度慢的缺点,YOLO创造性的提出了One-Stage。也就是将物体分类和物体定位在一个步骤中完成。YOLO直接在输出层回归bounding box的位置和bounding box所属类别,从而实现one-stage。   ...

DaVinciL的博客 2017

芒果YOLO11改进161:NMS篇:独家首发最新原创ShapeIoU_NMS、PIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度

NMS篇:独家首发最新原创ShapeIoU_NMS、PIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 464

论文阅读: Soft-NMS

Introduction 传统的Non-Maximum Supression去重过程如下: 但是对于两个“高度重合的object”,却容易“误杀”,导致只剩下一个bbox: Innovation 针对传统的NMS计算公式: Bharat Singh等人提出了soft版的NMS: 即: 不再删除所有与highest-score的bbox大于IoU阈值的框,而改为降...

JNing 1893

芒果YOLOv8改进41:NMS篇:独家首发最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度

YOLOv8原创改进|最新原创WIoU_NMS改进点

包括YOLOv5、YOLOv7、YOLOv8等模型改进 994

NMS算法介绍

NMS算法的介绍,用于IOU比较。MTCNN中使用了这个算法。

DeepDriving | 目标检测中的非极大值抑制(NMS)算法

经典的Anchor-Based目标检测算法(YOLO、SSD、Faster-RCNN)中都包含一个生成候选边界框的过程,出于提高目标检测召回率的目的,通常会生成数量众多的候选边界框,这些候选边界框有不同的长宽比,同时每个候选边界框都会被分配一个置信度分数。在目标检测的后处理阶段,可以先通过阈值过滤掉大部分置信度低于阈值的候选边界框,但是对于同一个目标,还是有可能会有好几个置信度高于阈值的边界框会留下来,这时候就需要通过非极大值抑制(Non-Max Suppression, NMS)算法来去掉重复的边界框。

csdn_xmj的博客 2023
上一篇: YOLOv5改进——使用深度可分离卷积轻量化C3
下一篇: 论文阅读笔记——《室内服务机器人的实时场景分割算法》
晓shuo
晓shuo 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄6年 4万+粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓shuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值