news 2026/4/22 13:59:41

零基础入门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进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 17:49:54

Codex效率命令安全审查:防止Anything-LLM生成危险指令

Codex效率命令安全审查&#xff1a;防止Anything-LLM生成危险指令 在现代AI驱动的工作流中&#xff0c;开发者越来越依赖大语言模型&#xff08;LLM&#xff09;来自动生成代码或系统命令。像 Anything-LLM 这样的开源平台&#xff0c;集成了RAG引擎与多模型支持能力&#xff0…

作者头像 李华
网站建设 2026/4/22 21:53:49

单卡部署Qwen3-VL-8B视觉AI全指南

单卡部署Qwen3-VL-8B视觉AI全指南 你有没有遇到过这种情况&#xff1a;用户上传一张产品图&#xff0c;问“这个包能装下我的iPad吗&#xff1f;”系统却只能识别出“手提包”三个字&#xff0c;连尺寸对比都做不到&#xff1f;更别提团队还在等大模型API的响应——延迟高、成本…

作者头像 李华
网站建设 2026/4/17 2:19:14

Git Commit信息规范:为TensorRT项目贡献代码的前提

Git Commit信息规范&#xff1a;为TensorRT项目贡献代码的前提 在深度学习模型加速领域&#xff0c;每一次性能的微小提升都可能带来系统级的变革。当一个 ResNet-50 模型从每秒处理 3,000 张图像跃升至 18,000 张时&#xff0c;背后的推手往往不是硬件升级&#xff0c;而是像…

作者头像 李华
网站建设 2026/4/21 1:18:17

口碑好的电动平车机构

口碑好的电动平车机构在工业运输领域&#xff0c;电动平车凭借其高效、便捷等优势&#xff0c;成为众多企业的理想选择。而选择一家口碑好的电动平车机构至关重要&#xff0c;杭州龙立品牌便是其中的佼佼者。卓越的产品质量口碑好的电动平车机构&#xff0c;其核心竞争力之一便…

作者头像 李华
网站建设 2026/4/14 17:26:52

91n网络环境下最优TensorFlow镜像拉取方案

91n网络环境下最优TensorFlow镜像拉取方案 在金融、制造等对安全与稳定性要求极高的企业环境中&#xff0c;AI模型的部署早已不再是“能不能跑”的问题&#xff0c;而是“能否稳定、快速、可复制地交付”。尤其是在类似“91n”这类受限内网中——外网访问受限、DNS解析不稳定、…

作者头像 李华
网站建设 2026/4/22 19:48:00

gpt-oss-20b模型下载与部署全指南

gpt-oss-20b模型部署实战&#xff1a;如何在消费级GPU上运行类GPT-4级别的开源大模型 你有没有遇到过这样的困境&#xff1f;想用一个强大的开源大模型做本地推理&#xff0c;结果发现不是显存爆了&#xff0c;就是加载半小时还没跑起来。Llama 70B太重&#xff0c;Mistral又不…

作者头像 李华