news 2025/12/29 17:12:56

零基础入门YOLO-V5目标检测训练全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
零基础入门YOLO-V5目标检测训练全流程

零基础入门YOLO-V5目标检测训练全流程

在工业质检线上,一张张产品图像飞速流过摄像头,系统必须在毫秒级内判断是否存在划痕、缺损;在智能交通路口,算法要实时识别出车辆、行人和信号灯——这些场景背后,都离不开一个核心技术:实时目标检测

而提到高效部署的目标检测方案,绕不开的名字就是YOLO(You Only Look Once)系列。它用“一帧定乾坤”的方式取代传统两阶段检测流程,将定位与分类合二为一,实现了速度与精度的惊人平衡。其中,YOLOv5虽非 Joseph Redmon 原班人马出品,却凭借其简洁工程结构和开箱即用的特性,迅速成为工业落地中最受欢迎的选择之一。

更关键的是,它的门槛足够低。哪怕你是第一次接触深度学习的学生,只要跟着步骤走,也能在半天之内跑通整个训练链路。本文就带你从零开始,不跳任何细节,完成一次完整的 YOLOv5 训练实战。

所有资源均提供国内网盘链接 + 官方地址,避免因网络问题卡住进度。


为什么是 YOLOv5?不只是快那么简单

YOLO 自2016年问世以来,历经十代演进,早已不是“牺牲精度换速度”的代名词。如今的 YOLO 系列,在保持高帧率的同时,mAP 指标也稳居前列,真正做到了“又快又准”。

而 YOLOv5 的优势,远不止推理速度快:

  • 极致部署友好:原生支持导出为 ONNX、TensorRT 格式,轻松部署到 Jetson、树莓派甚至手机端。
  • 模块化设计清晰:backbone、neck、head 分离明确,想加个注意力机制或更换 CSP 结构?改几行 YAML 就能实现。
  • 自动化程度高:数据自动下载、预训练权重一键加载、训练过程可视化全都有。
  • 迁移学习极快:哪怕只有几百张样本,微调后也能达到可用精度。

这使得它成为学生做毕设、工程师打比赛、企业做原型验证时的首选工具。更重要的是,社区活跃、文档齐全、报错好查——对新手极其友好。


数据准备:别让格式问题毁了你的第一轮训练

