Ultralytics YOLOv5u 模型完全指南:anchor-free 升级版 YOLOv5 的架构、性能与实战用法
2026/9/15 11:45:39 网站建设 项目流程

Ultralytics YOLOv5u 模型完全指南:anchor-free 升级版 YOLOv5 的架构、性能与实战用法

【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10

导读

YOLOv5u 是 Ultralytics 在 YOLOv5 原始架构基础上升级而来的目标检测模型系列,其核心变化在于引入了此前在 YOLOv8 中使用的 anchor-free(无锚框)、无 objectness 分离检测头,从而在精度与速度之间取得了更优的平衡。本文以本仓库的 YOLOv5 模型文档 为主体,结合仓库内真实模型配置文件(yolov5.yaml、yolov5-p6.yaml)与检测头实现源码,完整梳理 YOLOv5u 的十个预训练变体、COCO 性能指标,以及 Python API 与 CLI 两种实战用法,帮助你快速评估并落地这一检测方案。

YOLOv5u 是什么:从 YOLOv5 到 YOLOv5u

YOLOv5u 起源于 Ultralytics 开发的 YOLOv5 模型中引入的anchor-free、无 objectness(无目标置信度)分离头集成到了 YOLOv5 的骨干与颈部结构之上。这一"换头"改造直接影响了模型的检测方式:

  • 传统方案依赖预定义的锚框(anchor boxes)来预测目标位置,锚框的数量、尺寸与长宽比需要针对数据集精心设计;
  • YOLOv5u 方案通过在每个网格位置直接回归"从网格点到目标框四条边的距离"(DFL 分布 + 中心点距离回归)来解码边界框,不再需要预定义锚框集合,也省去了单独的目标置信度分支。

从仓库源码可以看到,YOLOv5u 在检测头实现上与本仓库统一使用的 Detect 头 完全一致:anchors仅初始化为空张量,推理时通过make_anchors按特征图网格动态生成锚点,而分类分支cv3直接输出nc个通道(无 objectness 通道),边界框分支cv2输出4 * reg_max个通道,其中reg_max = 16为 DFL(Distribution Focal Loss)通道数。正是这种统一化改造,让 YOLOv5u 能在现有训练、验证、导出全流程中无缝复用 YOLOv8 的检测范式。

从实测结果与派生特性来看,YOLOv5u 为研究与实际工程中需要兼顾精度与吞吐的目标检测场景提供了一条高效路径。官方文档也给出了模型文件名的兼容提示:在 checks.py 的check_yolov5u_filename中,当你传入旧的yolov5n.pt时,系统会自动重定向为新的yolov5nu.pt,并提示yolov5n.pt -> yolov5nu.pt的映射关系——说明u系列模型由 Ultralytics 官方训练,性能优于传统 YOLOv5 权重。

核心特性

Anchor-free 分离 Ultralytics 头

传统目标检测模型依赖预定义锚框来预测目标位置,而 YOLOv5u 采用 anchor-free 分离头,使检测机制更加灵活与自适应。从 yolov5.yaml 的 head 段可以看到,最终检测层仅是一个Detect(nc)模块,不再携带任何锚框配置参数;锚点全部在 Detect 头 推理阶段按输入特征图形状动态生成。这显著降低了对数据集先验统计的依赖,在多样化的场景中表现更稳健。

优化精度-速度权衡

速度与精度往往此消彼长,而 YOLOv5u 通过架构精简挑战了这一权衡:它提供了校准过的平衡点,确保实时检测的同时不牺牲精度。这一点在"性能指标"一节的 COCO 实测数据中可以得到直接验证——例如yolov5su在 640 输入下 mAP 50-95 达到 43.0,而 A100 TensorRT 单图推理仅需约 1.27 ms。对于自动驾驶、机器人、实时视频分析等对响应速度要求苛刻的应用,这一特性尤为宝贵。

多种预训练模型

不同任务需要不同的工具集。YOLOv5u 提供了一整套 COCO 预训练模型(80 类),涵盖 n/s/m/l/x 五个标准尺度以及 6 个 P6 高分辨率变体,无论是推理、验证还是训练,都有针对性的模型可选,避免了"一刀切"方案。

架构速览:从配置文件看 YOLOv5u 的网络结构

本仓库中 YOLOv5u 的网络结构由两个配置文件定义,均采用 YAML 的[from, number, module, args]描述格式:

P3-P5 标准模型:yolov5.yaml

  • 类别数nc: 80,与 COCO 数据集一致;
  • 通过复合缩放常量(compound scaling)定义五个尺度,每个尺度为[depth, width, max_channels]三元组:n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 1024]l: [1.00, 1.00, 1024]x: [1.33, 1.25, 1024],文件注释明确说明'model=yolov5n.yaml'会以n尺度调用该 YAML——这也是为什么性能表中 YAML 列统一指向此文件;
  • Backbone(v6.0):从Conv(64, 6, 2, 2)起始,依次堆叠Conv+C3结构,通道数从 64 → 128 → 256 → 512 → 1024,分别产生 P1/2 到 P5/32 五个特征层级,最终以SPPF(1024, 5)(Spatial Pyramid Pooling - Fast)收尾,SPPF 模块的实现位于 block.py;
  • Head(v6.0):采用 FPN + PAN 结构——自上而下的Conv+nn.Upsample(nearest)+Concat+C3融合路径,与自下而上的下采样融合路径,最终输出 P3/8-small、P4/16-medium、P5/32-large 三个检测尺度,汇入Detect头。

P3-P6 高分辨率模型:yolov5-p6.yaml

