小白也能学会的YOLO-V5目标检测训练全指南

在智能摄像头自动识别行人、工厂流水线实时检测缺陷、无人机精准追踪移动目标的背后,藏着一个“火眼金睛”的核心技术——目标检测。而在这片技术丛林中,YOLOv5 凭借其“快准狠”的表现,早已成为工程师们手中的常备利器。

你可能听说过它:速度快到每秒处理上百帧图像,精度高到能分辨细小物体,部署还特别方便,从电脑到手机都能跑。更关键的是,它的代码清晰、文档齐全,连刚入门的小白也能上手。

但现实往往是:兴致勃勃打开项目,结果卡在环境配置;好不容易装完依赖,又发现数据格式不对;终于开始训练了,命令行一堆报错看不懂……是不是很熟悉?

别急。这篇文章不讲复杂公式,也不堆砌术语,而是像朋友一样,带你一步步走过 YOLOv5 的完整训练流程——从准备数据、搭建环境,到启动训练、解读结果,全程保姆级指导,哪怕你是第一次接触深度学习,也能顺利完成自己的第一个目标检测模型。

所有资源我都为你准备好,网盘直链 + 官方地址双保险,不怕下载失败。接下来,咱们直接开干。


拿到一张图片,怎么让电脑知道里面有什么?答案是:给它“教材”。这个教材就是标注好的数据集。

我们以 COCO128 数据集为例。它只有 128 张图,小巧精悍,适合新手快速验证流程是否走通。

【获取方式】

类型链接
COCO128 数据集https://pan.quark.cn/s/8ea99b356ff3
YOLOv5 官方代码库https://github.com/ultralytics/yolov5
网盘镜像(含代码+依赖)https://pan.quark.cn/s/a0225b268041

解压后你会看到这样的目录结构:

coco128/
├── images/
│   └── train2017/
│       ├── image1.jpg
│       ├── image2.jpg
│       └── ...
└── labels/
    └── train2017/
        ├── image1.txt
        ├── image2.txt
        └── ...
  • images 放原图,.jpg 格式。
  • labels 对应每张图的标签文件,文本格式,和图片同名。

每个 .txt 文件记录图像中所有目标的信息,采用归一化的边界框坐标,格式如下:

<class_id> <x_center> <y_center> <width> <height>

举个例子:

0 0.482 0.637 0.218 0.512
1 0.240 0.876 0.364 0.720

表示两个物体:
- 第一个是类别 0(人),中心在图像下方;
- 第二个是类别 1(自行车),靠近右下角。

这里的数值都是比例值,范围在 0~1 之间,与图像实际尺寸无关。比如 x_center=0.5 就代表水平正中间。

📌 提醒一句:如果你有自己的数据集,可能是 XML(Pascal VOC)或 JSON(COCO)格式,需要先转换成这种 .txt 形式。这类工具网上很多,也可以参考我之前写的文章《目标检测标签格式一键转换指南》来处理。


有了数据,下一步就是搭环境。很多人被这一步劝退,其实只要用对方法,整个过程可以非常干净利落。

推荐使用 Conda 来管理 Python 环境,避免污染系统全局包。

第一步:安装 Miniconda

去官网下载 Miniconda,安装完成后打开终端(Windows 用户可用 CMD 或 PowerShell)。

输入:

conda --version

如果输出类似 conda 23.x.x,说明安装成功。

第二步:创建独立环境

执行命令新建一个名为 yolov5-env 的虚拟环境:

conda create -n yolov5-env python=3.10

激活它:

conda activate yolov5-env

现在你就进入了一个纯净的 Python 空间,后续所有操作都不会影响其他项目。

第三步:安装 PyTorch

YOLOv5 基于 PyTorch 构建,必须安装这个框架。根据你有没有 NVIDIA 显卡选择不同版本。

CPU 版本(适合无显卡用户)
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 cpuonly -c pytorch

虽然慢一些,但足够跑通流程。

GPU 版本(强烈推荐有显卡者)

查看你的 CUDA 版本:

nvidia-smi

顶部会显示支持的 CUDA 版本,比如 11.6 或 11.7。

然后运行对应命令:

# CUDA 11.6
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia

# CUDA 11.7
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia

安装完成后,可以用一段简单代码测试是否可用:

import torch
print(torch.cuda.is_available())  # 应返回 True(GPU 版)

第四步:安装 YOLOv5 依赖

进入你下载的 yolov5 文件夹:

cd yolov5
pip install -r requirements.txt

等待安装完成即可。如果提示 pip 太慢,可以换成国内源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

再重试安装。


环境好了,代码也齐了,那这些文件到底是干什么的?很多人跑不通,就是因为盲目复制命令却不理解参数含义。

我们挑几个核心文件来说清楚。

train.py:训练入口脚本

这是整个流程的起点。你可以把它想象成“启动按钮”,控制着模型怎么学、学多久、用什么数据。

常用参数如下:

参数说明
--data指定数据集配置文件路径
--cfg模型结构定义文件
--weights初始权重(可选预训练模型)
--epochs总共训练多少轮
--batch-size每批处理几张图
--img-size输入图像大小(默认 640)
--device使用设备,cpu0(GPU)

