1. 原理与目标
-
cv::dnn::NMSBoxes
基于传统的非极大值抑制(NMS)算法,通过交并比(IoU)筛选重叠框,保留置信度最高的框,抑制冗余检测。支持变体如 Soft-NMS(通过降低分数而非直接抑制)。
核心逻辑:排序置信度 → 逐轮选择最高分框 → 抑制与其重叠的框。 -
NMS-free
完全避免使用传统NMS,通常通过模型设计或替代后处理策略减少冗余预测。例如:-
端到端模型(如 DETR):通过 Transformer 和二分图匹配直接生成唯一预测。
-
关键点检测(如 CenterNet):基于物体中心点或角点预测,自然减少重叠框。
-
稀疏预测设计:通过损失函数约束输出稀疏性(如 YOLOv9 的变体)。
-
2. 应用场景
-
cv::dnn::NMSBoxes
-
适用于依赖密集候选框的传统检测模型(如 YOLO、Faster R-CNN、SSD)。
-
需要后处理去重的场景,尤其是通用目标检测任务。
-
-
NMS-free
-
适用于端到端模型或关键点检测框架(如 DETR、CenterNet)。
-
密集物体检测(如人群计数)或对实时性要求高的场景。
-
3. 性能对比
维度 | cv::dnn::NMSBoxes | NMS-free |
---|---|---|
速度 | 后处理耗时随框数量增加而上升 | 无NMS步骤,可能更快(依赖模型设计) |
准确性 | 在密集场景下可能抑制有效框(漏检) | 减少密集漏检,但对模型训练要求更高 |
实现复杂度 | 简单(OpenCV 一行调用) | 复杂(需模型结构设计或替代后处理逻辑) |
泛化性 | 广泛支持各类检测模型 | 需特定模型结构配合 |
4. 优缺点
-
cv::dnn::NMSBoxes
-
优点:成熟、易用,与现有框架无缝集成。
-
缺点:依赖人工阈值调优,密集场景性能下降。
-
-
NMS-free
-
优点:避免阈值敏感性问题,适合密集检测;可能减少计算延迟。
-
缺点:模型设计复杂,训练数据需求高(如 DETR 需更长训练周期)。
-
5. 典型代表
-
使用 NMS 的模型:YOLO 系列、Faster R-CNN、RetinaNet。
-
NMS-free 模型:DETR(Transformer)、CenterNet(关键点)、YOLOv9-nmsfree 变体。
总结
-
选择 cv::dnn::NMSBoxes:若使用传统检测模型,追求快速实现和成熟方案。
-
选择 NMS-free:若需端到端部署优化、密集场景检测,或愿接受更高模型设计复杂度。
两者并非绝对对立,部分 NMS-free 方法可能结合轻量后处理(如聚类),而传统模型也可通过改进 NMS(如 Soft-NMS)提升性能。实际选择需权衡任务需求、硬件条件及开发资源。