在标准模型基础上增加一级下采样(P6/64),backbone 通道扩展为... → 768 → 1024 → 1024,head 增加一层上采样融合,最终由Detect(P3, P4, P5, P6)四个尺度输出,适合对 1280 分辨率输入下的中小目标检测。对应n6/s6/m6/l6/x6五个变体,文件注释同样说明'model=yolov5n-p6.yaml'会以n尺度调用该文件。

从 tasks.py 的DetectionModel类实现看,加载上述 YAML 后,parse_model会解析配置构建网络,随后以 256 像素的零张量前向一次以计算各检测层的实际 stride,并调用bias_init()完成检测头偏置初始化——整个过程与 YOLOv8 检测模型完全同构,验证了 YOLOv5u 已融入统一的模型体系。

支持的模型变体、任务与模式

YOLOv5u 模型系列专注于 目标检测 任务,并支持从开发到部署的完整模式闭环:

模型类型预训练权重任务推理验证训练导出
YOLOv5uyolov5nuyolov5suyolov5muyolov5luyolov5xuyolov5n6uyolov5s6uyolov5m6uyolov5l6uyolov5x6u目标检测

其中u后缀代表由 Ultralytics 训练的改进版权重;6后缀代表 P6 高分辨率变体。上表覆盖了 推理、验证、训练 与 导出 四种模式,确保用户可以在各类目标检测场景中充分发挥 YOLOv5u 的能力。

性能指标(COCO 数据集)

以下性能数据来自官方文档对 COCO 数据集训练模型的评测(80 个预训练类别),其中size为输入像素尺寸,mAP<sup>val 50-95</sup>为验证集平均精度,Speed CPU ONNXSpeed A100 TensorRT分别为 ONNX 运行时(CPU)与 TensorRT(A100 GPU)的单图推理耗时。

检测(Detection)

模型配置 YAML尺寸
(像素)
mAPval
50-95
速度CPU ONNX
(ms)
速度A100 TensorRT
(ms)
参数量
(M)
FLOPs
(B)
yolov5nuyolov5.yaml64034.373.61.062.67.7
yolov5suyolov5.yaml64043.0120.71.279.124.0
yolov5muyolov5.yaml64049.0233.91.8625.164.2
yolov5luyolov5.yaml64052.2408.42.5053.2135.0
yolov5xuyolov5.yaml64053.2763.23.8197.2246.4
yolov5n6uyolov5-p6.yaml128042.1211.01.834.37.8
yolov5s6uyolov5-p6.yaml128048.6422.62.3415.324.6
yolov5m6uyolov5-p6.yaml128053.6810.94.3641.265.7
yolov5l6uyolov5-p6.yaml128055.71470.95.4786.1137.4
yolov5x6uyolov5-p6.yaml128056.82436.58.98155.4250.7

几点观察与选型建议:

  • 640 系列中,yolov5nu仅 2.6 M 参数、7.7 B FLOPs,是最轻量的选择,适合边缘设备;yolov5xu以 97.2 M 参数换到 53.2 的 mAP,适合对精度要求更高的场景;
  • **1280 系列(P6)**在参数量增加有限的条件下(如n6仅 4.3 M)显著提升了精度(42.1),代价是更高的推理时延,适合对中小目标检测精度敏感、且算力充足的场景;
  • 表中u变体的参数量与标准 YOLOv5 接近,精度与速度表现得益于 anchor-free 头的精简与 Ultralytics 训练流程的改进。

使用示例:Python 与 CLI

下面提供最简训练与推理示例。关于各模式的完整说明,请参考 预测、训练、验证 与 导出 文档页。

Python API

PyTorch 预训练*.pt模型以及配置*.yaml文件都可以传入YOLO()类来创建模型实例:

from ultralytics import YOLO # 加载 COCO 预训练的 YOLOv5n 模型(首次运行时自动下载 yolov5nu.pt) model = YOLO('yolov5n.pt') # 打印模型信息(可选) model.info() # 在 COCO8 示例数据集上训练 100 个 epoch results = model.train(data='coco8.yaml', epochs=100, imgsz=640) # 用 YOLOv5n 模型对 bus.jpg 图片执行推理 results = model('path/to/bus.jpg')

参数说明:data指向数据集配置(仓库内置的示例数据集配置见 coco8.yaml),epochs控制训练轮数,imgsz为输入图像尺寸。传入yolov5n.pt时,系统会自动将旧名称映射到yolov5nu.pt并下载对应权重。

CLI 命令行

CLI 命令可直接运行模型:

# 加载 COCO 预训练 YOLOv5n 模型,并在 COCO8 示例数据集上训练 100 个 epoch yolo train model=yolov5n.pt data=coco8.yaml epochs=100 imgsz=640 # 加载 COCO 预训练 YOLOv5n 模型,对 bus.jpg 图片执行推理 yolo predict model=yolov5n.pt source=path/to/bus.jpg

如需在验证集上评估模型精度,可执行yolo val model=yolov5n.pt data=coco8.yaml;如需导出为 ONNX/TensorRT 等格式,可执行yolo export model=yolov5n.pt format=onnx。仓库根目录的 requirements.txt 与 pyproject.toml 定义了运行环境的依赖与打包信息,可据此准备安装环境。

引用与许可

如果在研究中使用 YOLOv5 或 YOLOv5u,请按以下 BibTeX 引用 Ultralytics YOLOv5 仓库:

@software{yolov5, title = {Ultralytics YOLOv5}, author = {Glenn Jocher}, year = {2020}, version = {7.0}, license = {AGPL-3.0}, url = {https://github.com/ultralytics/yolov5}, doi = {10.5281/zenodo.3908559}, orcid = {0000-0001-5950-6979} }

请注意:YOLOv5 模型以 AGPL-3.0 与 Enterprise 两种许可证提供,使用时需根据自身场景确认许可条款。

【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询