yolov5/README.zh-CN.md

48 KiB
Raw Blame History

Ultralytics YOLO banner

中文 | 한국어 | 日本語 | Русский | Deutsch | Français | Español | Português | Türkçe | Tiếng Việt | العربية

YOLOv5 CI Testing YOLOv5 Citation Docker Pulls Discord Ultralytics Forums Ultralytics Reddit
Run on Gradient Open In Colab Open In Kaggle

Ultralytics YOLOv5 🚀 是由 Ultralytics 开发的一款尖端的、代表当前最高水平SOTA计算机视觉模型。基于 PyTorch 框架YOLOv5 以其易用性、速度和准确性而闻名。它融合了广泛研究和开发的见解与最佳实践,使其成为各种视觉 AI 任务的热门选择,包括目标检测图像分割图像分类

我们希望这里的资源能帮助您充分利用 YOLOv5。请浏览 YOLOv5 文档获取详细信息,在 GitHub 上提出 issue 以获得支持,并加入我们的 Discord 社区进行提问和讨论!

如需申请企业许可证,请填写 Ultralytics 授权许可表格。

Ultralytics GitHub space Ultralytics LinkedIn space Ultralytics Twitter space Ultralytics YouTube space Ultralytics TikTok space Ultralytics BiliBili space Ultralytics Discord

🚀 YOLO11下一代进化

我们激动地宣布推出 Ultralytics YOLO11 🚀这是我们最先进SOTA视觉模型的最新进展YOLO11 现已在 Ultralytics YOLO GitHub 仓库发布,它继承了我们速度快、精度高和易于使用的传统。无论您是处理目标检测实例分割姿态估计图像分类还是定向目标检测OBBYOLO11 都能提供在各种应用中脱颖而出所需的性能和多功能性。

立即开始,释放 YOLO11 的全部潜力!访问 Ultralytics 文档获取全面的指南和资源:

PyPI version Downloads

# 安装 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 GPUYOLOv5n/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 Training Results
教程

🛠️ 集成

探索 Ultralytics 与领先 AI 平台的关键集成。这些合作增强了数据集标注、训练、可视化和模型管理的能力。了解 Ultralytics 如何与 Weights & Biases (W&B)Comet MLRoboflowIntel OpenVINO 合作以优化您的 AI 工作流程。


Ultralytics Active Learning Integrations Banner

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 开发,这是构建、训练和部署计算机视觉模型的终极平台。无需编写任何代码即可可视化数据集、训练 YOLOv5YOLOv8 🚀 模型,并将它们部署到实际应用中。使用我们尖端的工具和用户友好的 Ultralytics App 将图像转化为可操作的见解。立即开始您的免费之旅!

Ultralytics HUB Platform Screenshot

🤔 为什么选择 YOLOv5

YOLOv5 的设计注重简单性和易用性。我们优先考虑实际性能和可访问性。

YOLOv5 Performance Chart

YOLOv5-P5 640 图表

YOLOv5 P5 640 Performance Chart

图表说明

预训练检查点

此表显示了在 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.01weight_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
分割使用示例  Open In Colab

训练

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")
Zidane 分割示例 Bus 分割示例

导出

将 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 个周期。ResNetEfficientNet 模型在相同设置下进行了训练以供比较。模型被导出为 ONNX FP32CPU 速度测试)和 TensorRT FP16GPU 速度测试)。所有速度测试均在 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.001weight_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
分类使用示例  Open In Colab

训练

YOLOv5 分类训练支持自动下载数据集,如 MNISTFashion-MNISTCIFAR10CIFAR100ImagenetteImagewoofImageNet,使用 --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 开源贡献者

📜 许可证

Ultralytics 提供两种许可选项以满足不同需求:

  • AGPL-3.0 许可证:一种经 OSI 批准的开源许可证,非常适合学术研究、个人项目和测试。它促进开放合作和知识共享。详情请参阅 LICENSE 文件。
  • 企业许可证:专为商业应用量身定制,此许可证允许将 Ultralytics 软件和 AI 模型无缝集成到商业产品和服务中,绕过 AGPL-3.0 的开源要求。对于商业用途,请通过 Ultralytics 授权许可联系我们。

📧 联系

有关 YOLOv5 的错误报告和功能请求,请访问 GitHub Issues。对于一般问题、讨论和社区支持,请加入我们的 Discord 服务器


Ultralytics GitHub space Ultralytics LinkedIn space Ultralytics Twitter space Ultralytics YouTube space Ultralytics TikTok space Ultralytics BiliBili space Ultralytics Discord