模型能不能学会“看”,取决于你给它的“教材”是否规范。YOLOv5 接受两种输入:

  1. 图像文件(.jpg,.png
  2. 对应的文本标注文件(.txt

我们以官方推荐的轻量数据集COCO128为例。它包含128张来自 MS COCO 的图片,涵盖80个类别,适合快速验证流程。

下载与目录结构

你可以通过 GitHub 自动下载(需科学上网):

https://github.com/ultralytics/yolov5#datasets

或者使用国内镜像免翻墙获取:

COCO128 百度网盘 提取码:abcd

解压后应形成如下结构:

coco128/ ├── images/ │ └── train2017/ │ ├── 000000000036.jpg │ └── ... └── labels/ └── train2017/ ├── 000000000036.txt └── ...

⚠️ 注意:每张图必须有同名.txt文件对应,即使没有目标也要保留空文件。


标签格式:归一化的边界框坐标

YOLO 使用一种特殊的标注格式:归一化中心坐标 + 宽高比例

每个.txt文件中的一行代表一个目标:

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

所有数值都是相对于图像宽高的比例值,范围在[0,1]之间。

举个例子:

假设图像尺寸为 640×480,有一个“人”(class_id=0),其真实框左上角 (100,150),右下角 (300,400):

  • 宽 = 200,高 = 250
  • 中心点 x = 200,y = 275
  • 归一化:
  • x_center = 200 / 640 ≈ 0.3125
  • y_center = 275 / 480 ≈ 0.5729
  • width = 200 / 640 ≈ 0.3125
  • height = 250 / 480 ≈ 0.5208

最终写入文件的内容就是:

0 0.3125 0.5729 0.3125 0.5208

✅ 实际操作建议:不要手动计算!用脚本批量转换更安全。

如果你已有 Pascal VOC、LabelMe 或 COCO 格式的数据集,可以用以下工具自动转成 YOLO 格式:

  • labelImg:图形化标注神器,直接导出 YOLO 格式
  • 自定义 Python 脚本(可参考我之前写的《多种标注格式互转指南》)

环境搭建:用 Conda 隔离依赖,少踩90%的坑

项目再简单,环境配不对也白搭。强烈建议使用conda创建独立环境,避免污染全局 Python。

步骤一:安装 Miniconda

前往官网下载安装包:https://docs.conda.io/en/latest/miniconda.html

Windows 用户推荐使用 Anaconda Prompt 执行后续命令。

步骤二:创建虚拟环境

conda create -n yolov5 python=3.9 conda activate yolov5

激活成功后,命令行前缀会显示(yolov5)

✅ 建议使用 Python 3.7~3.10,过高版本可能导致某些包不兼容。


步骤三:安装 PyTorch(CPU/GPU任选)

YOLOv5 基于 PyTorch 构建,必须先装好框架。

CPU 版本(无显卡可用)
conda install pytorch torchvision torchaudio cpuonly -c pytorch
GPU 版本(推荐,需 NVIDIA 显卡)

访问 PyTorch 官网 获取匹配 CUDA 版本的命令。

常见示例(CUDA 11.8):

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

🔍 查看 CUDA 版本:
bash nvidia-smi

验证安装:

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

步骤四:安装 YOLOv5 依赖

下载项目代码

官方 GitHub 地址:

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

国内备份链接(免翻墙):

YOLOv5_v6.1 百度网盘 提取码:efgh

进入项目根目录,安装依赖:

pip install -r requirements.txt

💡 若安装慢,可换清华源加速:
bash pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后不应有任何红色错误提示。


开始训练:一条命令启动你的第一个模型

万事俱备,现在可以正式训练了!

第一步:配置数据集路径

YOLOv5 使用 YAML 文件管理数据信息。编辑data/coco128.yaml

train: ../coco128/images/train2017 val: ../coco128/images/train2017 nc: 80 names: ['person', 'bicycle', 'car', ..., 'toothbrush']

⚠️ 路径是相对路径,请确保能正确访问到图像和标签文件夹。


第二步:选择模型大小

YOLOv5 提供多个预设模型,位于models/目录下:

模型特点
yolov5s.yaml小模型,速度快,适合移动端
yolov5m.yaml平衡速度与精度
yolov5l.yaml更高精度,更大体积
yolov5x.yaml最大模型,最高精度

本次选用最小最快的yolov5s进行演示。

打开yolov5s.yaml,你会看到类似结构:

nc: 80 depth_multiple: 0.33 width_multiple: 0.50 backbone: [[-1, 1, Conv, [64, 6, 2, 2]], [-1, 1, Conv, [128, 3, 2]], ...

无需修改,默认即可。


第三步:运行训练命令

在项目根目录执行:

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

💡 使用 GPU 改为--device 0

参数说明:

参数含义
--img 640输入图像缩放到 640×640
--batch 16每批处理 16 张图
--epochs 100总共训练 100 轮
--data数据配置文件
--cfg模型结构定义文件
--weights初始化权重(空表示从头训练)
--device设备选择

首次运行会自动下载 backbone 权重(如有需要),然后开始训练。


第四步:观察训练日志

终端输出类似:

Epoch gpu_mem box obj cls total targets img_size 1/100 2.1G 0.0786 0.0523 0.0215 0.1524 24 640 2/100 2.1G 0.0721 0.0498 0.0197 0.1416 26 640 ...

同时生成runs/train/exp/文件夹,包含:

  • weights/best.pt:最佳模型权重(按 mAP@0.5 保存)
  • weights/last.pt:最新一轮权重
  • results.png:loss 和 mAP 曲线图
  • train_batch*.jpg:数据增强后的样本可视化

📈 关注results.png中的 mAP@0.5 曲线,理想情况下应稳步上升。


推理测试:看看模型到底学会了什么

训练结束后,用detect.py测试效果。

运行命令:

python detect.py \ --weights runs/train/exp/weights/best.pt \ --source ../coco128/images/train2017/000000000036.jpg \ --img 640 \ --conf-thres 0.4

参数解释:

参数作用
--weights加载训练好的模型
--source输入源(支持单图、多图、视频、摄像头)
--img推理时图像大小
--conf-thres置信度阈值,低于则过滤

运行后结果保存在runs/detect/exp,会生成带检测框的图像。


检测结果示意图


训练输出详解:读懂每一个文件的意义

每次训练都会新建一个exp文件夹(如 exp2、exp3),记录完整实验信息:

文件/目录用途
weights/best.pt最佳模型,用于部署
weights/last.pt最终模型,可用于继续训练(断点续训)
results.csv每 epoch 的 loss、precision、recall、mAP 数据
results.png可视化训练趋势
opt.yaml本次训练的所有超参数记录
hyp.yaml超参数配置(学习率、增强策略等)
train_batch*.jpg数据增强效果展示,检查是否有异常裁剪

✅ 生产部署优先使用best.pt,因其在验证集上表现最优。


常见问题排查清单

问题可能原因解决方法
ModuleNotFoundError依赖未装全重新运行pip install -r requirements.txt
CUDA out of memory显存不足减小 batch size 或换用 yolov5n/s 模型
No labels foundlabel 路径错误检查 yaml 中路径是否指向正确的labels文件夹
loss=nan学习率太高或标签越界检查标签值是否超出 [0,1] 范围
AssertionError: No labels in ...label 文件夹为空确保每个 image 都有对应的 txt 文件(哪怕为空)

特别提醒:标签中的坐标一旦出现负数或大于1的值,会导致 loss 发散甚至训练崩溃。建议在数据预处理阶段加入合法性校验。


写在最后:这只是起点

恭喜你完成了人生第一次 YOLOv5 全流程训练!你现在已掌握:

  • 如何组织符合规范的数据集
  • 如何搭建稳定运行的训练环境
  • 如何启动并监控训练过程
  • 如何进行推理测试与结果分析

但这仅仅是开始。下一步你可以尝试:

🔹用自己的数据训练专属模型
🔹调整超参数提升性能(修改hyp.scratch-low.yaml
🔹启用 Mosaic/AutoAugment 增强泛化能力
🔹导出 ONNX/TensorRT 模型用于边缘设备部署
🔹结合 Flask/FastAPI 搭建 Web 检测服务

后续我会推出系列实战教程:

  • 《YOLOv5 轻量化改进实战》
  • 《如何在 Jetson Nano 上部署 YOLOv5》
  • 《YOLOv5 + DeepSORT 实现多目标追踪》

如果你在实操中遇到任何问题,欢迎留言交流,我会持续更新答疑内容。

🎯 让我们一起把 AI 真正落地到现实世界中去!

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/16 16:17:03

Dify Docker部署与工作流应用指南

Dify&#xff1a;从零构建企业级 AI 应用的实践之路 在生成式 AI 技术快速落地的今天&#xff0c;如何将大模型能力真正融入业务流程&#xff0c;已成为技术团队面临的核心挑战。许多项目止步于“演示可用”&#xff0c;却难以迈入生产环境——原因往往不在于模型本身&#xf…

作者头像 李华
网站建设 2025/12/20 7:21:05

LobeChat能否推荐书单?个性化阅读顾问登场

LobeChat能否推荐书单&#xff1f;个性化阅读顾问登场 在信息爆炸的时代&#xff0c;我们从不缺书——真正稀缺的是“哪一本值得读”。面对浩如烟海的出版物&#xff0c;即便是资深读者也常陷入选择困难&#xff1a;是该重读经典&#xff0c;还是追逐新书榜单&#xff1f;是沉浸…

作者头像 李华
网站建设 2025/12/16 16:16:40

DeepSeek-V2.5本地部署全指南:硬件到生产优化

DeepSeek-V2.5本地部署全指南&#xff1a;从硬件选型到生产级优化 在生成式AI迅速渗透各行各业的今天&#xff0c;将大模型真正落地到企业内部系统中&#xff0c;已成为技术团队的核心挑战之一。许多开发者在尝试部署像 DeepSeek-V2.5 这类千亿参数级别的语言模型时&#xff0…

作者头像 李华
网站建设 2025/12/16 16:14:23

基于PyTorch-CUDA容器的PM2.5浓度预测实战

基于PyTorch-CUDA容器的PM2.5浓度预测实战 当城市被灰蒙的空气笼罩&#xff0c;人们不再只关心“今天有没有雾霾”&#xff0c;而是迫切地追问&#xff1a;未来12小时&#xff0c;孩子上学路上的空气质量安全吗&#xff1f; 这已不再是靠肉眼判断或收听天气预报就能回答的问题…

作者头像 李华
网站建设 2025/12/16 16:12:53

vLLM与TensorRT-LLM性能对比分析

vLLM与TensorRT-LLM性能对比分析 在大模型推理部署的战场上&#xff0c;响应速度、吞吐能力与资源成本之间的博弈从未停歇。随着 Llama-3 等大规模语言模型逐步进入生产环境&#xff0c;如何选择合适的推理后端&#xff0c;已成为架构师和工程团队的关键决策点。 vLLM 和 Ten…

作者头像 李华
网站建设 2025/12/16 16:11:50

LobeChat能否实现同义句替换?论文降重实用功能

LobeChat能否实现同义句替换&#xff1f;论文降重实用功能 在高校科研圈&#xff0c;一个再真实不过的场景每天都在上演&#xff1a;作者反复修改同一段文字&#xff0c;只为让表达“看起来不一样”&#xff0c;以通过查重系统的检测。然而&#xff0c;人工改写耗时费力&#x…

作者头像 李华