YOLOv10是清华大学研究人员研发的一种新的实时目标检测方法,它解决了YOLO以前版本在后处理和模型架构方面的不足。关于YOLOv10中的NMS-free(无NMS)设计,这是其重要的创新点之一,通过NMS-free消除了后处理时间导致的推理延迟。
github链接:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection
原论文地址:https://arxiv.org/abs/2405.14458
代码本人已经移植到YOLOv8中,并且成功实验,后处理时间为0。
一、NMS-free设计的背景
非极大值抑制(NMS, Non-Maximum Suppression)是目标检测中常用的一种后处理技术,用于去除多余的检测框,只保留最佳的检测框。然而,NMS会增加模型的推理时间,特别是在实时检测场景中,这会成为影响性能的一个关键因素。YOLOv10针对这一问题,提出了NMS-free的设计,以减少推理延迟并提高实时性。
二、NMS-free设计的实现
YOLOv10通过引入一致的双重分配(Consistent Dual Assignments)来消除对NMS的需求。具体来说,它采用了以下策略:
-
双重标签分配:YOLOv10在训练过程中为每个对象生成多个预测,同时采用一对一(one-to-one)和一对多(one-to-many)的标签分配方式。一对一匹配只将每个预测分配给一个真实值,类似于匈牙利匹配方法,但训练时间更短;而一对多匹配保留了原始结构和优化目标,受益于密集的监督。
-
双头设计:YOLOv10在模型中引入了一对多头和一对一头。一对多头保留了原始YOLO的结构,用于训练过程中提供丰富的监督信号;而一对一头则使用一对一匹配来获得标签分配,以减少推理时的计算成本。在推理过程中,仅使用一对一头进行预测,从而避免了NMS后处理。
-
匹配度量:为了分配标签,YOLOv10使用了一种综合考虑分类和回归任务的匹配度量。该度量同时考虑了分类分数、预测框和真实框之间的交并比(IOU),以及超参数α和β。
YOLOv8-nmsFree.yml配置文件如下
# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model wi