NMS 非极大抑制(Non-Maximum Suppression)概述
·
一、NMS 是什么
NMS = Non-Maximum Suppression,非极大值抑制,是推理阶段的后处理算法,几乎所有目标检测都要使用到。
字面拆解
- 极大值:同一目标里置信度最高的预测结果(模型最确定是这物体)
- 非极大值:和高置信结果高度重叠、分数更低的重复预测
- 抑制:直接删掉这些重复冗余结果
通常目标检测用IoU(框交并比) 判断重叠。


二、经典贪心 NMS 完整流程
- 所有预测框按置信度 score 从高到低排序
- 取出最高分框,放入最终结果列表
- 计算这个框和其余所有同类别框的 IoU
- 如果 IoU > NMS 阈值 → 删除该框(视为重复目标)
- 循环剩余框,直到处理完毕
三、算法流程
现有 6 个物体检测候选框 A~F,置信度从小到大:A<B<C<D<E<F,F 为置信度最高的预测框;设定 IoU 重叠判定NMS阈值为 0.5。

步骤 1:筛选全局置信最高框,存入结果集
全部候选框中 F 置信分数最高,先把 F 存入最终保留框列表。
步骤 2:计算剩余所有框与 F 的 IoU,剔除高度重叠冗余框
分别计算 A、B、C、D、E 和 F 的矩形交并比 IoU:
- 若某框和 F 的 IoU>0.5:判定二者预测的是同一个物体,直接删除该框。本案例中 B、D 与 F 重叠度过高,执行删除;
- 若某框和 F 的 IoU≤0.5:判定属于独立目标,暂时保留,本轮剩余有效框为 A、C、E。
步骤 3:循环迭代处理剩余候选框
对本轮剩下的 A、C、E,按置信度重新排序:E>C>A
- 选取当前最高分 E,加入保留框列表;
- 分别计算 A、C 与 E 的 IoU,重叠超过 0.5 则剔除重复框;
最终输出
筛选结束后,仅保留无高度重叠的两个最优框:F、E,分别对应画面里两个独立苹果目标。

四、NMS 阈值大小带来的影响
假设阈值为 iou_thresh
1)阈值设置过小(例:0.3、0.35)
✅抑制力度很强
⚠️风险:密集目标容易被误删。两个挨得很近的不同物体,只要重叠超过阈值,低分物体会被删掉,造成漏检。
适用:目标稀疏、要求严格去重场景。
2)阈值设置过大(例:0.75、0.8)
✅容忍重叠,不容易误删相邻目标
⚠️风险:同一个物体多个重叠框全部保留,画面出现大量重复框(多重检测)。
适用:拥挤人群、堆叠商品、密集小目标。
更多推荐





所有评论(0)