Windows 10/11 下用 YOLOv5 训练自己的数据集:从标注到部署的保姆级避坑指南
Windows平台YOLOv5实战从零构建定制化目标检测模型的完整指南1. 环境配置与工具准备在Windows系统上搭建YOLOv5开发环境需要特别注意版本兼容性问题。不同于Linux系统Windows对CUDA和PyTorch的版本组合更为敏感。以下是经过验证的稳定配置方案必备组件清单NVIDIA显卡驱动建议使用Studio驱动而非Game Ready驱动CUDA Toolkit 11.3 cuDNN 8.2.1与PyTorch 1.10完美兼容Python 3.8.103.9版本可能出现依赖冲突PyTorch 1.10.0 torchvision 0.11.1安装PyTorch时推荐使用以下命令conda install pytorch1.10.0 torchvision0.11.0 torchaudio0.10.0 cudatoolkit11.3 -c pytorch提示使用Anaconda创建独立环境时建议命名为yolov5并记录所有安装包版本便于后续问题排查开发工具选择上Visual Studio 2019 Community Edition是必须的因为它提供了C编译工具链。对于IDE实测PyCharm Professional在调试YOLOv5训练过程时表现最佳其CUDA内存监控功能非常实用。2. 数据集构建与标注技巧2.1 高效标注工作流LabelImg虽然是经典标注工具但在Windows平台存在几个典型问题标注保存路径含有中文时会出现乱码无法批量处理图像旋转问题标注过程中容易崩溃推荐改用CVATComputer Vision Annotation Tool在线工具通过Docker在本地运行docker run -d -p 8080:8080 --name cvat -v cvat_data:/home/django/data openvino/cvat_server标注优化技巧对小型物体采用2×2网格标注法重叠物体使用z-index分层标注模糊目标建议多人标注取交集2.2 数据集划分与增强YOLOv5要求的数据集结构如下dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/使用RoboFlow进行智能数据增强from roboflow import Roboflow rf Roboflow(api_keyYOUR_API_KEY) project rf.workspace().project(your-project) dataset project.version(1).download(yolov5)3. 模型训练与调优实战3.1 配置文件深度定制修改data/custom.yaml时需注意train: ../dataset/images/train val: ../dataset/images/val nc: 3 # 类别数 names: [cat, dog, person] # 按字母顺序排列模型选择建议模型类型参数量显存需求适用场景yolov5n1.9M2GB边缘设备yolov5s7.2M4GB入门级GPUyolov5m21.2M6GB中端配置yolov5l46.5M8GB高性能PCyolov5x86.7M16GB工作站3.2 低显存训练方案针对GTX 1060等6GB显存显卡的优化参数python train.py --img 416 --batch 8 --epochs 100 --data custom.yaml --cfg models/yolov5s.yaml --weights --device 0 --hyp data/hyp.scratch-low.yaml关键调整项使用--adam优化器减少内存占用添加--cache ram参数加速数据加载启用--multi-scale增强小目标检测能力4. 模型部署与性能优化4.1 导出为生产环境格式转换为TensorRT引擎提升推理速度from torch2trt import torch2trt model torch.load(best.pt)[model].float() model.eval() data torch.randn(1, 3, 640, 640).cuda() model_trt torch2trt(model, [data], fp16_modeTrue) torch.save(model_trt.state_dict(), best_trt.pth)4.2 实时摄像头处理优化使用多线程处理视频流import threading from queue import Queue class CameraStream: def __init__(self, src0): self.stream cv2.VideoCapture(src) self.Q Queue(maxsize128) self.thread threading.Thread(targetself.update, args()) self.thread.daemon True self.thread.start() def update(self): while True: ret, frame self.stream.read() if not ret: break if not self.Q.full(): self.Q.put(frame)5. 典型问题解决方案库5.1 内存溢出(OOM)问题症状训练时出现CUDA out of memory降低--batch-size至4或更低添加--gradient-accumulation 2参数修改models/yolov5s.yaml中的width_multiple: 0.55.2 标注文件路径错误报错Image Not Found解决方案检查data.yaml中的路径是否使用正斜杠运行路径检查脚本from pathlib import Path for split in [train, val]: img_dir Path(fdataset/images/{split}) lbl_dir Path(fdataset/labels/{split}) assert img_dir.exists(), fMissing {img_dir} assert lbl_dir.exists(), fMissing {lbl_dir}5.3 摄像头接入异常现象cv2.VideoCapture(0)返回False 排查步骤检查DirectShow是否支持import cv2 print(cv2.getBuildInformation()) # 查看Video I/O支持情况改用DSHOW后端cap cv2.VideoCapture(0, cv2.CAP_DSHOW)在实际项目中我发现使用OpenCV的DNN模块直接加载YOLOv5模型时预处理环节需要特别注意BGR到RGB的转换。而采用PyTorch原生推理时则要注意输入张量的归一化处理。这些细节往往成为模型在实际场景表现不佳的隐藏原因。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2550977.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!