Yolov5自定义图片训练测试及模型调优全流程指南
2025.09.18 18:05浏览量:3简介:本文详细介绍了Yolov5自定义图片训练、测试及模型调优的全过程,涵盖数据准备、模型训练、测试评估和优化策略,适合开发者及企业用户实践参考。
Yolov5自定义图片训练测试及模型调优全流程指南
摘要
本文系统阐述了基于Yolov5框架的自定义图片训练、测试及模型调优的完整流程。从数据集准备、标注规范、模型配置到训练策略优化,结合代码示例和实操建议,帮助开发者高效完成目标检测模型的定制化开发。内容涵盖数据增强、超参数调优、模型评估等关键环节,适用于工业检测、安防监控等场景的落地实践。
一、数据准备与标注规范
1.1 数据集结构要求
Yolov5采用VOC或COCO格式的数据集结构,推荐使用以下目录组织方式:
custom_dataset/
├── images/
│ ├── train/ # 训练集图片
│ ├── val/ # 验证集图片
│ └── test/ # 测试集图片(可选)
└── labels/
├── train/ # 训练集标注
└── val/ # 验证集标注
1.2 标注工具选择
推荐使用以下标注工具生成Yolo格式标注文件:
- LabelImg:支持VOC格式导出,需转换为Yolo格式
- Labelme:灵活标注工具,需脚本转换
- CVAT:企业级标注平台,支持团队协作
Yolo格式标注文件为.txt格式,每行格式为:
<class_id> <x_center> <y_center> <width> <height>
所有坐标值需归一化到[0,1]区间。
1.3 数据增强策略
在data.yaml
中配置数据增强参数,推荐组合:
train: ../custom_dataset/images/train
val: ../custom_dataset/images/val
nc: 5 # 类别数
names: ['class1', 'class2', 'class3', 'class4', 'class5']
# 数据增强配置
augment: True
mosaic: 0.8 # Mosaic增强概率
hsv_h: 0.015 # HSV色彩空间增强
hsv_s: 0.7 # 饱和度增强
hsv_v: 0.4 # 亮度增强
flipud: 0.3 # 垂直翻转
fliplr: 0.5 # 水平翻转
二、模型训练流程
2.1 环境配置要求
- 硬件:推荐NVIDIA GPU(V100/A100效果最佳)
- 软件:
conda create -n yolov5 python=3.8
conda activate yolov5
pip install torch torchvision torchaudio
pip install -r requirements.txt
2.2 模型选择指南
根据任务需求选择预训练模型:
| 模型 | 参数量 | 速度(FPS) | 适用场景 |
|——————|————|—————-|————————————|
| Yolov5s | 7.3M | 140 | 嵌入式设备/实时检测 |
| Yolov5m | 21.2M | 80 | 通用目标检测 |
| Yolov5l | 46.5M | 60 | 高精度需求场景 |
| Yolov5x | 86.7M | 40 | 复杂背景/小目标检测 |
2.3 训练命令示例
python train.py --img 640 --batch 16 --epochs 100 \
--data custom.yaml --weights yolov5s.pt \
--name custom_model --cache
关键参数说明:
--img
:输入图像尺寸(建议640或1280)--batch
:批处理大小(根据GPU内存调整)--epochs
:训练轮次(通常50-300轮)--weights
:预训练模型路径--cache
:加速数据加载
三、模型测试与评估
3.1 测试命令示例
python val.py --data custom.yaml --weights runs/train/exp/weights/best.pt \
--img 640 --task val --half
3.2 关键评估指标
3.3 可视化评估工具
使用plots.py
生成评估报告:
python utils/plots.py --results runs/val/exp --task metrics
生成内容包含:
- PR曲线(Precision-Recall Curve)
- 混淆矩阵(Confusion Matrix)
- F1-score变化曲线
- 损失函数变化曲线
四、模型调优策略
4.1 超参数优化方案
学习率调整:
- 初始学习率建议:0.01(Yolov5s)/0.001(Yolov5x)
- 使用
--lr0
参数设置,配合--lrf
设置学习率衰减系数 - 推荐使用CosineAnnealingLR调度器
锚框优化:
from utils.general import kmean_anchors
anchors = kmean_anchors(path='custom_dataset/labels/train/', n=9, img_size=640)
将生成的锚框写入
data.yaml
或模型配置文件损失函数权重调整:
在models/yolov5s.yaml
中修改:loss:
obj: 1.0 # 目标存在损失权重
cls: 0.5 # 分类损失权重
box: 0.5 # 边界框回归损失权重
4.2 模型轻量化技术
通道剪枝:
python prune.py --weights yolov5s.pt --img 640 --percent 0.3
--percent
参数控制剪枝比例(建议0.2-0.5)知识蒸馏:
# 在train.py中添加教师模型指导
teacher_model = torch.load('teacher.pt')['model'].float().eval()
criterion = KnowledgeDistillationLoss(teacher_model)
量化技术:
python export.py --weights yolov5s.pt --include torchscript --int8
4.3 常见问题解决方案
过拟合问题:
- 增加数据增强强度
- 添加Dropout层(在
models/yolov5s.yaml
中修改) - 使用早停法(
--patience 20
)
小目标检测差:
- 增大输入尺寸(
--img 1280
) - 修改锚框尺寸
- 增加高分辨率特征层
- 增大输入尺寸(
类别不平衡:
- 在
data.yaml
中设置类别权重:class_weights: [1.0, 2.0, 1.5, 0.8, 1.2]
- 使用Focal Loss替代标准交叉熵
- 在
五、部署优化建议
5.1 模型导出格式
python export.py --weights yolov5s.pt --include onnx coreml tflite
支持格式:
- ONNX:跨平台部署
- TensorRT:NVIDIA GPU加速
- CoreML:苹果设备部署
- TFLite:安卓设备部署
5.2 推理优化技巧
TensorRT加速:
trtexec --onnx=yolov5s.onnx --saveEngine=yolov5s.engine --fp16
可获得3-5倍加速
动态输入处理:
在导出时添加--dynamic
参数支持可变输入尺寸多线程优化:
model = torch.jit.load('yolov5s.pt')
model.to('cuda')
batch_size = 16
data = torch.randn(batch_size, 3, 640, 640).to('cuda')
with torch.no_grad():
for _ in range(100):
_ = model(data)
六、完整案例演示
6.1 工业缺陷检测案例
- 数据集:5000张金属表面缺陷图片,3类缺陷
训练配置:
# custom_industrial.yaml
train: ../industrial_dataset/images/train
val: ../industrial_dataset/images/val
nc: 3
names: ['scratch', 'hole', 'crack']
augment:
mosaic: 0.7
hsv_h: 0.02
flipud: 0.4
- 训练结果:
- mAP@0.5: 0.92
- 推理速度:85FPS(Tesla T4)
6.2 交通标志识别案例
- 数据集:20000张道路图片,50类交通标志
- 优化策略:
- 使用Yolov5x模型
- 锚框尺寸优化为[10,13,16,30,33,23,30,61,62,45,59,119]
- 添加CutMix数据增强
- 测试指标:
- mAP@0.5: 0.96
- 召回率:0.94
七、进阶资源推荐
论文研读:
- Yolov5原始论文《YOLOv5: Real-time Object Detection》
- 改进论文《YOLOv5+: Enhanced YOLO for Industrial Applications》
开源项目:
- Ultralytics/yolov5官方仓库
- MMDetection中的Yolov5实现
工具链:
- Roboflow:数据标注与管理平台
- Comet.ml:实验跟踪与可视化
- Weights & Biases:模型训练监控
通过本文介绍的完整流程,开发者可以系统掌握Yolov5自定义训练的核心技术,从数据准备到模型部署形成完整闭环。实际项目中建议采用渐进式优化策略:先保证基础模型收敛,再逐步调整超参数,最后进行模型压缩与加速。对于企业级应用,建议建立自动化训练流水线,结合持续集成(CI)系统实现模型版本管理。
发表评论
登录后可评论,请前往 登录 或 注册