YOLOV5的简单教程,配置主要流程(亲测)
修改后的 YOLOv5 从零开始教程
本文将从零开始,一步步带你完成 YOLOv5 的环境配置、数据集准备、模型训练、验证与预测,让你快速上手 YOLOv5。在配置过程中,需注意代码安全性和潜在风险,以下内容已对关键部分进行润色,并针对不同场景提出多种情况分析。
1. 环境准备
1.1 硬件要求
- GPU(推荐):NVIDIA 显卡,显存至少 4GB(训练较小模型如 YOLOv5s)
- CPU:可用,但训练速度慢
- 内存:建议 16GB 以上
1.2 软件要求
- 操作系统:Windows 10/11 或 Ubuntu 22.04
- Python:3.8 或 3.9(推荐 3.8)
- CUDA:10.2 或 11.3 以上(需与 PyTorch 版本匹配)
- PyTorch:1.7 以上
1.3 安装 Python 与 PyTorch
Windows 下安装 Anaconda(推荐):
- 下载 Anaconda 并安装(建议从官网获取安装包)。

放哪个盘看自己,尽量不要有中文路径
1. 打开 Anaconda Prompt,创建虚拟环境:
conda create -n yolov5 python=3.8
conda activate yolov5
2.安装cuda
建议不要安装最新的,与自己的显卡相适应,其次和pytorch版本对应
nvidia-smi
输出结果顶部会显示cuda版本。
安装 PyTorch:(如果用vscode编译,这一步可以先跳过)
访问 PyTorch 官网,根据 CUDA 版本选择命令(优先使用官方源)。例如 CUDA 11.3:
pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html
如果仅用 CPU:
pip install torch torchvision torchaudio
验证安装:
import torch
print(torch.__version__)
print(torch.cuda.is_available()) # 输出 True 表示 GPU 可用
风险提示与多种情况分析:
- 情况1:依赖源风险
使用-i参数指定镜像源时,需确保来源可信(如清华大学镜像源)。建议优先使用官方 PyPI 源,仅在网络不佳时切换镜像。 - 情况2:环境冲突
在多项目环境中,未使用虚拟环境可能导致包冲突。务必创建独立环境(如conda create -n yolov5)。 - 情况3:CUDA 版本不匹配
如果安装后torch.cuda.is_available()返回 False,检查 CUDA 与 PyTorch 版本兼容性。
2. 克隆 YOLOv5 仓库
打开终端,进入工作目录,执行:
git clone https://github.com/ultralytics/yolov5
cd yolov5
具体指令有报错的话,可以问ai工具。
如果网络较慢,可尝试国内镜像(替换为 https://hub.fastgit.xyz/ultralytics/yolov5),但需验证链接可靠性。
风险提示:
- 克隆第三方镜像时,确认其与官方仓库同步,避免代码篡改风险。
3. 安装依赖
YOLOv5 项目自带 requirements.txt,建议优先从官方源安装:
pip install -r requirements.txt
国内用户若需加速,可使用可信镜像源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
安装后验证:
python detect.py --source data/images/bus.jpg --weights yolov5s.pt
若成功运行并显示检测结果,则环境配置完成。
多种情况分析:
- 情况1:依赖版本冲突
若安装失败,尝试指定包版本(如pip install numpy==1.21.0)或使用--no-cache-dir避免缓存问题。 - 情况2:权限不足
在 Linux 系统中,若提示权限错误,可添加--user参数或使用sudo(需谨慎)。
4. 准备数据集
YOLOv5 要求数据集为 YOLO 格式,即每张图片对应一个 .txt 标注文件,内容为:
class_id x_center y_center width height
所有坐标均为归一化值(0~1)。
4.1 数据集结构
推荐组织如下:
dataset/
├── images/
│ ├── train/
│ ├── val/
│ └── test/ # 可选
└── labels/
├── train/
├── val/
└── test/
4.2 标注文件生成
若已有 VOC(XML)或 COCO(JSON)格式标注,可使用脚本转换。建议使用官方工具(如 utils/general.py 中的函数)或开源工具 labelImg。
我个人用labelimg,直接命令行下载,(在yolo的虚拟环境中
pip install pyqt5 lxml
)

opendir选择自己的images/train
changesave dir选择labels/train
具体打标签的细节可以问ai,记住拖框的时候不要松手
4.3 配置文件 data.yaml
在 yolov5/data 目录下新建 mydata.yaml,内容如下:
train: ../dataset/images/train # 训练集图片路径
val: ../dataset/images/val # 验证集图片路径
test: ../dataset/images/test # 测试集图片路径(可选)
nc: 2 # 类别数量
names: ['cat', 'dog'] # 类别名称列表
风险提示与多种情况分析:
- 情况1:路径错误
相对路径可能导致文件找不到。建议使用绝对路径或验证路径存在性(如ls ../dataset/images/train)。 - 情况2:标注文件异常
坐标超出 [0,1] 范围会引发训练错误。使用脚本批量检查标注文件(如 Python 脚本遍历.txt文件验证数值)。 - 情况3:数据集泄露
训练集与验证集重叠时,模型评估结果虚高。确保数据集严格划分。
我个人使用vscode(将yolov5拖动到vscode打开)

红色的地方要换成自己的数据集等,具体的细节我的建议还是问ai,一步步配置也不算麻烦(一次配置,以后只修改路径就行)
后续具体内容会更新(细节和模型训练的细节,以及部分不出框的问题)
5. 修改模型配置文件
YOLOv5 提供预定义模型(如 yolov5s.yaml),按需复制并修改类别数:
cp models/yolov5s.yaml models/yolov5s_custom.yaml
编辑 yolov5s_custom.yaml,将 nc 改为你的类别数:
nc: 2 # number of classes
风险提示:
- 修改配置文件时,避免误删其他参数(如锚点配置)。
6. 训练模型
6.1 单 GPU 训练
python train.py --img 640 --batch 16 --epochs 100 --data data/mydata.yaml --cfg models/yolov5s_custom.yaml --weights yolov5s.pt
6.2 多 GPU 训练(DataParallel)
python train.py --img 640 --batch 64 --epochs 100 --data data/mydata.yaml --cfg models/yolov5s_custom.yaml --weights yolov5s.pt --device 0,1
6.3 关键参数说明
| 参数 | 含义 | 常用值 |
|---|---|---|
--img |
输入图像尺寸 | 640 |
--batch |
批次大小 | 根据显存调整 |
--epochs |
训练轮数 | 100-300 |
--data |
数据集配置文件 | data/mydata.yaml |
--cfg |
模型配置文件 | models/yolov5s_custom.yaml |
--weights |
预训练权重 | yolov5s.pt |
--device |
GPU 编号 | 0,1 |
--cache |
缓存图像 | ram 或 disk |
训练过程中,日志、权重和结果图保存在 runs/train/exp 目录。
多种情况分析:
- 情况1:显存不足
若--batch过大导致 OOM 错误,逐步减小批次(如从 16 降至 8)或降低图像尺寸(--img 416)。 - 情况2:训练不稳定
学习率过高可能引发 NaN 损失。尝试减小--lr0(默认 0.01)或启用自动学习率调整(如--adam)。 - 情况3:多 GPU 同步问题
使用多 GPU 时,确保驱动和 CUDA 版本一致,避免进程通信错误。
7. 模型评估
在验证集上评估模型:
python val.py --data data/mydata.yaml --weights runs/train/exp/weights/best.pt --img 640
输出指标包括 mAP@0.5、mAP@0.5:0.95 等。
风险提示:
- 权重文件路径错误会导致评估失败。验证路径存在性(如
ls runs/train/exp/weights/)。
8. 模型预测
8.1 单张图片预测
python detect.py --weights runs/train/exp/weights/best.pt --source path/to/image.jpg --img 640 --conf 0.25
8.2 文件夹预测
python detect.py --weights runs/train/exp/weights/best.pt --source path/to/images/ --img 640 --conf 0.25
8.3 视频或摄像头预测
# 视频文件
python detect.py --weights runs/train/exp/weights/best.pt --source path/to/video.mp4
# 摄像头(0 表示第一个摄像头)
python detect.py --weights runs/train/exp/weights/best.pt --source 0
预测结果默认保存在 runs/detect/exp。
多种情况分析:
- 情况1:输入源无效
若--source指向损坏文件或无效设备,预测失败。提前测试输入源(如用ffmpeg检查视频文件)。 - 情况2:低置信度结果
--conf阈值过低可能输出大量误检。根据场景调整阈值(如 0.5 用于高精度需求)。
9. 常见问题与解决方法
9.1 ModuleNotFoundError: No module named 'torch'
- 确保已正确安装 PyTorch,检查虚拟环境是否激活。
9.2 CUDA out of memory
- 减小
--batch-size或使用--img 416降低分辨率。 - 启用
--cache加速数据加载,但显存不足时慎用。
9.3 AttributeError: 'NoneType' object has no attribute 'shape'
- 图片路径错误或图片损坏,检查
--source路径并验证文件完整性。
9.4 训练时 NaN 损失值
- 学习率过高,尝试减小
--lr0(默认 0.01)。 - 数据集中存在异常标注(坐标超出 0~1),检查标签文件。
9.5 验证集 mAP 很低
- 检查数据集划分是否合理,类别是否均衡。
- 增加训练轮数,或使用更大模型(如
yolov5m)。 - 数据增强过于激进,可调整
--augment参数。
9.6 模型转换问题
导出模型为 ONNX 格式:
python export.py --weights runs/train/exp/weights/best.pt --include onnx
更多格式见 export.py 的 --include 参数。
新增多种情况分析:
- 情况1:模型导出失败
权重文件损坏或版本不兼容(如 PyTorch 版本过低)。尝试重新训练或升级 PyTorch。 - 情况2:部署环境差异
转换后的 ONNX 模型在目标设备(如 TensorRT)可能不兼容。测试转换后模型在目标环境中的推理。 - 情况3:安全风险
模型权重文件(.pt)可能包含敏感数据。部署时限制访问权限,避免未授权使用。较少见
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)