小白也能学会的YOLO-V5目标检测训练全指南
小白也能学会的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 | 使用设备,cpu 或 0(GPU) |
data/coco128.yaml:数据集说明书
打开这个文件,内容长这样:
train: ../coco128/images/train2017
val: ../coco128/images/train2017
nc: 80
names: ['person', 'bicycle', 'car', ...]
train和val是训练集和验证集路径;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 已不仅是学术玩具,而是广泛应用于工业质检、交通监控、农业植保等真实场景中的“生产力工具”。而你现在已经掌握了这套系统的入门钥匙。
下一步可以尝试:
- 用自己的照片训练专属检测模型;
- 对比 yolov5n 到 x 的性能差异;
- 把模型导出为 ONNX 或 TensorRT 格式部署到边缘设备;
- 结合 Flask 搭建一个网页版检测服务。
我会在后续推出系列实战教程:
- 《YOLOv5 自定义数据集训练实战》
- 《YOLO 模型轻量化压缩技巧》
- 《YOLOv8 vs YOLOv5 全面对比》
- 《如何将 YOLO 部署到树莓派》
有问题欢迎留言交流,一起进步。
🚀 记住:每一个专家,都曾是菜鸟。只要迈出第一步,你就已经领先了大多数人。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)