【工业领域】掌握非极大值抑制(NMS)目标检测后处理方法——从重复框消除到工程落地核心技术
2026/6/17 6:01:31 网站建设 项目流程

目录

一、前言

二、为什么需要NMS

(一)模型输出特点

(二)问题本质

(三)工业后果

三、NMS核心思想

(一)一句话理解

(二)核心原则

四、IoU是NMS的基础

(一)IoU定义

(二)作用

(三)工业常用阈值

五、标准NMS流程

(一)步骤总览

(二)流程示意

Step 1:选A

Step 2:计算IoU

Step 3:继续处理D

六、NMS数学表达

(一)核心逻辑

(二)抑制条件

七、NMS完整算法流程

八、NMS的关键参数

(一)Score阈值

(二)IoU阈值

(三)类别策略

1. Class-aware NMS

2. Class-agnostic NMS

九、NMS在工业中的作用

(一)核心价值

(二)典型应用

(三)工业意义

十、NMS的局限性

(一)误删问题

(二)小目标问题

(三)阈值敏感

十一、NMS改进算法

(一)Soft-NMS

思想

优点

(二)DIoU-NMS

(三)Weighted NMS

(四)Matrix NMS

十二、Soft-NMS公式

十三、NMS与目标检测模型关系

(一)YOLO

(二)Faster R-CNN

(三)DETR

十四、NMS在YOLO中的位置

十五、工业优化策略

(一)合理设置IoU阈值

(二)类别分开NMS

(三)结合置信度过滤

(四)使用Soft-NMS

十六、NMS性能影响

(一)速度影响

(二)工业优化

十七、NMS与真实世界误差

(一)检测偏移

(二)标注误差

(三)密集目标

十八、NMS总结流程图

十九、总结


一、前言

在目标检测系统中,模型的输出通常不是“一个框”,而是一堆候选框。

例如同一个目标:

猫 → 可能输出10个框

但真实需求是:

只保留一个最准确的框

否则会出现严重问题:

  • 重复检测

  • 结果混乱

  • 工业系统误报警

因此,在目标检测流程中必须引入一个关键步骤:

非极大值抑制(Non-Maximum Suppression, NMS)

NMS是工业目标检测后处理的核心技术之一。


二、为什么需要NMS

(一)模型输出特点

以YOLO为例:

模型会输出:

多个候选框 + 置信度

例如:

置信度
box10.92
box20.88
box30.85

但这些框:

可能都指向同一个目标

(二)问题本质

模型并不知道:

哪个框才是最优的

因此需要后处理:

去重 + 选择最佳框

(三)工业后果

如果没有NMS:

  • 一个缺陷被检测多次

  • 误触发报警系统

  • 影响产线决策


三、NMS核心思想

(一)一句话理解

保留最自信的框,删除重叠过多的框

(二)核心原则

NMS遵循两个关键条件:

1. 置信度最高优先保留 2. 重叠过大的框被抑制

四、IoU是NMS的基础

(一)IoU定义

IoU=\frac{Area\ of\ Overlap}{Area\ of\ Union}


(二)作用

IoU用于判断两个框是否“重复”。


(三)工业常用阈值

场景IoU阈值
常规检测0.5
工业检测0.3 ~ 0.6
高精度检测0.7

五、标准NMS流程

(一)步骤总览

1. 按置信度排序 2. 选择最高分框 3. 计算与其他框IoU 4. 删除IoU超过阈值的框 5. 重复步骤2

(二)流程示意

假设有多个框:

A(0.95) B(0.90) C(0.85) D(0.60)

Step 1:选A

A作为基准框。


Step 2:计算IoU

IoU(A,B) = 0.8 → 删除B IoU(A,C) = 0.75 → 删除C IoU(A,D) = 0.2 → 保留D

Step 3:继续处理D

最终结果:

A + D

六、NMS数学表达

(一)核心逻辑

B=arg\max_{b_i\in S} score(b_i)


(二)抑制条件

IoU(b_i,b_j) > \theta \Rightarrow suppress(b_j)


七、NMS完整算法流程

Input: 候选框集合 S 1. 按score排序 2. 初始化结果集 R = {} 3. while S不为空: 取最高score框b 加入R 删除S中与b IoU > 阈值的框 4. 返回R

八、NMS的关键参数

(一)Score阈值

过滤低置信度框

(二)IoU阈值

控制去重强度:

  • 太低 → 误删

  • 太高 → 重复框多


(三)类别策略

1. Class-aware NMS

不同类别之间不抑制

2. Class-agnostic NMS

所有框一起处理

九、NMS在工业中的作用

(一)核心价值

保证检测结果唯一性

(二)典型应用

  • 缺陷检测

  • 目标跟踪

  • 安防监控

  • 自动驾驶


(三)工业意义

没有NMS:

系统无法稳定运行

十、NMS的局限性

(一)误删问题

相邻目标可能被误删:

例如:

两个紧挨的螺丝

(二)小目标问题

小目标容易被覆盖。


(三)阈值敏感

不同阈值影响巨大。


十一、NMS改进算法


(一)Soft-NMS

思想

不是删除,而是:

降低置信度

优点

  • 减少误删

  • 更适合密集目标


(二)DIoU-NMS

引入:

中心距离

(三)Weighted NMS

对多个框进行加权融合。


(四)Matrix NMS

用于实例分割任务。


十二、Soft-NMS公式

score_i = score_i \cdot e^{-IoU(b_i,b_j)^2/\sigma}


十三、NMS与目标检测模型关系

(一)YOLO

  • 默认使用NMS

  • 推理后处理步骤


(二)Faster R-CNN

  • Proposal阶段 + NMS


(三)DETR

不使用NMS(端到端)

十四、NMS在YOLO中的位置

Backbone ↓ Neck ↓ Head ↓ 候选框输出 ↓ NMS(后处理) ↓ 最终结果

十五、工业优化策略


(一)合理设置IoU阈值

  • 缺陷检测:0.3~0.5

  • 通用检测:0.5


(二)类别分开NMS

避免跨类别误抑制。


(三)结合置信度过滤

减少计算压力。


(四)使用Soft-NMS

提高密集场景表现。


十六、NMS性能影响

(一)速度影响

NMS = O(N²)

候选框越多越慢。


(二)工业优化

  • Top-K筛选

  • GPU加速NMS

  • TensorRT插件


十七、NMS与真实世界误差


(一)检测偏移

框偏移导致IoU计算错误。


(二)标注误差

GT不准确影响NMS判断。


(三)密集目标

容易互相抑制。


十八、NMS总结流程图

候选框 ↓ 置信度排序 ↓ 选最高框 ↓ 计算IoU ↓ 过滤重叠框 ↓ 重复循环 ↓ 最终输出

十九、总结

非极大值抑制(NMS)是目标检测后处理阶段最关键的算法之一,它的核心作用是从多个重叠候选框中筛选出最优结果,从而保证检测输出的唯一性与稳定性。

本文系统讲解了:

1、NMS存在的必要性;

2、IoU基础概念;

3、标准NMS流程;

4、数学表达;

5、关键参数设计;

6、Soft-NMS与改进方法;

7、工业应用场景;

8、YOLO中的NMS位置;

9、性能与优化问题;

10、真实工业挑战。

可以将NMS理解为:

“一个基于置信度排序与重叠抑制的目标框过滤机制,是目标检测从‘候选结果’走向‘最终输出’的关键一步。”

在工业视觉系统中,NMS不仅是一个算法步骤,更是保证系统稳定性与可靠性的核心工程组件。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询