Windows 10下YOLOv5环境配置与训练实战指南
1. 环境配置:从零搭建GPU加速的深度学习环境
对于刚接触计算机视觉的开发者来说,环境配置往往是第一个拦路虎。在Windows系统上配置YOLOv5训练环境需要特别注意版本兼容性问题,否则很容易陷入各种报错的泥潭。下面我将分享一套经过验证的配置方案,帮助您快速搭建稳定的训练环境。
核心组件版本选择:
- Python 3.8(3.7-3.9均可)
- CUDA 10.1
- cuDNN 7.6.5
- PyTorch 1.7.0+cu101
注意:YOLOv5对PyTorch版本较敏感,最新版可能要求PyTorch 1.10+,但1.7版本在兼容性和稳定性上表现最佳
1.1 Anaconda环境配置
首先通过Anaconda创建独立的Python环境,避免污染系统环境:
conda create -n yolov5 python=3.8 conda activate yolov51.2 CUDA与cuDNN安装
- 从NVIDIA官网下载CUDA 10.1安装包
- 安装时选择"自定义安装",取消Visual Studio Integration选项
- 下载对应CUDA 10.1的cuDNN 7.6.5,解压后将bin、include、lib文件复制到CUDA安装目录
验证CUDA安装:
nvcc --version1.3 PyTorch GPU版安装
使用精确版本指定命令安装PyTorch:
pip install torch==1.7.0+cu101 torchvision==0.8.1+cu101 torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html安装后验证GPU可用性:
import torch print(torch.__version__) # 应输出1.7.0+cu101 print(torch.cuda.is_available()) # 应输出True常见问题解决方案:
- 遇到
OSError: [WinError 126]错误时,通常是因为缺少VC++运行库,安装最新版VC_redist即可解决 - 如果CUDA不可用,检查环境变量PATH是否包含CUDA的bin和lib路径
2. YOLOv5源码部署与测试
2.1 获取源码与依赖安装
克隆官方仓库并安装依赖:
git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt提示:国内用户可以使用
-i https://pypi.tuna.tsinghua.edu.cn/simple加速安装
2.2 预训练模型测试
下载官方预训练权重:
python -c "from utils.downloads import attempt_download; attempt_download('yolov5s.pt')"运行测试命令:
python detect.py --weights yolov5s.pt --source data/images/bus.jpg --conf 0.25测试结果会保存在runs/detect/exp目录下。如果能看到检测结果的图片,说明环境配置成功。
3. 自定义数据集训练全流程
3.1 数据集准备与标注
YOLOv5支持多种标注格式,推荐使用YOLO格式:
数据集目录结构 ├── images │ ├── train │ └── val └── labels ├── train └── val每个标注文件对应同名图片,内容格式为:
<class_id> <x_center> <y_center> <width> <height>推荐使用LabelImg或CVAT进行标注,导出YOLO格式。
3.2 配置文件修改
创建数据集配置文件data/mydata.yaml:
train: ../datasets/mydata/images/train val: ../datasets/mydata/images/val nc: 3 # 类别数量 names: ['cat', 'dog', 'person'] # 类别名称修改模型配置文件models/yolov5s.yaml,只需更改nc值为你的类别数。
3.3 训练参数调优
启动训练的基本命令:
python train.py --img 640 --batch 16 --epochs 100 --data data/mydata.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt --device 0关键参数说明:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| --img | 640 | 输入图像尺寸 |
| --batch | 8-32 | 根据GPU显存调整 |
| --epochs | 100-300 | 简单数据集可减少 |
| --weights | yolov5s.pt | 使用预训练权重 |
| --device | 0 | 指定GPU编号 |
进阶技巧:
- 添加
--rect参数启用矩形训练,提升小目标检测效果 - 使用
--adam替代默认的SGD优化器,可能获得更快收敛 - 添加
--multi-scale启用多尺度训练,增强模型鲁棒性
4. 模型评估与部署应用
4.1 性能评估指标
运行测试脚本获取mAP等指标:
python val.py --weights runs/train/exp/weights/best.pt --data data/mydata.yaml --img 640重点关注以下指标:
- mAP@0.5: 常见目标检测指标
- mAP@0.5:0.95: 更严格的综合指标
- Precision/Recall: 查准率与查全率
- F1-score: 精确率与召回率的调和平均
4.2 模型导出与部署
YOLOv5支持多种导出格式:
python export.py --weights runs/train/exp/weights/best.pt --include torchscript onnx导出选项对比:
| 格式 | 优点 | 适用场景 |
|---|---|---|
| PyTorch | 保留全部功能 | 继续训练或研究 |
| TorchScript | 高性能 | C++部署 |
| ONNX | 跨平台 | TensorRT等推理引擎 |
| CoreML | 苹果生态 | iOS/macOS应用 |
4.3 实际应用示例
使用训练好的模型进行推理:
import torch model = torch.hub.load('ultralytics/yolov5', 'custom', path='runs/train/exp/weights/best.pt') results = model('input.jpg') results.show() # 显示结果 results.save() # 保存结果对于视频流处理:
import cv2 cap = cv2.VideoCapture(0) # 摄像头 while cap.isOpened(): ret, frame = cap.read() if not ret: break results = model(frame) cv2.imshow('YOLOv5', np.squeeze(results.render())) if cv2.waitKey(1) == ord('q'): break在实际项目中,我发现合理调整置信度阈值能显著改善使用体验。对于安防场景,可以将--conf设为0.6减少误报;而对于医疗影像分析,可能需要降低到0.3以避免漏检关键目标。