NMS 系列:soft,softer,weighted,iou-guided, Diou, Adaptive

系列文章目录

IOU 系列:IOU,GIOU,DIOU,CIOU

文章目录

  • 系列文章目录
  • 一、NMS简介
    • (一)为什么要使用NMS
    • (二)NMS的算法流程
    • (三)NMS的置信度重置函数
    • (四)NMS的局限性
    • (五)改进思路
  • 二、Soft-NMS概述
    • (一)Soft-NMS的思想
    • (二)Soft-NMS的置信度重置函数
  • 三、softer NMS
    • (一)提出背景
    • (二)softer NMS的核心思想
    • (三)softer NMS的算法流程
      • 1、先验假设
      • 2、KL 损失
      • 3、网络架构
      • 4、算法步骤
  • 四、Weighted-NMS
    • (一)提出背景
    • (二)Weighted-NMs思想
  • 五、IOU-Guided NMS
    • (一)lOU-Guided NMs的思路
    • (二)lOU-Guided NMs的算法流程
  • 六、DIOU-NMS
  • 七、 Adaptive NMS
    • (一)Adaptive NMS的提出背景
    • (二)Adaptive-NMS的思想
    • (三)Adaptive-NMS的算法流程
    • (四)Adaptive-NMS的网络结构
  • 八、NMS系列总结
    • (一)根据是否需要训练分类
    • (二)根据改进策略进行分类


一、NMS简介

(一)为什么要使用NMS

非极大抑制的功能:筛选出一定区域内属于同一种类得分最大的框

大多数目标检测算法(稠密预测)在得到最终的预测结果时,特征图的每个位置都会输出多个检测结果,整个特征图上会出很多个重叠的框。例如要检测一辆车,可能会有多个bbox都把这辆车给框了出来,因此需要从这些bbox中选出框得最好的,删除掉其它的。要定义框得好与不好,就得看bbox的预测置信度;为了删掉重叠的多余的框,就得利用IoU来检查重叠程度。
在这里插入图片描述

(二)NMS的算法流程

每轮选取置信度最大的 Bounding Box ,接着关注所有剩下的 BBox 中与选取的 BBox 有着高重叠(IoU)的,它们将在这一轮被抑制。这一轮选取的 BBox 会被保留输出,且不会在下一轮出现。接着开始下一轮,重复上述过程:选取置信度最大 BBox ,抑制高 IoU BBox。
在这里插入图片描述

(三)NMS的置信度重置函数

对于IOU>阈值的两个相邻的检测框,NMS将其得分暴力置零,相当于直接舍弃。
在这里插入图片描述

(四)NMS的局限性

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

(五)改进思路

  1. 根据手动设置阈值的缺陷,通过自适应的方法在目标系数时使用小阈值,目标稠密时使用大阈值。例如Adaptive NMS。

  2. 将低于阈值的直接置为0的做法太hard,通过将其根据IoU大小来进行惩罚衰减,则变得更加soft。例如Soft NMS,Softer NMS。

  3. 只能在CPU上运行,速度太慢的改进思路有三个,一个是设计在GPU上的NMS,如CUDA NMS,一个是设计更快的NMS,如Fast NMS,最后一个是掀桌子,设计一个神经网络来实现NMS,如ConvNMS。

  4. IoU的做法存在一定缺陷,改进思路是将目标尺度、距离引进IoU的考虑中。如DIoU。

二、Soft-NMS概述

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

(一)Soft-NMS的思想

对于与最高分框的IOU大于阈值的框M,我们不把他直接去掉,而是将他的置信度降低(添加惩罚项来抑制,I0U越大,抑制的程度也越大),这样的方法可以使多一些框被保留下来,从而一定程度上避免遮挡的情况出现。

在这里插入图片描述

(二)Soft-NMS的置信度重置函数

如果只是把置信度降低,那么是不是原来周围的多个表示同一个物体的框也没办法去掉了? Soft-NMS这样来解决这个问题,同一个物体周围的框有很多,每次选择分数最高的框,抑制其周围的框,与分数最高的框的loU越大,抑制的程度越大,一般来说,表示同一个物体的框(比如都是前面的马)的loU是会比另一个物体的框(比如后面的马)的loU大,因此,这样就会将其他物体的框保留下来,而同一个物体的框被去掉。

Soft-NMS算法的置信度重置函数有两种方式:

  • 一种采用线性加权:
    在这里插入图片描述

  • 另一种采用高斯加权:
    在这里插入图片描述

三、softer NMS

(一)提出背景

NMS 默认置信度分数较高的框,定位更精确,由于分类和回归任务没有直接相关性,因此这个条件并不总是成立。

  • 图(a)中两个边界框位置都不够精确;
  • 图(b)中置信度较高的边界框的左边界精确度较低。
    在这里插入图片描述

(二)softer NMS的核心思想

  • 针对图(a)中的问题一:提出一种方法根据IoU置信度加权合并多个框优化最终生成框
  • 针对图(b)中的问题二:构建一种IoU的置信度,来建模有多大把握认为当前框和GT是重合的

基于上述观察,softer NMS算法设计了一个新的网络结构来对检测框的位置概率分布进行建模,对所有框不仅预测位置坐标,还预测位置方差。对于重叠的检测框,根据重叠程度和位置不确定性进行投票,重叠程度高,位置分布方差小的检测框权重大,从而获得更精确的检测框。该文还提出了一种新的包围框回归的损失函数(KL Loss),用来同时学习包围框变换和定位置信度。

softer NMS的特点:

  • 边界框参数化(预测一个分布替代唯一的定位);
  • 训练时边框回归时采取KL损失;
  • 一个新的NMS方法提高定位准确性。

(三)softer NMS的算法流程

1、先验假设

Softer NMS 论文中有两个先验假设:( x x x表示偏移前的预测框, x e x_e xe表示偏移后的预测框, x g x_g xg表示GT框)

  • Bounding box的是高斯分布: P θ ( x ) = 1 2 π σ 2 e ( x − x e ) 2 2 σ 2 P_\theta(x)=\frac{1}{2\pi\sigma^2}e^{\frac{(x-x_e)^2}{2\sigma^2}} Pθ(x)=2πσ21e2σ2(xxe)2
  • ground truth bounding box是狄拉克delta分布(即标准方差为0的高斯分布极限): P D ( z ) = δ ( x − x g ) P_D(z)=\delta(x-x_g) PD(z)=δ(xxg)

2、KL 损失

然后,考虑到KL散度常用于衡量两个分布之间的差异,作者将最小化包围框预测的高斯分布和ground truth的狄拉克delta分布的KL散度作为文章的KL Loss。直观上解释,KL Loss使得包围框预测呈高斯分布,且与ground truth相近。而将包围框预测的标准差看作置信度。
在这里插入图片描述
最终推导后损失函数:
在这里插入图片描述

3、网络架构

softer NMS的网络结构图如下,上面是原始fasterRCNN的结构,下面是softer-nms结构,多加了一个sigma预测,也就是box std,而Box的预测其实就是上面公式中的 x e x_e xe。由图中可知,标准差估计与包围框定位都包含在损失函数Lreg中。
在这里插入图片描述

4、算法步骤

下图所示为Softer-NMS的实现过程,其实很简单,预测的四个顶点坐标,分别对IoU>Nt的预测加权平均计算,得到新的4个坐标点:

  • 蓝色部分是soft-nms,只是降低了S的权值
  • 绿色部分表示拿出所有与B的IoU大于Nt的框(用idx表示),然后将所有这些框做一个加权,B[idx]/C[idx]其实是B[idx] * 1/C[idx],后者是置信度,并使用sum做了归一化。
    在这里插入图片描述

四、Weighted-NMS

(一)提出背景

NMS方法在一组候选框中选择分数最大的框作为最终的目标框。然而,非极大的检测结果保存了特征的最大值,因此忽略非极大的检测检测结果是不合适的。
在这里插入图片描述

(二)Weighted-NMs思想

