YOLOv5作为当前工业界最受欢迎的实时目标检测框架之一,其训练过程融合了计算机视觉领域的多项前沿技术。我在实际工业质检和安防项目中累计训练过上百个YOLOv5模型,发现许多初学者在模型训练阶段容易陷入调参困境。本文将结合我在无人机巡检和智能零售场景的实战经验,详解从数据准备到模型部署的全流程关键技术点。
不同于官方文档的标准化说明,我会重点分享三个独特经验:1) 小样本场景下的数据增强策略组合 2) 基于硬件条件的超参数动态调整法 3) 模型收敛异常的六种典型表现及应对方案。这些经验帮助我们将某PCB缺陷检测项目的mAP@0.5从0.72提升到0.89。
训练设备的选择直接影响迭代效率,根据项目预算推荐以下配置方案:
入门级(1万元内):RTX 3060(12GB显存)+ 32GB内存
专业级(3-5万元):RTX 3090(24GB显存)× 2 + 64GB内存
关键提示:显存容量决定最大batch_size,而GPU核心数影响训练速度。实际测试显示,3090相比3060在相同模型下训练速度提升2.3倍。
采用COCO标注格式时需特别注意:
python复制{
"bbox": [x_min, y_min, width, height], # 相对坐标
"category_id": 0, # 从0开始编号
"area": width * height
}
常见问题处理:
针对不同场景推荐策略:
| 场景类型 | 推荐增强组合 | 效果提升 |
|---|---|---|
| 工业缺陷检测 | Mosaic+RandomAffine+HSV调整 | +15% mAP |
| 行人检测 | CutMix+RandomPerspective | +12% Recall |
| 车辆识别 | MixUp+CopyPaste | +8% Precision |
推荐使用conda创建隔离环境:
bash复制conda create -n yolov5 python=3.8
conda activate yolov5
pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txt # 官方requirements文件
修改data/hyps/hyp.scratch-low.yaml中的核心参数:
yaml复制lr0: 0.01 # 初始学习率
lrf: 0.1 # 最终学习率系数
momentum: 0.937 # SGD动量
weight_decay: 0.0005 # 权重衰减
warmup_epochs: 3.0 # 热身epoch数
动态调整策略:
--evolve参数进行超参数进化多GPU训练示例:
bash复制python train.py --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64 --device 0,1
关键参数说明:
--img-size 640:输入图像尺寸--rect:启用矩形训练(减少填充)--adam:使用Adam优化器--sync-bn:多GPU同步BN自适应锚框计算
python复制python utils/autoanchor.py --data your_data.yaml
输出示例:
code复制Best possible recall: 0.9999
Anchors: [[12,16], [19,36], [40,28], [36,75], [76,55], [72,146], [142,110], [192,243], [459,401]]
分类头改进
| 方法 | 推理速度(ms) | mAP下降 | 适用场景 |
|---|---|---|---|
| FP32原生 | 15.2 | 0% | 服务器部署 |
| FP16 | 8.7 | 0.2% | 边缘GPU |
| INT8量化 | 5.1 | 1.5% | 嵌入式设备 |
| TensorRT优化 | 3.8 | 0.8% | Jetson系列 |
Loss震荡剧烈
验证集指标不升反降
显存溢出(OOM)
bash复制# 解决方案:
--batch-size 32 -> 16
--img-size 640 -> 512
ONNX导出失败:
bash复制python export.py --weights yolov5s.pt --include onnx
TensorRT推理异常:
自定义检测头设计
蒸馏压缩方案
python复制# 教师模型指导学生模型
teacher_loss = KLDiv(teacher_logits, student_logits)
total_loss = 0.7*det_loss + 0.3*teacher_loss
边缘设备部署
在实际的智慧园区项目中,通过上述方法我们将人脸识别模型的推理速度从78ms优化到23ms,同时保持98.7%的识别准确率。关键点在于: