去年在做工业质检项目时,发现传统OpenCV方案对复杂缺陷的识别率始终卡在83%上不去。经过两周的技术选型,最终确定用YOLOv5+PyTorch的方案,准确率直接拉到96.3%。这次就把整个环境搭建和开发流程梳理成可复用的方法论。
这个技术组合的核心价值在于:
推荐使用Miniconda3最新版,比完整版更轻量:
bash复制wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
创建专用环境(Python3.8最佳):
bash复制conda create -n yolo_pytorch python=3.8
conda activate yolo_pytorch
重要提示:不要用conda安装PyTorch!conda源的PyTorch版本经常滞后,且CUDA支持不完整
根据显卡型号选择对应CUDA版本的PyTorch:
安装命令示例(CUDA 11.3):
bash复制pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
验证安装:
python复制import torch
print(torch.cuda.is_available()) # 应返回True
print(torch.rand(2,3).cuda()) # 应正常输出张量
推荐使用ultralytics官方仓库:
bash复制git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
目录结构关键点:
数据准备规范:
code复制dataset/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
code复制<class_id> <x_center> <y_center> <width> <height>
启动训练(4GB显存可用YOLOv5s):
bash复制python train.py --img 640 --batch 16 --epochs 100 --data coco128.yaml --weights yolov5s.pt
实战技巧:添加--cache参数可启用RAM缓存,训练速度提升3倍
python复制model = torch.quantization.quantize_dynamic(
model, {torch.nn.Linear}, dtype=torch.qint8)
bash复制python export.py --weights runs/train/exp/weights/best.pt --include onnx
实测性能对比(RTX 3060):
| 方案 | 推理时延 | 显存占用 |
|---|---|---|
| 原始模型 | 15ms | 1.8GB |
| TensorRT | 3.2ms | 1.2GB |
| ONNX Runtime | 6.5ms | 1.5GB |
报错"CUDA out of memory":
报错"Unable to find cuDNN":
重新安装匹配版本的CUDA Toolkit:
bash复制sudo apt install --reinstall cuda-toolkit-11-3
损失值NaN:
mAP指标不升反降:
ONNX导出失败:
TensorRT精度下降:
这套技术栈经过多个工业项目验证,从环境配置到模型部署的全流程耗时可以从原来的2周压缩到3天。最近在做的PCB缺陷检测项目中,用YOLOv5m+TensorRT方案实现了平均12ms的单图检测速度,产线误检率控制在0.3%以下。