YOLO系列环境配置与训练实战:从零到部署的完整指南
2026/7/13 13:43:36 网站建设 项目流程

1. 环境准备:从零搭建YOLO训练基地

第一次接触YOLO训练的朋友可能会被复杂的依赖环境吓到,其实只要按步骤操作,半小时就能搞定。我去年给工厂做零件缺陷检测系统时,曾经在五台不同配置的机器上反复搭建环境,总结出了这套通用流程。

1.1 显卡驱动与CUDA安装

先检查你的显卡是否支持CUDA,这是GPU加速的关键。在cmd里输入nvidia-smi,如果看到类似下面的输出,说明驱动已安装:

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 535.86.05 Driver Version: 535.86.05 CUDA Version: 12.2 | |-------------------------------+----------------------+----------------------+

重点看右上角的CUDA Version,这表示当前驱动支持的最高CUDA版本。如果报错,先去 NVIDIA官网 下载最新驱动。

CUDA Toolkit安装有个坑要注意:不是版本越新越好!必须和PyTorch支持的版本匹配。比如PyTorch 2.0最高只支持CUDA 11.7,你装12.x就会出问题。建议到 PyTorch官网 查看推荐版本。

安装CUDA时记得勾选:

  • CUDA Toolkit
  • CUDA Samples(用于验证)
  • 开发组件(VS集成)

1.2 cuDNN配置技巧

下载cuDNN需要注册NVIDIA账号,建议选择与CUDA对应的版本。解压后把bin、include、lib三个文件夹的内容复制到CUDA安装目录(默认在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7)。

验证是否成功:运行C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\demo_suite下的bandwidthTest.exedeviceQuery.exe,看到Result = PASS就OK。

1.3 Conda环境管理

用conda创建独立环境能避免包冲突。我习惯用Python 3.8,因为某些库对新版本支持不好:

conda create -n yolo python=3.8 conda activate yolo

安装PyTorch时一定要用官网生成的命令。比如对于CUDA 11.7:

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

验证GPU是否可用:

import torch print(torch.cuda.is_available()) # 应该输出True print(torch.rand(2,3).cuda()) # 应该显示tensor在GPU上

2. YOLO项目配置实战

2.1 源码获取与IDE配置

推荐直接从Ultralytics的GitHub仓库克隆最新代码:

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

用PyCharm打开项目后,记得设置解释器为conda环境。有个常见问题:PyCharm可能找不到conda,这时需要手动指定conda.exe路径(一般在Anaconda3/Scripts/conda.exe)。

2.2 依赖安装避坑指南

requirements.txt里有些包需要特殊处理:

  • 注释掉torch相关行(因为前面已经单独安装了GPU版)
  • opencv-python可能会报错,改用:
pip install opencv-python-headless

国内用户建议换源加速:

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

2.3 快速验证环境

运行detect.py测试预训练模型:

python detect.py --weights yolov5s.pt --source data/images/bus.jpg

如果看到runs/detect/exp目录下生成带检测框的图片,说明环境配置成功。第一次运行会自动下载yolov5s.pt模型(约14MB)。

3. 数据集制作与训练技巧

3.1 数据标注规范

推荐用LabelImg或CVAT进行标注,保存为YOLO格式的txt文件,每行格式:

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

坐标都是相对图像宽高的比例值(0-1之间)。

目录结构建议这样组织:

dataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/

3.2 数据增强策略

修改data/hyps/hyp.scratch-low.yaml可以调整增强参数:

hsv_h: 0.015 # 色调变化幅度 hsv_s: 0.7 # 饱和度变化幅度 flipud: 0.0 # 上下翻转概率 mosaic: 1.0 # 马赛克增强概率

对于小样本数据集(<1000张),建议:

  • 调高mosaic概率
  • 启用mixup增强
  • 增加旋转角度范围

3.3 训练参数调优

关键参数在train.py的parse_opt()函数中:

parser.add_argument('--epochs', type=int, default=300) parser.add_argument('--batch-size', type=int, default=16) parser.add_argument('--imgsz', '--img', type=int, default=640)

根据显卡显存调整batch-size:

  • 8GB显存:batch=8-12
  • 16GB显存:batch=16-32

启动训练:

python train.py --data coco128.yaml --cfg yolov5s.yaml --weights '' --batch-size 16

4. 模型导出与部署

4.1 导出ONNX格式

python export.py --weights runs/train/exp/weights/best.pt --include onnx

遇到opset版本问题可以指定版本:

python export.py --weights best.pt --include onnx --opset 12

4.2 TensorRT加速

先用onnx2trt转换:

trtexec --onnx=best.onnx --saveEngine=best.engine --fp16

在Python中调用:

import tensorrt as trt with open("best.engine", "rb") as f: runtime = trt.Runtime(trt.Logger(trt.Logger.WARNING)) engine = runtime.deserialize_cuda_engine(f.read())

4.3 常见部署问题

问题1:ONNX推理结果与原模型不一致

  • 检查export时的imgsz是否和训练一致
  • 确认预处理(归一化参数)是否相同

问题2:TensorRT性能反而下降

  • 尝试禁用fp16模式
  • 调整workspace大小

问题3:边缘设备部署内存不足

  • 使用--dynamic参数导出动态尺寸模型
  • 量化成INT8格式

记得训练完成后用val.py验证模型性能:

python val.py --weights best.pt --data coco128.yaml --img 640

最后分享一个实用技巧:用--exist-ok参数可以避免每次训练生成新exp目录。我在调试阶段会这样写:

python train.py --exist-ok --name defect_detect

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询