48 KiB
中文 | 한국어 | 日本語 | Русский | Deutsch | Français | Español | Português | Türkçe | Tiếng Việt | العربية
Ultralytics YOLOv5 🚀 是由 Ultralytics 开发的一款尖端的、代表当前最高水平(SOTA)的计算机视觉模型。基于 PyTorch 框架,YOLOv5 以其易用性、速度和准确性而闻名。它融合了广泛研究和开发的见解与最佳实践,使其成为各种视觉 AI 任务的热门选择,包括目标检测、图像分割和图像分类。
我们希望这里的资源能帮助您充分利用 YOLOv5。请浏览 YOLOv5 文档获取详细信息,在 GitHub 上提出 issue 以获得支持,并加入我们的 Discord 社区进行提问和讨论!
如需申请企业许可证,请填写 Ultralytics 授权许可表格。
🚀 YOLO11:下一代进化
我们激动地宣布推出 Ultralytics YOLO11 🚀,这是我们最先进(SOTA)视觉模型的最新进展!YOLO11 现已在 Ultralytics YOLO GitHub 仓库发布,它继承了我们速度快、精度高和易于使用的传统。无论您是处理目标检测、实例分割、姿态估计、图像分类还是定向目标检测(OBB),YOLO11 都能提供在各种应用中脱颖而出所需的性能和多功能性。
立即开始,释放 YOLO11 的全部潜力!访问 Ultralytics 文档获取全面的指南和资源:
# 安装 ultralytics 包
pip install ultralytics
📚 文档
请参阅 YOLOv5 文档,了解有关训练、测试和部署的完整文档。请参阅下文的快速入门示例。
安装
克隆仓库并在 Python>=3.8.0 环境中安装依赖项。确保您已安装 PyTorch>=1.8。
# 克隆 YOLOv5 仓库
git clone https://github.com/ultralytics/yolov5
# 导航到克隆的目录
cd yolov5
# 安装所需的包
pip install -r requirements.txt
使用 PyTorch Hub 进行推理
通过 PyTorch Hub 使用 YOLOv5 进行推理。模型 会自动从最新的 YOLOv5 发布版本下载。
import torch
# 加载 YOLOv5 模型(选项:yolov5n, yolov5s, yolov5m, yolov5l, yolov5x)
model = torch.hub.load("ultralytics/yolov5", "yolov5s") # 默认:yolov5s
# 定义输入图像源(URL、本地文件、PIL 图像、OpenCV 帧、numpy 数组或列表)
img = "https://ultralytics.com/images/zidane.jpg" # 示例图像
# 执行推理(自动处理批处理、调整大小、归一化)
results = model(img)
# 处理结果(选项:.print(), .show(), .save(), .crop(), .pandas())
results.print() # 将结果打印到控制台
results.show() # 在窗口中显示结果
results.save() # 将结果保存到 runs/detect/exp
使用 detect.py 进行推理
detect.py
脚本在各种来源上运行推理。它会自动从最新的 YOLOv5 发布版本下载模型,并将结果保存到 runs/detect
目录。
# 使用网络摄像头运行推理
python detect.py --weights yolov5s.pt --source 0
# 对本地图像文件运行推理
python detect.py --weights yolov5s.pt --source img.jpg
# 对本地视频文件运行推理
python detect.py --weights yolov5s.pt --source vid.mp4
# 对屏幕截图运行推理
python detect.py --weights yolov5s.pt --source screen
# 对图像目录运行推理
python detect.py --weights yolov5s.pt --source path/to/images/
# 对列出图像路径的文本文件运行推理
python detect.py --weights yolov5s.pt --source list.txt
# 对列出流 URL 的文本文件运行推理
python detect.py --weights yolov5s.pt --source list.streams
# 使用 glob 模式对图像运行推理
python detect.py --weights yolov5s.pt --source 'path/to/*.jpg'
# 对 YouTube 视频 URL 运行推理
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4'
# 对 RTSP、RTMP 或 HTTP 流运行推理
python detect.py --weights yolov5s.pt --source 'rtsp://example.com/media.mp4'
训练
以下命令演示了如何重现 YOLOv5 在 COCO 数据集上的结果。 模型和数据集都会自动从最新的 YOLOv5 发布版本下载。在单个 NVIDIA V100 GPU 上,YOLOv5n/s/m/l/x 的训练时间分别约为 1/2/4/6/8 天。使用多 GPU 训练可以显著减少训练时间。使用您的硬件允许的最大 --batch-size
,或使用 --batch-size -1
以启用 YOLOv5 AutoBatch。下面显示的批处理大小适用于 V100-16GB GPU。
# 在 COCO 上训练 YOLOv5n 300 个周期
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128
# 在 COCO 上训练 YOLOv5s 300 个周期
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64
# 在 COCO 上训练 YOLOv5m 300 个周期
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40
# 在 COCO 上训练 YOLOv5l 300 个周期
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24
# 在 COCO 上训练 YOLOv5x 300 个周期
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5x.yaml --batch-size 16