soft NMS是通过抑制机制来改善剔除结果(降低超阈值的得分策略),Weighted NMS(W-NMS)则是从极大值这个方面进行改进。W-NMS认为Traditional NMS每次迭代所选出的最大得分框未必是精确定位的,冗余框也有可能是定位良好的。因此,W-NMS通过分类置信度与IOU来对同类物体所有的边框坐标进行加权平均,并归一化。 其中,加权平均的对象包括M自身以及IoU≥NMS阈值的相邻框。
在这里插入图片描述

五、IOU-Guided NMS

(一)lOU-Guided NMs的思路

在一般检测的框架中,增加了一个额外的分支用来预测每个框的定位置信度(该框与GT的loU,下图),然后用预测的loU代替分类置信度作为NMS排序的关键,消除误导性分类置信度引起的抑制失效。
在这里插入图片描述

(二)lOU-Guided NMs的算法流程

lOU-Guided NMs的伪代码如下图所示。具体来说,就是使用 定位置信度 作为 NMS 的筛选依据,每次迭代挑选出最大定位置信度的框 M ,然后将loU>=NMS 阈值的相邻框剔除,但把 冗余框及其自身的最大分类得分 直接赋子 M 。因此,最终输出的框必定是 同时具有最大分类得分与最大定位置信度的框。
在这里插入图片描述

六、DIOU-NMS

DIOU-NMS在nms过程中采用DloU的计算方式替换了loU,由于DloU的计算考虑到了两框中心点位置的信息,故使用DloU进行评判的nms效果更符合实际,效果更优。
在这里插入图片描述

七、 Adaptive NMS

(一)Adaptive NMS的提出背景

使用单一阈值的NMS会面临这种困境:较低的阈值会导致丢失高度重叠的对象(图中蓝框是未检测出来的目标),而较高的阈值会导致更多的误报(红框是检测错误的目标)。这在密集场景下,如行人检测中,会导致较低的准确率。
在这里插入图片描述

(二)Adaptive-NMS的思想

Adaptive NMS应用了动态抑制策略,其中阈值随着目标聚集和相互遮挡(密度)而上升,并在目标单独出现时衰减。并设了一个自网络用于学习密度的分数。

  • 对于远离M的检测框,它们被误报的可能性较小,因此应该保留它们。
  • 对于高度重叠的相邻检测,抑制策略不仅取决于与M的重叠,还取决于M是否位于拥挤区域。如果M位于拥挤的区域,其高度重叠的相邻框很可能是真正的正例,应该分配较轻的惩罚或保留。但是对于稀疏区域中的实例,惩罚应该更高以修剪误报。

(三)Adaptive-NMS的算法流程

对于每个目标的密度,定义如下:
在这里插入图片描述

依据这个定义,更新策略为:(其中 N M N_M NM表示 M M M的Adaptive NMS 阈值, d M dM dM 是目标 M M M覆盖的密度。)
在这里插入图片描述

可以看出,这个抑制措施具有三个属性:

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

(四)Adaptive-NMS的网络结构

文中将密度估计看作一个回归问题,使用如下的三层的卷积子网络进行预测,采用Smooth L1 损失。
在这里插入图片描述
Adaptive NMS的伪代码,与基本NMS算法相比仅替换了阈值。
在这里插入图片描述

八、NMS系列总结

(一)根据是否需要训练分类

  • 不需要训练的NMS方法(NMS、Soft-NMS、Weighted-NMS、Cluster-NMS)
  • 需要训练的NMS(softerNMS、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)
