yolov5/README.zh-CN.md

42 KiB
Raw Blame History

Ultralytics YOLO 横幅

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

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

YOLOv5 🚀 是全球最受喜爱的视觉 AI代表了 Ultralytics 在未来视觉 AI 方法上的开源研究成果,这些成果融合了经过数千小时研发的经验和最佳实践。

我们希望这里提供的资源能帮助您充分发挥 YOLOv5 的优势。请查阅 YOLOv5 的 文档 了解详情,如需支持请在 GitHub 上提交问题,或加入我们的 Discord 社区进行提问和讨论!

若需申请企业许可证,请在 Ultralytics Licensing 完成相关表单。

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

YOLO11 🚀 新品发布

我们很高兴地宣布推出 Ultralytics YOLO11 🚀——我们最先进SOTA视觉模型的最新成果现已在 GitHub 上发布YOLO11 延续了我们在速度、准确性和易用性方面的优秀传统。不论您是处理目标检测、图像分割还是图像分类YOLO11 都能提供多样应用场景下卓越的性能和灵活性。

今天就开始体验,释放 YOLO11 的全部潜力吧!请访问 Ultralytics 文档 获取全面的指南和资源:

PyPI version Downloads

pip install ultralytics

文档

请参阅 YOLOv5 文档 获取关于训练、测试和部署的完整指南。下方提供了快速入门示例。

安装

克隆仓库并在 Python>=3.8.0 环境中安装 requirements.txt 文件中的依赖,包括 PyTorch>=1.8

git clone https://github.com/ultralytics/yolov5 # 克隆仓库
cd yolov5
pip install -r requirements.txt # 安装依赖
推理

YOLOv5 PyTorch Hub 推理示例。Models 会自动从最新的 YOLOv5 发行版 下载。

import torch

# 加载 YOLOv5 模型可选yolov5n, yolov5s, yolov5m, yolov5l, yolov5x
model = torch.hub.load("ultralytics/yolov5", "yolov5s")

# 输入源URL、文件、PIL、OpenCV、numpy 数组或列表)
img = "https://ultralytics.com/images/zidane.jpg"

# 执行推理(自动处理批量、调整大小、归一化)
results = model(img)

# 处理结果(可选:.print(), .show(), .save(), .crop(), .pandas()
results.print()
使用 detect.py 进行推理

detect.py 在多种来源上运行推理,自动从最新的 YOLOv5 发行版 下载 models,并将结果保存至 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/                          # 目录
python detect.py --weights yolov5s.pt --source list.txt                       # 图片列表
python detect.py --weights yolov5s.pt --source list.streams                   # 流列表
python detect.py --weights yolov5s.pt --source 'path/*.jpg'                   # glob 通配符
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4' # YouTube
python detect.py --weights yolov5s.pt --source 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP 流
训练

以下命令重现了 YOLOv5 COCO 数据集的结果。Modelsdatasets 会自动从最新的 YOLOv5 发行版 下载。使用 V100 GPU 训练 YOLOv5n/s/m/l/x 的时间分别为 1/2/4/6/8 天(多 GPU 可大幅加快训练速度)。建议使用最大的 --batch-size,或传入 --batch-size -1 以使用 YOLOv5 AutoBatch。下面显示的批量大小基于 V100-16GB。

python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5x.yaml --batch-size 16
教程

集成

我们与领先 AI 平台的深度集成拓展了 Ultralytics 解决方案的功能,提升了数据集标注、训练、可视化和模型管理等任务的效率。了解 Ultralytics 如何与 W&BCometRoboflow 以及 OpenVINO 合作,优化您的 AI 工作流程。


Ultralytics 主动学习集成

Ultralytics HUB 🚀 W&B Comet 新版 Neural Magic
简化 YOLO 工作流程:使用 Ultralytics HUB 轻松标注、训练和部署。立即体验! 使用 Weights & Biases 跟踪实验、超参数和结果。 永久免费,Comet 允许您保存 YOLOv5 模型、恢复训练,并以交互方式可视化和调试预测。 使用 Neural Magic DeepSparse 使 YOLO11 推理速度提升最高 6 倍。

Ultralytics HUB

体验无缝 AI 体验,使用 Ultralytics HUB ——这是一个无需编写代码即可进行数据可视化、YOLOv5 与 YOLOv8 🚀 模型训练和部署的一体化解决方案。借助我们前沿的平台和用户友好的 Ultralytics App,您能轻松将图像转化为可操作的洞察并让您的 AI 创想成真。立即开始您的【免费】之旅吧!

为何选择 YOLOv5

YOLOv5 的设计初衷是让入门变得极为简单且易于学习。我们专注于真实世界的结果。

YOLOv5-P5 640 图示

图示说明
  • COCO AP val 表示在 5000 张 COCO val2017 图像数据集上、推理尺寸从 256 到 1536 不同情况下测量的 mAP@0.5:0.95 指标。
  • 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

预训练检查点

