YOLOv5实战教程:从环境搭建到模型训练完整指南

2025-06发布1次浏览

YOLOv5 是一种基于深度学习的目标检测框架,因其高效性和灵活性而受到广泛欢迎。本文将详细介绍如何从零开始搭建 YOLOv5 的开发环境,并完成模型训练的全过程。


一、YOLOv5 简介

YOLO(You Only Look Once)是一种实时目标检测算法,其核心思想是将目标检测问题转化为一个回归问题。相比传统的两阶段检测方法(如 Faster R-CNN),YOLO 的速度更快,适用于需要实时处理的应用场景。YOLOv5 是该系列的一个改进版本,支持多种硬件平台,同时具备良好的扩展性。


二、环境搭建

在开始训练之前,我们需要搭建适合 YOLOv5 的开发环境。

1. 硬件要求

  • GPU:建议使用 NVIDIA GPU,支持 CUDA 和 cuDNN。
  • CPU:如果仅用于推理或轻量级任务,也可以使用 CPU。

2. 软件依赖

以下是运行 YOLOv5 所需的主要软件和库:

  • Python >= 3.8
  • PyTorch >= 1.7.0
  • CUDA Toolkit(可选,取决于是否使用 GPU)
  • cuDNN(可选)

3. 安装步骤

(1) 克隆 YOLOv5 仓库

git clone https://github.com/ultralytics/yolov5.git
cd yolov5

(2) 创建虚拟环境并安装依赖

python -m venv yolov5_env
source yolov5_env/bin/activate  # Windows 用户请运行 `yolov5_env\Scripts\activate`
pip install -r requirements.txt

(3) 验证安装

运行以下命令以验证环境是否正确配置:

python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/

如果一切正常,脚本会加载预训练模型并在测试图像上进行目标检测。


三、数据准备

YOLOv5 使用 COCO 格式的标注数据集。以下是数据准备的基本步骤:

1. 数据集格式

YOLOv5 支持的数据集格式为:

  • 图像文件存储在 images 文件夹中。
  • 标注文件存储在 labels 文件夹中,每个标注文件是一个 .txt 文件,内容格式如下:
    <class_id> <x_center> <y_center> <width> <height>
    
    • class_id:目标类别索引。
    • <x_center>, <y_center>:目标框中心点坐标,归一化到 [0, 1]。
    • <width>, <height>:目标框宽高,归一化到 [0, 1]。

2. 数据集划分

创建 data.yaml 文件,定义数据集路径和类别信息:

train: ./data/train/images
val: ./data/val/images

nc: 3  # 类别数量
names: ['cat', 'dog', 'person']  # 类别名称

四、模型训练

1. 修改配置文件

YOLOv5 提供了多个预定义的配置文件(位于 models/ 目录下)。根据需求选择合适的配置文件(如 yolov5s.yaml),并调整超参数。

2. 开始训练

运行以下命令开始训练:

python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt

参数说明:

  • --img:输入图像大小。
  • --batch:批量大小。
  • --epochs:训练轮数。
  • --data:数据集配置文件路径。
  • --cfg:模型配置文件路径。
  • --weights:初始化权重路径(可以是预训练模型或自定义权重)。

3. 训练过程监控

YOLOv5 提供了 TensorBoard 支持,可以实时监控训练过程:

tensorboard --logdir runs/train

打开浏览器访问 http://localhost:6006 查看训练曲线。


五、模型评估与优化

1. 模型评估

训练完成后,YOLOv5 会自动保存最佳权重文件(best.pt)。可以通过以下命令对模型进行评估:

python val.py --weights runs/train/exp/weights/best.pt --data data.yaml --img 640

2. 模型优化

  • 调整超参数:如学习率、批量大小等。
  • 数据增强:通过随机裁剪、翻转等方式增加数据多样性。
  • 迁移学习:使用更复杂的预训练模型(如 YOLOv5l 或 YOLOv5x)。

六、部署模型

训练好的模型可以通过 ONNX、TensorRT 等工具进行优化和部署。以下是导出 ONNX 模型的示例:

python export.py --weights runs/train/exp/weights/best.pt --img 640 --batch 1 --include onnx