NMS方法总结(不需要训练的NMS方法&&需要训练的NMS方法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588192.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能试卷分析、智能组卷系统

本课题开发一个新型智能试卷分析评价系统&#xff0c;该系统实现了学生试卷的生成与评估以及对各种评估信息的管理和维护。该系统使用SpringBoot MysqlVue搭建的框架为设计平台&#xff0c;以B/S模式开发与设计题库及试卷管理模块。 学生功能&#xff1a;登录&#xff0c;答题考…

SpringData ElasticSearch - 简化开发,完美适配 Spring 生态

目录 一、SpringData ElasticSearch 1.1、环境配置 1.2、创建实体类 1.3、ElasticsearchRestTemplate 的使用 1.3.1、创建索引 设置映射 1.3.2、简单的增删改查 1.3.3、搜索 1.4、ElasticsearchRepository 1.4.1、使用方式 1.4.2、简单的增删改查 1.4.3、分页排序查…

软考高级架构师:系统性能设计-阿姆达尔定律概念和例题

一、AI 讲解 系统性能设计中的一个重要概念是阿姆达尔定律&#xff08;Amdahl’s Law&#xff09;。阿姆达尔定律是由吉恩阿姆达尔&#xff08;Gene Amdahl&#xff09;在1967年提出的&#xff0c;用于评估系统性能提升的理论上限&#xff0c;特别是在考虑并行计算时。该定律表…

Java获取IP地址以及MAC地址(附Demo)

目录 前言1. IP及MAC2. 特定适配器 前言 需要获取客户端的IP地址以及MAC地址 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class test {public static void main(String[] args) {try {// 执行命令Process process…

MYSQL-7.内存

内存 Mysql的内存结构 大体可分为四个板块&#xff1a;mysql工作组件、线程本地内存、mysql共享内存、存储引擎缓冲区&#xff1b; Mysql server工作组件 对应着mysql架构图中的组件层&#xff1a; Mysql在启动时&#xff0c;会将这些工作组件初始化到内存中&#xff1b; …

编译时提示存在多个默认构造函数的错误怎么解决呢?

c程序中&#xff0c;如果编译器提升存在多个默认构造函数怎么解决呢&#xff1f; class Date { public:Date(){_year 1900;_month 1;_day 1;}Date(int year 1900, int month 1, int day 1){_year year;_month month;_day day;} private:int _year;int _month;int _day…

redis 数据库的安装及使用方法

目录 一 关系数据库与非关系型数据库 &#xff08;一&#xff09;关系型数据库 1&#xff0c;关系型数据库是什么 2&#xff0c;主流的关系型数据库有哪些 3&#xff0c;关系型数据库注意事项 &#xff08;二&#xff09;非关系型数据库 1&#xff0c;非关系型数据库是…

Python快速入门系列-9(Python项目实战)

第九章:Python项目实战 9.1 开发一个简单的Web应用9.1.1 项目概述9.1.2 环境准备9.1.3 项目结构9.1.4 代码实现9.1.4.1 创建数据库模型9.1.4.2 创建视图9.1.4.3 实用工具函数9.1.4.4 运行应用9.1.5 模板设计9.2 数据分析与可视化项目9.2.1 项目概述9.2.2 环境准备9.2.3 数据分…

超详细工具Navicat安装教程

Navicat是一款功能强大的数据库管理工具&#xff0c;可用于管理多种类型的数据库&#xff0c;包括MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL等。以下是Navicat工具的一些主要特点和功能&#xff1a; 一.功能介绍 跨平台支持 多种数据库支持 直观的用户界面 数据…

【AI数字人】根据音频生成带动画的数字人

这是一个从音频和蒙面手势生成全身人体手势的框架,包括面部、局部身体、手和整体动作。为了实现这一目标,我们首先引入 BEATX (BEAT-SMPLXFLAME),一个新的网格级整体协同语音数据集。 BEATX 将 MoShed SMPLX 身体与 FLAME 头部参数相结合,进一步细化头部、颈部和手指运动的…

idea使用docker将Java项目生成镜像并使用

1&#xff1a;开启docker 远程访问 使用 vim 编辑docker服务配置文件 vim /lib/systemd/system/docker.service [Service] Typenotify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not suppor…

全面剖析CSS盒子模型:概念理解、构成元素、布局影响与实战技巧

在CSS进行网页布局与样式设计的过程中&#xff0c;盒子模型&#xff08;Box Model&#xff09;扮演着无可替代的角色。这一关键概念是精准掌控页面元素布局与样式的基石。唯有深入理解和熟练运用盒子模型的原理及各项属性&#xff0c;开发者方能自如地塑造页面中各元素的最终形…