教程
- 训练自定义数据 🚀 推荐:学习如何在您自己的数据集上训练 YOLOv5。
- 获得最佳训练结果的技巧 ☘️:通过专家技巧提高模型性能。
- 多 GPU 训练:使用多个 GPU 加速训练。
- PyTorch Hub 集成 🌟 新增:使用 PyTorch Hub 轻松加载模型。
- 模型导出 (TFLite, ONNX, CoreML, TensorRT) 🚀:将您的模型转换为各种部署格式,如 ONNX 或 TensorRT。
- NVIDIA Jetson 部署 🌟 新增:在 NVIDIA Jetson 设备上部署 YOLOv5。
- 测试时增强 (TTA):使用 TTA 提高预测准确性。
- 模型集成:组合多个模型以获得更好的性能。
- 模型剪枝/稀疏化:优化模型的大小和速度。
- 超参数进化:自动找到最佳训练超参数。
- 使用冻结层进行迁移学习:使用迁移学习高效地将预训练模型应用于新任务。
- 架构摘要 🌟 新增:了解 YOLOv5 模型架构。
- Ultralytics HUB 训练 🚀 推荐:使用 Ultralytics HUB 训练和部署 YOLO 模型。
- ClearML 日志记录:与 ClearML 集成以进行实验跟踪。
- Neural Magic DeepSparse 集成:使用 DeepSparse 加速推理。
- Comet 日志记录 🌟 新增:使用 Comet ML 记录实验。
🛠️ 集成
探索 Ultralytics 与领先 AI 平台的关键集成。这些合作增强了数据集标注、训练、可视化和模型管理的能力。了解 Ultralytics 如何与 Weights & Biases (W&B)、Comet ML、Roboflow 和 Intel OpenVINO 合作以优化您的 AI 工作流程。

Ultralytics HUB 🚀 | W&B | Comet ⭐ 新增 | Neural Magic |
---|---|---|---|
简化 YOLO 工作流程:使用 Ultralytics HUB 轻松标注、训练和部署。立即试用! | 使用 Weights & Biases 无缝跟踪实验、超参数和结果。 | 永久免费,Comet 让您保存 YOLOv5 模型、恢复训练,并交互式地可视化和调试预测。 | 使用 Neural Magic DeepSparse 在 CPU 上运行 YOLOv5 推理速度提高达 6 倍。 |
⭐ Ultralytics HUB
使用 Ultralytics HUB ⭐ 体验无缝的 AI 开发,这是构建、训练和部署计算机视觉模型的终极平台。无需编写任何代码即可可视化数据集、训练 YOLOv5 和 YOLOv8 🚀 模型,并将它们部署到实际应用中。使用我们尖端的工具和用户友好的 Ultralytics App 将图像转化为可操作的见解。立即开始您的免费之旅!