Model size
(pixels)
mAPval
50-95
mAPval
50
Speed
CPU b1
(ms)
Speed
V100 b1
(ms)
Speed
V100 b32
(ms)
params
(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 与 Small 模型使用 hyp.scratch-low.yaml 超参数,其它模型使用 hyp.scratch-high.yaml
  • mAPval 指标为在 COCO val2017 数据集上单模型单尺度计算的结果。
    重现命令:python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65
  • Speed 为在 AWS p3.2xlarge 实例中基于 COCO val 图像平均推理时间(批量为 1。不包含 NMS 时间(约 1 ms/图)。
    重现命令: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 release v7.0 实例分割模型是目前全球最快且最精准的,其性能超越了所有现有 SOTA 基准。我们将其训练、验证和部署过程简化到了极致。详细信息请参阅我们的 发行说明 ,同时访问我们的 YOLOv5 分割 Colab Notebook 获取快速入门教程。

分割检查点

我们在 A100 GPU 上以图像尺寸 640 对 COCO 数据集训练了 YOLOv5 分割模型共 300 个周期。我们将所有模型导出为 ONNX FP32 以进行 CPU 速度测试,及 TensorRT FP16 以进行 GPU 速度测试。所有速度测试均在 Google Colab Pro 笔记本上进行,以便于结果重现。

Model size
(pixels)
mAPbox
50-95
mAPmask
50-95
Train time
300 epochs
A100 (hours)
Speed
ONNX CPU
(ms)
Speed
TRT A100
(ms)
params
(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
  • 速度 为在 Google Colab Pro A100 高内存实例上,针对 100 张推理图像计算的平均推理速度。数值仅表示推理速度NMS 每图约增加 1ms
    重现命令: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 分割数据集,也支持通过执行 bash data/scripts/get_coco.sh --train --val --segments 手动下载 COCO-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 的 mask mAP

bash data/scripts/get_coco.sh --val --segments                            # 下载 COCO val 分割集780MB5000 张图)
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
model = torch.hub.load(
    "ultralytics/yolov5", "custom", "yolov5m-seg.pt"
)  # 从 PyTorch Hub 加载(注意:目前推理尚未支持)
zidane bus

导出

将 YOLOv5s-seg 模型导出为 ONNX 与 TensorRT 格式:

python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --device 0

分类

YOLOv5 release v6.2 新增了对分类模型的训练、验证和部署支持!详细信息请参阅我们的 发行说明 ,同时访问我们的 YOLOv5 分类 Colab Notebook 获取快速入门教程。

分类检查点

我们在 ImageNet 数据集上训练了 YOLOv5-cls 分类模型,共训练 90 个周期,使用 4 个 A100 实例进行训练。同时为了对比,我们还训练了 ResNet 和 EfficientNet 模型,均采用相同的默认训练设置。所有模型均导出为 ONNX FP32 以进行 CPU 速度测试,并导出为 TensorRT FP16 以进行 GPU 速度测试。所有速度测试均在 Google Colab Pro 上进行,以方便结果重现。

Model size
(pixels)
acc
top1
acc
top5
Training
90 epochs
4xA100 (hours)
Speed
ONNX CPU
(ms)
Speed
TensorRT V100
(ms)
params
(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
表格说明 (点击展开)
  • 所有检查点均使用默认设置,在图像尺寸 224 下以 SGD 优化器(lr0=0.001weight_decay=5e-5)训练 90 个周期。训练日志记录于 https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2
  • 准确率 为在 ImageNet-1k 数据集上单模型单尺度计算的结果。
    重现命令:python classify/val.py --data ../datasets/imagenet --img 224
  • 速度 为在 Google Colab Pro V100 高内存实例上,针对 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 分类训练支持通过 --data 参数自动下载 MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet 数据集。例如,启动 MNIST 训练只需使用 --data mnist

# 单 GPU 训练
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128

# 多 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 的准确率:

bash data/scripts/get_imagenet.sh --val                                               # 下载 ImageNet 验证集6.3G50000 张图)
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
model = torch.hub.load("ultralytics/yolov5", "custom", "yolov5s-cls.pt")  # 从 PyTorch Hub 加载

导出

将一组训练好的 YOLOv5s-cls、ResNet 和 EfficientNet 模型导出为 ONNX 与 TensorRT 格式:

python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include onnx engine --img 224

环境

只需几秒钟即可开始使用我们的经过验证的环境。点击下方每个图标了解详情。

贡献

我们非常欢迎您的反馈!我们希望让贡献 YOLOv5 的过程变得简单且透明。请参阅我们的 贡献指南 开始贡献,并填写 YOLOv5 调查问卷 告诉我们您的体验。感谢所有贡献者!

许可证

Ultralytics 提供两种许可证选项以满足不同的使用场景:

  • AGPL-3.0 许可证:这种 OSI 认可 的开源许可证适合学生和爱好者,旨在促进开放协作与知识共享。详见 LICENSE 文件获取更多细节。
  • 企业许可证:专为商业用途设计,该许可证允许将 Ultralytics 软件和 AI 模型无缝集成到商业产品和服务中,从而规避 AGPL-3.0 的开源要求。如果您的使用场景涉及将我们的解决方案嵌入商业产品,请通过 Ultralytics Licensing 与我们联系。

联系方式

有关 YOLOv5 的 Bug 报告和功能请求,请访问 GitHub Issues,与此同时欢迎加入我们的 Discord 社区进行交流和讨论!


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