Non-Maximum Suppression (NMS)
学习非极大值抑制 (NMS) 如何消除目标检测中重复的边界框。发现 Ultralytics YOLO26 如何提供原生的端到端 NMS。
Non-Maximum Suppression (NMS) 是一种后处理技术,用于在object detection中精炼模型生成的原始预测结果。当对象检测模型分析图像时,它通常会为一个对象生成多个重叠的bounding boxes,每个框都带有相关的confidence score。这些冗余预测的产生是因为模型可能会在稍微不同的尺度或位置检测到相同的特征。NMS 通过为每个对象只保留最准确的边界框并丢弃其他框来过滤此输出,从而确保最终输出干净、精确且没有重复。
非极大值抑制的工作原理#
NMS 算法作用于一组候选边界框及其对应的置信度得分。其目标是为对象选择最佳框,并抑制(移除)任何与其显著重叠的其他框,因为这些框很可能是对同一对象的重复检测。该过程通常遵循以下步骤:
-
过滤: 剔除所有置信度得分低于特定阈值(例如 0.25)的边界框,以立即移除弱预测。
-
排序: 根据置信度得分对剩余的框进行降序排列。
-
选择: 选择置信度得分最高的框作为有效检测结果。
-
Comparison: 使用Intersection over Union (IoU)(一种衡量两个框之间重叠程度的指标)将此选中的框与所有其他剩余的框进行比较。
-
抑制: 如果选定框与另一个框之间的 IoU 超过预定义的阈值(例如 0.45),则得分较低的框会被视为重复项并被移除。
-
迭代: 对尚未被抑制或选择的下一个得分最高的框重复此过程,直到所有框都处理完毕。
实际应用#
NMS 在精度至关重要且重复检测可能干扰下游系统的场景中必不可少。
- 自动驾驶: 在自动驾驶系统中,摄像头会检测行人、其他车辆和交通标志。模型可能会为单个行人预测三个略有不同的框。NMS 确保车辆的规划系统仅接收该行人的一个坐标,从而防止因“幽灵”障碍物导致的错误刹车或路径规划错误。
- Retail Inventory Management: 当使用computer vision清点货架上的商品时,物品通常靠得非常近。如果没有 NMS,由于重叠的预测,单个可乐罐可能会被计算两次,从而导致库存水平不准确。NMS 会精炼这些检测结果,以确保库存数量与实际相符。
使用 PyTorch 实现 NMS#
虽然许多现代框架在内部处理 NMS,但了解其实现有助于调整参数。以下示例演示了如何使用PyTorch library应用 NMS:
import torch
import torchvision.ops as ops
# Example bounding boxes: [x1, y1, x2, y2]
boxes = torch.tensor(
[
[100, 100, 200, 200], # Box A
[105, 105, 195, 195], # Box B (High overlap with A)
[300, 300, 400, 400], # Box C (Distinct object)
],
dtype=torch.float32,
)
# Confidence scores for each box
scores = torch.tensor([0.9, 0.8, 0.95], dtype=torch.float32)
# Apply NMS with an IoU threshold of 0.5
# Boxes with IoU > 0.5 relative to the highest scoring box are suppressed
keep_indices = ops.nms(boxes, scores, iou_threshold=0.5)
print(f"Indices to keep: {keep_indices.tolist()}")
# Output will likely be [2, 0] corresponding to Box C (0.95) and Box A (0.9),
# while Box B (0.8) is suppressed due to overlap with A.NMS 与端到端检测#
传统上,NMS 一直是位于主神经网络之外的强制性“清理”步骤,这增加了inference latency。然而,该领域正在向端到端架构演进。
- Standard NMS: 一个启发式过程,需要手动调整 IoU 阈值。如果阈值太低,彼此靠近的有效对象可能会被漏掉(低recall)。如果太高,则会残留重复项(低precision)。
- End-to-End Models: 诸如YOLO26之类的下一代模型被设计为原生端到端。它们学会在训练期间准确预测每个对象一个边界框,从而有效地将 NMS 过程内部化。这消除了对外部后处理的需求,从而在Ultralytics Platform上实现了更快的推理速度和更简单的部署管道。
相关概念#
- Soft-NMS: 一种变体,其中重叠的框不会被严格移除,而是降低其置信度得分。如果重叠对象的得分在衰减后仍然足够高,这使得它们(例如人群中的人)仍然可以被检测到。
- Anchor Boxes: 许多检测器用于估计对象大小的预定义框形状。NMS 应用于从这些锚框精炼出的最终预测。
- Intersection over Union (IoU): NMS 用于确定两个框重叠程度的数学公式,充当抑制的决策阈值。