🤔 为什么选择 YOLOv5?
YOLOv5 的设计注重简单性和易用性。我们优先考虑实际性能和可访问性。
YOLOv5-P5 640 图表
图表说明
- COCO AP val 表示在 交并比 (IoU) 阈值从 0.5 到 0.95 的平均精度均值 (mAP),在包含 5000 张图像的 COCO val2017 数据集上,使用不同推理尺寸(256 到 1536 像素)测量。
- GPU Speed 测量在 COCO val2017 数据集上使用 AWS p3.2xlarge V100 实例,批处理大小为 32 时,每张图像的平均推理时间。
- EfficientDet 数据来源于 google/automl 仓库,批处理大小为 8。
- 重现 这些结果,请使用命令:
python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt
预训练检查点
此表显示了在 COCO 数据集上训练的各种 YOLOv5 模型的性能指标。
模型 | 尺寸 (像素) |
mAP验证集 50-95 |
mAP验证集 50 |
速度 CPU b1 (毫秒) |
速度 V100 b1 (毫秒) |
速度 V100 b32 (毫秒) |
参数 (M) |
FLOPs @640 (B) |
---|---|---|---|---|---|---|---|---|
YOLOv5n | 640 | 28.0 | 45.7 | 45 | 6.3 | 0.6 | 1.9 | 4.5 |
YOLOv5s | 640 | 37.4 | 56.8 | 98 | 6.4 | 0.9 | 7.2 | 16.5 |
YOLOv5m | 640 | 45.4 | 64.1 | 224 | 8.2 | 1.7 | 21.2 | 49.0 |
YOLOv5l | 640 | 49.0 | 67.3 | 430 | 10.1 | 2.7 | 46.5 | 109.1 |
YOLOv5x | 640 | 50.7 | 68.9 | 766 | 12.1 | 4.8 | 86.7 | 205.7 |
YOLOv5n6 | 1280 | 36.0 | 54.4 | 153 | 8.1 | 2.1 | 3.2 | 4.6 |
YOLOv5s6 | 1280 | 44.8 | 63.7 | 385 | 8.2 | 3.6 | 12.6 | 16.8 |
YOLOv5m6 | 1280 | 51.3 | 69.3 | 887 | 11.1 | 6.8 | 35.7 | 50.0 |
YOLOv5l6 | 1280 | 53.7 | 71.3 | 1784 | 15.8 | 10.5 | 76.8 | 111.4 |
YOLOv5x6 + [TTA] |
1280 1536 |
55.0 55.8 |
72.7 72.7 |
3136 - |
26.2 - |
19.4 - |
140.7 - |
209.8 - |
表格说明
- 所有检查点都使用默认设置训练了 300 个周期。Nano (n) 和 Small (s) 模型使用 hyp.scratch-low.yaml 超参数,而 Medium (m)、Large (l) 和 Extra-Large (x) 模型使用 hyp.scratch-high.yaml。
- mAP验证集 值表示在 COCO val2017 数据集上的单模型、单尺度性能。
重现请使用:python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65
- 速度 指标是在 AWS p3.2xlarge V100 实例上对 COCO 验证集图像进行平均计算得出的。不包括非极大值抑制 (NMS) 时间(约 1 毫秒/图像)。
重现请使用:python val.py --data coco.yaml --img 640 --task speed --batch 1
- TTA (测试时增强) 包括反射和尺度增强以提高准确性。
重现请使用:python val.py --data coco.yaml --img 1536 --iou 0.7 --augment
🖼️ 分割
YOLOv5 发布版本 v7.0 引入了实例分割模型,这些模型达到了当前最高水平的性能。这些模型设计用于轻松训练、验证和部署。有关完整详细信息,请参阅发布说明,并探索 YOLOv5 分割 Colab Notebook 以获取快速入门示例。
分割检查点
YOLOv5 分割模型在 COCO 数据集上使用 A100 GPU 训练了 300 个周期,图像大小为 640 像素。模型被导出为 ONNX FP32 用于 CPU 速度测试,以及 TensorRT FP16 用于 GPU 速度测试。所有速度测试均在 Google Colab Pro 笔记本上进行,以确保可复现性。
模型 | 尺寸 (像素) |
mAP框 50-95 |
mAP掩码 50-95 |
训练时间 300 周期 A100 (小时) |
速度 ONNX CPU (毫秒) |
速度 TRT A100 (毫秒) |
参数 (M) |
FLOPs @640 (B) |
---|---|---|---|---|---|---|---|---|
YOLOv5n-seg | 640 | 27.6 | 23.4 | 80:17 | 62.7 | 1.2 | 2.0 | 7.1 |
YOLOv5s-seg | 640 | 37.6 | 31.7 | 88:16 | 173.3 | 1.4 | 7.6 | 26.4 |
YOLOv5m-seg | 640 | 45.0 | 37.1 | 108:36 | 427.0 | 2.2 | 22.0 | 70.8 |
YOLOv5l-seg | 640 | 49.0 | 39.9 | 66:43 (2x) | 857.4 | 2.9 | 47.9 | 147.7 |
YOLOv5x-seg | 640 | 50.7 | 41.4 | 62:56 (3x) | 1579.2 | 4.5 | 88.8 | 265.7 |
- 所有检查点均使用 SGD 优化器,
lr0=0.01
和weight_decay=5e-5
,在图像大小为 640 像素下,使用默认设置训练了 300 个周期。
训练运行记录在 https://wandb.ai/glenn-jocher/YOLOv5_v70_official。 - 准确度 值表示在 COCO 数据集上的单模型、单尺度性能。
重现请使用:python segment/val.py --data coco.yaml --weights yolov5s-seg.pt
- 速度 指标是在 Colab Pro A100 High-RAM 实例上对 100 张推理图像进行平均计算得出的。值仅表示推理速度(NMS 大约增加 1 毫秒/图像)。
重现请使用:python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1
- 导出 到 ONNX (FP32) 和 TensorRT (FP16) 是使用
export.py
完成的。
重现请使用:python export.py --weights yolov5s-seg.pt --include engine --device 0 --half
分割使用示例 
训练
YOLOv5 分割训练支持通过 --data coco128-seg.yaml
参数自动下载 COCO128-seg 数据集。对于完整的 COCO-segments 数据集,请使用 bash data/scripts/get_coco.sh --train --val --segments
手动下载,然后使用 python train.py --data coco.yaml
进行训练。
# 在单个 GPU 上训练
python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640
# 使用多 GPU 分布式数据并行 (DDP) 进行训练
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 --device 0,1,2,3
验证
在 COCO 数据集上验证 YOLOv5s-seg 的掩码平均精度均值 (mAP):
# 下载 COCO 验证集分割部分 (780MB, 5000 张图像)
bash data/scripts/get_coco.sh --val --segments
# 验证模型
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640
预测
使用预训练的 YOLOv5m-seg.pt 模型对 bus.jpg
执行分割:
# 运行预测
python segment/predict.py --weights yolov5m-seg.pt --source data/images/bus.jpg
# 从 PyTorch Hub 加载模型(注意:推理支持可能有所不同)
model = torch.hub.load("ultralytics/yolov5", "custom", "yolov5m-seg.pt")
![]() |
![]() |
---|
导出
将 YOLOv5s-seg 模型导出为 ONNX 和 TensorRT 格式:
# 导出模型
python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --device 0
🏷️ 分类
YOLOv5 发布版本 v6.2 引入了对图像分类模型训练、验证和部署的支持。请查看发布说明了解详情,并参阅 YOLOv5 分类 Colab Notebook 获取快速入门指南。
分类检查点
YOLOv5-cls 分类模型在 ImageNet 上使用 4xA100 实例训练了 90 个周期。ResNet 和 EfficientNet 模型在相同设置下进行了训练以供比较。模型被导出为 ONNX FP32(CPU 速度测试)和 TensorRT FP16(GPU 速度测试)。所有速度测试均在 Google Colab Pro 上运行以确保可复现性。
模型 | 尺寸 (像素) |
准确率 top1 |
准确率 top5 |
训练 90 周期 4xA100 (小时) |
速度 ONNX CPU (毫秒) |
速度 TensorRT V100 (毫秒) |
参数 (M) |
FLOPs @224 (B) |
---|---|---|---|---|---|---|---|---|
YOLOv5n-cls | 224 | 64.6 | 85.4 | 7:59 | 3.3 | 0.5 | 2.5 | 0.5 |
YOLOv5s-cls | 224 | 71.5 | 90.2 | 8:09 | 6.6 | 0.6 | 5.4 | 1.4 |
YOLOv5m-cls | 224 | 75.9 | 92.9 | 10:06 | 15.5 | 0.9 | 12.9 | 3.9 |
YOLOv5l-cls | 224 | 78.0 | 94.0 | 11:56 | 26.9 | 1.4 | 26.5 | 8.5 |
YOLOv5x-cls | 224 | 79.0 | 94.4 | 15:04 | 54.3 | 1.8 | 48.1 | 15.9 |
ResNet18 | 224 | 70.3 | 89.5 | 6:47 | 11.2 | 0.5 | 11.7 | 3.7 |
ResNet34 | 224 | 73.9 | 91.8 | 8:33 | 20.6 | 0.9 | 21.8 | 7.4 |
ResNet50 | 224 | 76.8 | 93.4 | 11:10 | 23.4 | 1.0 | 25.6 | 8.5 |
ResNet101 | 224 | 78.5 | 94.3 | 17:10 | 42.1 | 1.9 | 44.5 | 15.9 |
EfficientNet_b0 | 224 | 75.1 | 92.4 | 13:03 | 12.5 | 1.3 | 5.3 | 1.0 |
EfficientNet_b1 | 224 | 76.4 | 93.2 | 17:04 | 14.9 | 1.6 | 7.8 | 1.5 |
EfficientNet_b2 | 224 | 76.6 | 93.4 | 17:10 | 15.9 | 1.6 | 9.1 | 1.7 |
EfficientNet_b3 | 224 | 77.7 | 94.0 | 19:19 | 18.9 | 1.9 | 12.2 | 2.4 |
表格说明(点击展开)
- 所有检查点均使用 SGD 优化器,
lr0=0.001
和weight_decay=5e-5
,在图像大小为 224 像素下,使用默认设置训练了 90 个周期。
训练运行记录在 https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2。 - 准确率 值(top-1 和 top-5)表示在 ImageNet-1k 数据集上的单模型、单尺度性能。
重现请使用:python classify/val.py --data ../datasets/imagenet --img 224
- 速度 指标是在 Google Colab Pro V100 High-RAM 实例上对 100 张推理图像进行平均计算得出的。
重现请使用:python classify/val.py --data ../datasets/imagenet --img 224 --batch 1
- 导出 到 ONNX (FP32) 和 TensorRT (FP16) 是使用
export.py
完成的。
重现请使用:python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224
分类使用示例 
训练
YOLOv5 分类训练支持自动下载数据集,如 MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet,使用 --data
参数。例如,使用 --data mnist
开始在 MNIST 上训练。
# 使用 CIFAR-100 数据集在单个 GPU 上训练
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128
# 在 ImageNet 数据集上使用多 GPU DDP 进行训练
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3
验证
在 ImageNet-1k 验证数据集上验证 YOLOv5m-cls 模型的准确性:
# 下载 ImageNet 验证集分割 (6.3GB, 50,000 张图像)
bash data/scripts/get_imagenet.sh --val
# 验证模型
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224
预测
使用预训练的 YOLOv5s-cls.pt 模型对图像 bus.jpg
进行分类:
# 运行预测
python classify/predict.py --weights yolov5s-cls.pt --source data/images/bus.jpg
# 从 PyTorch Hub 加载模型
model = torch.hub.load("ultralytics/yolov5", "custom", "yolov5s-cls.pt")
导出
将训练好的 YOLOv5s-cls、ResNet50 和 EfficientNet_b0 模型导出为 ONNX 和 TensorRT 格式:
# 导出模型
python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include onnx engine --img 224
☁️ 环境
使用我们预配置的环境快速开始。点击下面的图标查看设置详情。
🤝 贡献
我们欢迎您的贡献!让 YOLOv5 变得易于访问和高效是社区共同努力的目标。请参阅我们的贡献指南开始。通过 YOLOv5 调查分享您的反馈。感谢所有贡献者让 YOLOv5 变得更好!
📜 许可证
Ultralytics 提供两种许可选项以满足不同需求:
- AGPL-3.0 许可证:一种经 OSI 批准的开源许可证,非常适合学术研究、个人项目和测试。它促进开放合作和知识共享。详情请参阅 LICENSE 文件。
- 企业许可证:专为商业应用量身定制,此许可证允许将 Ultralytics 软件和 AI 模型无缝集成到商业产品和服务中,绕过 AGPL-3.0 的开源要求。对于商业用途,请通过 Ultralytics 授权许可联系我们。
📧 联系
有关 YOLOv5 的错误报告和功能请求,请访问 GitHub Issues。对于一般问题、讨论和社区支持,请加入我们的 Discord 服务器!