当前位置:首页 > 学习资源 > 讲师博文 > 目标检测中的非极大值抑制(NMS)是什么?

目标检测中的非极大值抑制(NMS)是什么? 时间:2026-11-11      来源:华清远见

非极大值抑制(Non-Maximum Suppression, NMS)是目标检测后处理中的一种去重算法:模型通常会在同一个目标周围输出很多重叠的候选框,每个框带有类别和置信度。NMS 的目标是保留每个目标最可靠的一个框,抑制掉与它高度重叠的其他框。

基本流程

假设已有候选框集合 (B),每个框有置信度 (s):

1.先按置信度从高到低排序;

2.取出当前置信度最高的框 (M),加入最终结果;

3.计算剩余框与 (M) 的 IoU(交并比);

4.删除与 (M) 的 IoU 大于阈值(Nt)的框;

5.在剩余框中重复步骤 2–4,直到没有框为止。

伪代码:

NMS(B, threshold):

result = []

sort B by confidence descending

while B not empty:

M = B.pop_first() # 当前最高分框

result.append(M)

for box in B:

if IoU(M, box) > threshold:

remove box from B

return result

关键点

IoU 阈值:常见取 0.5、0.6、0.7 等。

o阈值太低:抑制太强,可能误删靠近的不同目标;

o阈值太高:抑制太弱,同一个目标可能保留多个框。

按类别分别做 NMS:多类别检测中,通常对每个类别独立执行 NMS,避免不同类别的框互相抑制。

先做置信度过滤:一般先去掉低置信度框,再做 NMS,减少计算量。

计算复杂度:朴素实现约为(O(N2)),框很多时可能较慢。

为什么需要 NMS

目标检测模型,尤其是基于锚框或密集预测的方法,会在同一目标附近产生多个高分框。NMS 通过“保留最高分、抑制高重叠框”的贪心策略,得到更干净、更简洁的检测结果。

常见变体

Soft-NMS:不是直接删除高 IoU 框,而是降低其置信度,适合密集目标;

GIoU-NMS / DIoU-NMS:用 GIoU、DIoU 替代 IoU 判断重叠;

Class-wise NMS:按类别分别抑制;

Batched NMS:GPU 上批量并行实现;

NMS-free 检测器:如 DETR 类方法,通过集合预测减少对 NMS 的依赖。

一句话总结:NMS 是目标检测中按置信度贪心保留最优框、删除与已保留框高度重叠候选框的后处理去重方法。

上一篇:PCB设计中的DRC检查是什么?常见错误有哪些?

下一篇:PyTorch中Tensor是什么? 与NumPy数组有什么区别?

戳我查看嵌入式每月就业风云榜

点我了解华清远见高校学霸学习秘籍

猜你关心企业是如何评价华清学员的

干货分享
相关新闻
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2026 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号-5,京公海网安备11010802025203号

回到顶部