☰
Windows下YOLOv5环境搭建与目标检测实战指南
2026/10/27 13:02:30 网站建设 项目流程

1. Windows 下 YOLO 环境搭建与使用完整指南

YOLO(You Only Look Once)作为当前最流行的实时目标检测算法之一,在工业质检、安防监控、自动驾驶等领域有着广泛应用。但在Windows平台搭建YOLO开发环境时,新手常会遇到CUDA版本冲突、PyTorch安装失败、OpenCV兼容性等问题。本文将基于Windows 10/11系统,手把手带你完成从零开始的完整环境配置,并演示如何使用自定义数据集进行训练和推理。

1.1 环境准备清单

在开始前需要准备以下组件:

  • Windows 10/11 64位系统(建议版本1903以上)
  • NVIDIA显卡(GTX 1060及以上,需支持CUDA)
  • Python 3.8-3.10(不推荐3.11+因部分依赖尚未适配)
  • CUDA 11.3 + cuDNN 8.2.1(经测试最稳定的组合)
  • PyTorch 1.12.1 + torchvision 0.13.1

注意:务必确保显卡驱动为最新版,可通过NVIDIA控制面板检查。笔者曾因驱动版本过旧导致CUDA无法识别显卡,浪费半天排查时间。

1.2 安装流程概览

整个搭建过程分为五个关键阶段:

  1. 基础开发环境配置(Python/VS Build Tools)
  2. CUDA和cuDNN安装验证
  3. PyTorch环境部署
  4. YOLOv5源码获取与依赖安装
  5. 测试Demo运行

2. 详细环境配置步骤

2.1 Python与VS Build Tools安装

首先从Python官网下载3.9.13版本(较新的3.10也可):

# 验证安装成功 python --version pip --version

接着安装Visual Studio Build Tools:

  1. 下载VS 2019生成工具
  2. 勾选"使用C++的桌面开发"和"Windows 10 SDK"
  3. 安装后添加cl.exe到系统PATH:
# 典型路径示例 set PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64

2.2 CUDA与cuDNN配置

从NVIDIA官网下载:

  • CUDA Toolkit 11.3.0
  • cuDNN v8.2.1 for CUDA 11.3

安装后需要验证:

nvcc --version # 应显示11.3版本 nvidia-smi # 查看GPU状态

将cuDNN解压后文件复制到CUDA安装目录:

cudnn-11.3-windows-x64-v8.2.1.32\bin → C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin cudnn-11.3-windows-x64-v8.2.1.32\include → ...\CUDA\v11.3\include cudnn-11.3-windows-x64-v8.2.1.32\lib → ...\CUDA\v11.3\lib

2.3 PyTorch环境安装

使用pip安装指定版本PyTorch:

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113

验证GPU是否可用:

import torch print(torch.cuda.is_available()) # 应输出True print(torch.rand(2,3).cuda()) # 测试张量计算

3. YOLOv5部署与测试

3.1 获取源码与安装依赖

git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt

常见问题解决:

  • 如果出现pycocotools安装失败,尝试:
pip install pycocotools-windows
  • OpenCV报错可指定版本:
pip install opencv-python==4.5.5.64

3.2 测试预训练模型

下载yolov5s.pt权重文件后运行:

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

预期看到输出:

detect: weights=yolov5s.pt, source=data/images/, data=data\coco128.yaml, imgsz=[640, 640] YOLOv5 🚀 v6.0-224-g4c40933 torch 1.12.1 CUDA:0 (NVIDIA GeForce RTX 3060, 12054.5MB)

4. 自定义数据集训练

4.1 数据准备

推荐使用LabelImg进行标注:

  1. 安装LabelImg:
pip install labelImg labelImg
  1. 标注后生成YOLO格式的txt文件
  2. 按以下结构组织数据集:
dataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/

4.2 训练配置

创建data/custom.yaml:

train: ../dataset/images/train val: ../dataset/images/val nc: 3 # 类别数 names: ['person', 'car', 'dog']

启动训练:

python train.py --img 640 --batch 16 --epochs 100 --data custom.yaml --weights yolov5s.pt

4.3 训练参数调优建议

参数推荐值说明
--img640输入图像尺寸
--batch8-32根据显存调整
--epochs50-300简单数据集可减少
--weightsyolov5s.pt预训练模型
--datacustom.yaml数据集配置文件

5. 常见问题排查

5.1 CUDA相关错误

报错:CUDA out of memory

  • 解决方案:减小batch size,检查是否有其他程序占用显存

报错:No CUDA runtime is found

  • 检查CUDA与PyTorch版本是否匹配
  • 运行set CUDA_VISIBLE_DEVICES=0指定显卡

5.2 训练过程问题

Loss不下降:

  • 检查标注是否正确(可视化验证)
  • 适当增大学习率(--lr 0.01)
  • 增加数据增强(--augment True)

显存溢出:

  • 减小输入尺寸(--img 416)
  • 使用更小模型(如yolov5n.pt)
  • 启用梯度累积(--accumulate 2)

5.3 部署优化技巧

  1. 导出ONNX模型便于部署:
python export.py --weights runs/train/exp/weights/best.pt --include onnx
  1. 使用TensorRT加速:
python export.py --weights best.pt --include engine --device 0
  1. 对于嵌入式设备建议使用YOLOv5s或更小的模型变体

6. 进阶使用建议

6.1 模型微调策略

  • 冻结骨干网络(freeze前20层):
# 在train.py中添加 for k, v in model.named_parameters(): if 'model.0' in k or 'model.1' in k: # 示例冻结前两层 v.requires_grad = False
  • 使用余弦退火学习率:
# data/hyps/hyp.scratch-low.yaml lr0: 0.01 # 初始学习率 lrf: 0.2 # 最终学习率=lr0*lrf

6.2 性能监控工具

推荐使用W&B(Weights & Biases):

pip install wandb wandb login

在train.py运行时自动记录:

Epoch gpu_mem box obj cls labels img_size 0/299 5.12G 0.0711 0.0356 0.01632 32 640 1/299 5.12G 0.0703 0.0349 0.01589 32 640

6.3 生产环境部署

对于Windows服务化部署建议:

  1. 使用FastAPI封装模型接口:
from fastapi import FastAPI, File app = FastAPI() @app.post("/detect") async def detect(file: bytes = File(...)): results = model(file) return {"objects": results.pandas().xyxy[0].to_dict()}
  1. 使用Docker容器化:
FROM nvidia/cuda:11.3.0-runtime COPY yolov5 /app WORKDIR /app RUN pip install -r requirements.txt CMD ["python", "detect.py", "--weights", "best.pt"]

我在实际部署中发现,Windows平台下使用YOLO的最佳实践是:

  1. 优先使用WSL2进行开发(可获得接近Linux的性能)
  2. 对于工业场景建议转换为TensorRT引擎
  3. 监控GPU温度(长期高负载可能导致降频)
  4. 定期清理runs/detect/exp*目录防止存储空间耗尽

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

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

立即咨询