ultralytics/yolov5View GitHub Homepage for Latest Official Releases
基于PyTorch的最先进实时目标检测模型YOLOv5,支持目标检测、图像分割和图像分类任务
AGPL-3.0Pythonyolov5ultralytics 54.9k Last Updated: August 03, 2025
YOLOv5项目详细介绍
项目概述
Ultralytics YOLOv5 🚀 是一个前沿的、最先进的(SOTA)计算机视觉模型,由Ultralytics开发。基于PyTorch框架,YOLOv5以其易用性、速度和准确性而闻名。它融合了广泛研究和开发的见解与最佳实践,使其成为各种视觉AI任务的热门选择。
项目地址: https://github.com/ultralytics/yolov5
核心特性
多任务支持
YOLOv5支持多种计算机视觉任务:
- 目标检测: 识别和定位图像中的多个对象
- 实例分割: 像素级别的对象分割
- 图像分类: 单张图像的类别分类
技术优势
关键特性包括实时推理、支持多种训练技巧如测试时间增强(TTA)和模型集成,以及与TFLite、ONNX、CoreML和TensorRT等导出格式的兼容性。
模型架构与性能
模型规格
YOLOv5提供多种模型尺寸以满足不同需求:
模型 | 参数量(M) | 速度 | 准确性 | 适用场景 |
---|---|---|---|---|
YOLOv5n | 1.9 | 最快 | 较低 | 移动设备、边缘计算 |
YOLOv5s | 7.2 | 快 | 中等 | 通用应用 |
YOLOv5m | 21.2 | 中等 | 较高 | 平衡性能 |
YOLOv5l | 46.5 | 较慢 | 高 | 高精度需求 |
YOLOv5x | 86.7 | 最慢 | 最高 | 最高精度需求 |
性能指标
在COCO数据集上的表现:
- YOLOv5s: mAP@0.5:0.95 = 37.4%,速度6.4ms(V100)
- YOLOv5m: mAP@0.5:0.95 = 45.4%,速度8.2ms(V100)
- YOLOv5l: mAP@0.5:0.95 = 49.0%,速度10.1ms(V100)
- YOLOv5x: mAP@0.5:0.95 = 50.7%,速度12.1ms(V100)
安装与快速开始
环境要求
- Python >= 3.8.0
- PyTorch >= 1.8
安装步骤
# 克隆仓库
git clone https://github.com/ultralytics/yolov5
cd yolov5
# 安装依赖
pip install -r requirements.txt
使用PyTorch Hub进行推理
import torch
# 加载YOLOv5模型
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# 定义输入图像源
img = "https://ultralytics.com/images/zidane.jpg"
# 执行推理
results = model(img)
# 处理结果
results.print() # 打印结果到控制台
results.show() # 在窗口中显示结果
results.save() # 保存结果到runs/detect/exp
命令行推理
# 使用摄像头推理
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 path/to/images/
# 对YouTube视频推理
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4'
训练自定义模型
训练命令示例
# 在COCO数据集上训练YOLOv5s,300个epoch
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64
# 训练YOLOv5m
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40
# 训练YOLOv5l
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24
多GPU训练
# 使用多GPU分布式训练
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 train.py --data coco.yaml --weights '' --cfg yolov5s.yaml --batch-size 64 --device 0,1,2,3
实例分割功能
YOLOv5 v7.0版本引入了实例分割功能,在COCO数据集上达到了最先进的性能。
分割模型性能
模型 | mAP^box | mAP^mask | 参数量(M) | 速度(ms) |
---|---|---|---|---|
YOLOv5n-seg | 27.6 | 23.4 | 2.0 | 59.2 |
YOLOv5s-seg | 37.6 | 32.0 | 7.6 | 63.7 |
YOLOv5m-seg | 45.0 | 37.1 | 22.0 | 89.5 |
YOLOv5l-seg | 49.0 | 39.9 | 47.8 | 168.4 |
YOLOv5x-seg | 50.7 | 41.4 | 88.8 | 265.7 |
分割训练示例
# 训练分割模型
python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640
# 验证分割模型
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640
# 使用分割模型进行预测
python segment/predict.py --weights yolov5m-seg.pt --source data/images/bus.jpg
图像分类功能
YOLOv5 v6.2版本新增了图像分类功能,在ImageNet数据集上训练90个epoch的结果:
分类模型性能
模型 | Top1准确率 | Top5准确率 | 参数量(M) | 速度(ms) |
---|---|---|---|---|
YOLOv5s-cls | 71.5% | 90.2% | 5.5 | 1.7 |
YOLOv5m-cls | 75.9% | 92.9% | 13.0 | 2.8 |
YOLOv5l-cls | 78.0% | 94.0% | 27.4 | 4.9 |
YOLOv5x-cls | 79.0% | 94.4% | 55.4 | 8.7 |
分类训练示例
# 在CIFAR-100数据集上训练
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128
# 验证ImageNet模型
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224
# 图像分类预测
python classify/predict.py --weights yolov5s-cls.pt --source data/images/bus.jpg
模型导出与部署
YOLOv5支持多种部署格式:
# 导出到ONNX格式
python export.py --weights yolov5s.pt --include onnx
# 导出到TensorRT格式
python export.py --weights yolov5s.pt --include engine
# 导出到CoreML格式(适用于iOS)
python export.py --weights yolov5s.pt --include coreml
# 导出到TFLite格式(适用于移动设备)
python export.py --weights yolov5s.pt --include tflite
高级功能
测试时间增强(TTA)
通过反射和尺度增强提高预测准确性:
python val.py --data coco.yaml --img 1536 --iou 0.7 --augment
模型集成
结合多个模型以获得更好的性能:
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
超参数进化
自动寻找最佳训练超参数:
python train.py --data coco.yaml --evolve 300
集成与生态系统
YOLOv5与多个主流AI平台深度集成:
- Weights & Biases: 实验跟踪和可视化
- Comet ML: 实验管理和监控
- Roboflow: 数据标注和管理
- Intel OpenVINO: 模型优化和部署
- Neural Magic: 模型稀疏化和加速
- Ultralytics HUB: 一站式训练和部署平台
社区与支持
- GitHub仓库: https://github.com/ultralytics/yolov5
- 官方文档: https://docs.ultralytics.com/yolov5/
- Discord社区: https://discord.com/invite/ultralytics
- 问题反馈: https://github.com/ultralytics/yolov5/issues
总结
YOLOv5作为目标检测领域的重要里程碑,凭借其出色的性能、易用性和丰富的功能,已成为学术研究和工业应用的首选框架。无论是初学者还是专业开发者,都能在YOLOv5的生态系统中找到适合的解决方案。