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数据集上的表现:
# 克隆仓库
git clone https://github.com/ultralytics/yolov5
cd yolov5
# 安装依赖
pip install -r requirements.txt
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分布式训练
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
通过反射和尺度增强提高预测准确性:
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平台深度集成:
YOLOv5作为目标检测领域的重要里程碑,凭借其出色的性能、易用性和丰富的功能,已成为学术研究和工业应用的首选框架。无论是初学者还是专业开发者,都能在YOLOv5的生态系统中找到适合的解决方案。