美团 YOLOv6
概述
Meituan YOLOv6 是一种先进的对象检测器,在速度和准确性之间提供了卓越的平衡,使其成为实时应用的热门选择。该模型在其架构和训练方案中引入了多项显著增强功能,包括双向连接 (BiC) 模块的实现、锚框辅助训练 (AAT) 策略以及改进的 backbone 和 neck 设计,从而在 COCO 数据集 上实现了最先进的准确性。

YOLOv6概述。 模型架构图,展示了经过重新设计的网络组件和训练策略,这些策略带来了显著的性能提升。(a) YOLOv6 的颈部(显示 N 和 S)。注意,对于 M/L,RepBlocks 被 CSPStackRep 替换。(b) BiC 模块的结构。(c) SimCSPSPPF 块。(来源)。
主要功能
- 双向拼接 (BiC) 模块:YOLOv6 在检测器颈部引入了 BiC 模块,增强了定位信号,并在速度退化可忽略不计的情况下带来了性能提升。
- Anchor-Aided Training (AAT) Strategy: 该模型提出了 AAT,以享受 基于 anchor 和 无 anchor 范例的优势,而不会影响推理效率。
- 增强型骨干网络和颈部设计: 通过加深YOLOv6的骨干网络和颈部,增加一个阶段,该模型在高分辨率输入下,在COCO数据集上实现了最先进的性能。
- 自蒸馏策略:实施了一种新的自蒸馏策略,以提升 YOLOv6 小型模型的性能,在训练期间增强辅助回归分支,并在推理时将其移除,以避免显著的速度下降。
性能指标
YOLOv6 提供了多种不同尺度的预训练模型:
- YOLOv6-N:使用NVIDIA T4 GPU,在COCO val2017数据集上以1187 FPS达到37.5% AP。
- YOLOv6-S:在484 FPS下达到45.0% AP。
- YOLOv6-M:在226 FPS下达到50.0% AP。
- YOLOv6-L:在116 FPS下达到52.8% AP。
- YOLOv6-L6:实时最先进的精度。
YOLOv6 还提供了针对不同精度的量化模型,以及为移动平台优化的模型。
使用示例
此示例提供了简单的YOLOv6训练和推理示例。有关这些及其他模式的完整文档,请参阅预测、训练、验证和导出文档页面。
示例
YOLOv6 *.yaml 文件可以传递给 YOLO() 类以在 python 中构建相应的模型:
from ultralytics import YOLO
# Build a YOLOv6n model from scratch
model = YOLO("yolov6n.yaml")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv6n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
可以使用 CLI 命令直接运行模型:
# Build a YOLOv6n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov6n.yaml data=coco8.yaml epochs=100 imgsz=640
# Build a YOLOv6n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov6n.yaml source=path/to/bus.jpg
支持的任务和模式
YOLOv6 系列提供了一系列模型,每个都针对高性能目标检测进行了优化。这些模型满足不同的计算需求和精度要求,使其适用于广泛的应用。
| 模型 | 文件名 | 任务 | 推理 | 验证 | 训练 | 导出 |
|---|---|---|---|---|---|---|
| YOLOv6-N | yolov6n.yaml | 目标检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-S | yolov6s.yaml | 目标检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-M | yolov6m.yaml | 目标检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-L | yolov6l.yaml | 目标检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-X | yolov6x.yaml | 目标检测 | ✅ | ✅ | ✅ | ✅ |
此表详细概述了YOLOv6模型变体,重点介绍了它们在object detection任务中的能力以及与各种操作模式(如推理、验证、训练和导出)的兼容性。这种全面的支持确保用户可以在广泛的object detection场景中充分利用YOLOv6模型的功能。
引用和致谢
我们要感谢以下作者在实时目标检测领域做出的重大贡献:
@misc{li2023yolov6,
title={YOLOv6 v3.0: A Full-Scale Reloading},
author={Chuyi Li and Lulu Li and Yifei Geng and Hongliang Jiang and Meng Cheng and Bo Zhang and Zaidan Ke and Xiaoming Xu and Xiangxiang Chu},
year={2023},
eprint={2301.05586},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
原始的 YOLOv6 论文可在arXiv上找到。作者已将其工作公开发布,并且代码库可在GitHub上访问。我们感谢他们为推动该领域发展并使其工作惠及更广泛社区所做的努力。
常见问题
美团YOLOv6是什么,它有何独特之处?
美团 YOLOv6 是一种先进的对象 detect 器,它平衡了速度和准确性,非常适合实时应用。它具有显著的架构增强功能,例如双向连接 (BiC) 模块和锚点辅助训练 (AAT) 策略。这些创新在速度下降最小的情况下提供了显著的性能提升,使 YOLOv6 成为对象 detect 任务的竞争性选择。
YOLOv6中的双向拼接(BiC)模块如何提升性能?
YOLOv6 中的双向拼接 (BiC) 模块增强了检测器颈部的定位信号,在对速度影响可忽略不计的情况下提升了性能。该模块有效结合不同的特征图,提高了模型准确检测物体的能力。有关 YOLOv6 功能的更多详细信息,请参阅主要功能部分。
如何使用 Ultralytics 训练 YOLOv6 模型?
您可以使用简单的Python或CLI命令,通过Ultralytics训练YOLOv6模型。例如:
示例
from ultralytics import YOLO
# Build a YOLOv6n model from scratch
model = YOLO("yolov6n.yaml")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo train model=yolov6n.yaml data=coco8.yaml epochs=100 imgsz=640
更多信息,请访问Train页面。
YOLOv6 有哪些不同的版本及其性能指标?
YOLOv6 提供了多个版本,每个版本都针对不同的性能需求进行了优化:
- YOLOv6-N:在1187 FPS下达到37.5% AP
- YOLOv6-S:在484 FPS下达到45.0% AP
- YOLOv6-M:在226 FPS下达到50.0% AP
- YOLOv6-L:在116 FPS下达到52.8% AP
- YOLOv6-L6:在实时场景中实现最先进的精度
这些模型在 COCO 数据集上使用 NVIDIA T4 GPU 进行评估。有关更多性能指标,请参阅性能指标部分。
锚点辅助训练(AAT)策略如何使YOLOv6受益?
YOLOv6 中的锚点辅助训练 (AAT) 结合了基于锚点和无锚点方法的元素,在不影响推理效率的情况下增强了模型的检测能力。该策略在训练期间利用锚点来改进 边界框 预测,使 YOLOv6 在各种目标检测任务中表现出色。
Ultralytics中的YOLOv6模型支持哪些操作模式?
YOLOv6 支持多种操作模式,包括推理、验证、训练和导出。这种灵活性使用户能够在不同场景中充分利用模型的功能。有关每种模式的详细概述,请查阅支持的任务和模式部分。