跳转至内容

美团 YOLOv6

概述

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

美团 YOLOv6 模型示例图片 YOLOv6 概述。 模型架构图,展示了经过重新设计的网络组件和训练策略,这些改进显著提升了性能。(a) YOLOv6 的 neck(显示了 N 和 S)。请注意,对于 M/L,RepBlocks 被替换为 CSPStackRep。(b) BiC 模块的结构。(c) SimCSPSPPF 块。来源)。

主要功能

  • 双向连接 (BiC) 模块: YOLOv6 在检测器的 neck 中引入了 BiC 模块,增强了定位信号,并在速度几乎没有降低的情况下提供了性能提升。
  • Anchor-Aided Training (AAT) Strategy: 该模型提出了 AAT,以享受 基于 anchor无 anchor 范例的优势,而不会影响推理效率。
  • 增强的骨干网络和 Neck 设计: 通过加深 YOLOv6 以在骨干网络和 Neck 中包含另一个阶段,该模型在高分辨率输入下实现了 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 训练和推理示例。有关这些和其他模式的完整文档,请参见PredictTrainValExport文档页面。

示例

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模型变体,重点介绍了它们在对象检测任务中的功能以及它们与各种操作模式(如推理验证训练导出)的兼容性。这种全面的支持确保用户可以在各种对象检测场景中充分利用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 是一种先进的目标检测器,它在速度和准确性之间实现了平衡,非常适合实时应用。它具有显著的架构增强功能,例如双向连接 (BiC) 模块和锚框辅助训练 (AAT) 策略。这些创新在最小的速度降低下提供了显著的性能提升,使 YOLOv6 成为目标检测任务的一个有竞争力的选择。

YOLOv6 中的 Bi-directional Concatenation (BiC) 模块如何提高性能?

YOLOv6 中的双向连接(BiC)模块增强了检测器颈部的定位信号,在速度影响可忽略不计的情况下提高了性能。该模块有效地结合了不同的特征图,提高了模型精确检测对象的能力。有关 YOLOv6 功能的更多详细信息,请参阅主要功能部分。

如何使用 Ultralytics 训练 YOLOv6 模型?

您可以使用 Ultralytics 通过简单的 Python 或 CLI 命令来训练 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 进行评估。有关性能指标的更多信息,请参阅性能指标部分。

Anchor-Aided Training (AAT) 策略如何使 YOLOv6 受益?

YOLOv6 中的 Anchor-Aided Training (AAT) 结合了基于 anchor 和无 anchor 方法的元素,增强了模型的检测能力,而不会影响推理效率。这种策略在训练期间利用 anchor 来改进边界框预测,使 YOLOv6 在各种对象检测任务中都有效。

Ultralytics 中的 YOLOv6 模型支持哪些操作模式?

YOLOv6 支持多种操作模式,包括推理、验证、训练和导出。这种灵活性允许用户在不同的场景中充分利用模型的功能。请查看支持的任务和模式部分,以获得每种模式的详细概述。



📅 创建于 1 年前 ✏️ 更新于 5 个月前

评论