data/coco128.yaml:数据集说明书

打开这个文件,内容长这样:

train: ../coco128/images/train2017
val: ../coco128/images/train2017

nc: 80
names: ['person', 'bicycle', 'car', ...]
  • trainval 是训练集和验证集路径;
  • nc 是类别总数;
  • names 是类别名称列表。

将来你要训练自己的数据时,改这几个地方就行。

models/yolov5s.yaml:模型架构蓝图

这里定义了网络的层数、通道数等结构信息。YOLOv5 提供了多个预设模型:

模型特点推荐场景
yolov5n最小最快嵌入式设备、移动端
yolov5s轻量高效新手首选,通用场景
yolov5m中等规模平衡速度与精度
yolov5l/x更大更深高精度需求任务

初学者建议从 yolov5s 开始,性能够用,资源消耗也不大。


万事俱备,现在正式开始训练!

运行以下命令:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 100 \
  --data data/coco128.yaml \
  --cfg models/yolov5s.yaml \
  --weights '' \
  --device cpu

解释一下关键参数:
- --img 640:统一缩放为 640×640 输入;
- --batch 16:每次处理 16 张图(显存不够可改为 8 或 2);
- --epochs 100:总共训练 100 轮;
- --data--cfg 指定数据和模型;
- --weights '' 表示从头训练(空字符串);
- --device cpu 使用 CPU(有 GPU 写 0)。

首次运行会自动下载 yolov5s.pt 预训练权重(约 14MB),请保持网络畅通。

启动后你会看到类似输出:

Namespace(epochs=100, batch_size=16, imgsz=640, ...)
Downloading https://github.com/ultralytics/yolov5/releases/download/v6.2/yolov5s.pt...
Starting training for 100 epochs...

训练过程中会实时打印 Loss、Precision、Recall、mAP 等指标。耐心等待几分钟(CPU 可能十几分钟),直到完成。


训练结束后,结果保存在 runs/train/exp/ 目录下。

来看看都有啥:

文件/目录作用说明
weights/best.pt表现最好的模型权重 ✅ 推荐用于推理
weights/last.pt最后一轮的权重
results.csv每轮指标记录(可用 Excel 打开)📊
results.png损失曲线和 mAP 变化图 📈
train_batch*.jpg数据增强后的样本可视化 👁️

重点关注这几个指标:

  • mAP@0.5:IoU 阈值为 0.5 时的平均精度,越高越好(理想 > 0.8)
  • Precision(精确率):预测为正的样本中有多少是真的
  • Recall(召回率):真实目标有多少被找出来了
  • F1-Score:P 和 R 的调和平均,综合评价

🎯 实践小技巧:
- 如果 loss 不下降或剧烈波动,可能是学习率太高,可以调整 hyp.yaml 中的 lr0
- 若显存溢出(CUDA out of memory),尝试降低 batch-size 或缩小 img-size
- 训练中途中断也没关系,YOLOv5 支持断点续训,加 --resume 参数即可继续。


训练顺利不代表万事大吉,实际使用中总会遇到各种“坑”。

下面整理几个高频问题及解决办法:

❌ 问题1:Could not find a version that satisfies the requirement xxx

👉 原因:pip 源连接失败,尤其是国外服务器。

✅ 解决方案:换国内源,如清华源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

或者临时使用:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

❌ 问题2:RuntimeError: CUDA out of memory

👉 原因:显存不足,常见于老款显卡或大 batch size。

✅ 解决方案:
- 降低 batch-size(如从 16 改为 8)
- 缩小 img-size(如从 640 改为 320)
- 换更小模型(如 yolov5n
- 关闭其他占用 GPU 的程序

❌ 问题3:找不到 coco128.yaml

👉 原因:路径错误或未正确下载数据集。

✅ 解决方案:
- 检查 data/coco128.yaml 是否存在
- 修改 --data 参数为绝对路径,例如:

--data /home/user/yolov5/data/coco128.yaml

走到这里,你已经完成了人生中第一次 YOLOv5 的完整训练。也许过程磕磕绊绊,但从环境配置到模型输出,每一个环节都在帮你建立真实的工程认知。

如今,YOLO 已不仅是学术玩具,而是广泛应用于工业质检、交通监控、农业植保等真实场景中的“生产力工具”。而你现在已经掌握了这套系统的入门钥匙。

下一步可以尝试:
- 用自己的照片训练专属检测模型;
- 对比 yolov5nx 的性能差异;
- 把模型导出为 ONNX 或 TensorRT 格式部署到边缘设备;
- 结合 Flask 搭建一个网页版检测服务。

我会在后续推出系列实战教程:
- 《YOLOv5 自定义数据集训练实战》
- 《YOLO 模型轻量化压缩技巧》
- 《YOLOv8 vs YOLOv5 全面对比》
- 《如何将 YOLO 部署到树莓派》

有问题欢迎留言交流,一起进步。

🚀 记住:每一个专家,都曾是菜鸟。只要迈出第一步,你就已经领先了大多数人。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