Home
Login

基于PyTorch的最先进实时目标检测模型YOLOv5,支持目标检测、图像分割和图像分类任务

AGPL-3.0Python 54.3kultralyticsyolov5 Last Updated: 2025-06-21

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: 一站式训练和部署平台

社区与支持

总结

YOLOv5作为目标检测领域的重要里程碑,凭借其出色的性能、易用性和丰富的功能,已成为学术研究和工业应用的首选框架。无论是初学者还是专业开发者,都能在YOLOv5的生态系统中找到适合的解决方案。

Star History Chart