Yolov5自定义数据集实战:从训练到调优的全流程指南
2025.09.18 18:05浏览量:0简介:本文详细介绍Yolov5自定义图片训练、测试及模型调优的全流程,涵盖数据准备、训练配置、测试评估及优化策略,适合开发者快速上手并提升模型性能。
Yolov5自定义图片训练测试及模型调优(详细过程)
一、引言
Yolov5作为目标检测领域的经典模型,凭借其高效性和灵活性被广泛应用于工业检测、自动驾驶、安防监控等场景。然而,直接使用预训练模型往往无法满足特定业务需求,因此需要通过自定义图片训练和调优来提升模型性能。本文将详细介绍Yolov5自定义图片训练、测试及模型调优的全流程,帮助开发者快速上手并优化模型效果。
二、数据准备与标注
1. 数据收集与清洗
- 数据来源:从实际业务场景中收集图片,确保覆盖目标物体的不同角度、光照条件、遮挡情况等。例如,在工业缺陷检测中,需包含正常产品、轻微缺陷产品和严重缺陷产品的图片。
- 数据清洗:删除重复、模糊或无关的图片,确保数据质量。使用工具如
OpenCV
或Pillow
进行初步筛选。
2. 数据标注
- 标注工具:推荐使用
LabelImg
、CVAT
或Labelme
等工具进行标注。标注格式需与Yolov5兼容,通常为.txt
文件,每行格式为class_id x_center y_center width height
(归一化到[0,1])。 - 标注规范:确保标注框紧贴目标物体,避免漏标或误标。对于复杂场景,可分多轮标注并交叉验证。
3. 数据集划分
- 划分比例:通常按7
1的比例划分为训练集、验证集和测试集。使用
sklearn
的train_test_split
或手动划分。 - 目录结构:
dataset/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/
├── train/
├── val/
└── test/
三、训练配置与启动
1. 环境准备
- 依赖安装:
pip install torch torchvision opencv-python tqdm matplotlib
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt
2. 配置文件修改
- 模型选择:根据需求选择
yolov5s.yaml
(轻量级)、yolov5m.yaml
(平衡)或yolov5l.yaml
(高性能)。 - 数据配置:修改
data/custom.yaml
,指定数据集路径和类别数:train: ../dataset/images/train/
val: ../dataset/images/val/
nc: 3 # 类别数
names: ['class1', 'class2', 'class3']
3. 训练启动
- 命令行训练:
python train.py --img 640 --batch 16 --epochs 100 --data custom.yaml --cfg yolov5s.yaml --weights yolov5s.pt --name custom_model
--img
:输入图片尺寸(建议640或1280)。--batch
:批大小(根据GPU内存调整)。--epochs
:训练轮数。--weights
:预训练模型路径(可为空,从零训练)。
4. 训练监控
四、模型测试与评估
1. 测试命令
python val.py --data custom.yaml --weights runs/train/custom_model/weights/best.pt --img 640 --task val
2. 结果分析
- 可视化检测:使用
detect.py
测试单张图片:python detect.py --weights runs/train/custom_model/weights/best.pt --source ../dataset/images/test/ --img 640
- 错误案例:分析误检(False Positive)和漏检(False Negative)案例,调整标注或数据分布。
五、模型调优策略
1. 数据层面优化
- 数据增强:在
data/augmentations.py
中调整mosaic
、hsv_h
、hsv_s
等参数,提升模型鲁棒性。 - 类别平衡:若数据分布不均,可使用过采样(Oversampling)或加权损失函数。
2. 模型结构调整
- 深度与宽度:修改
yolov5s.yaml
中的depth_multiple
和width_multiple
(如0.33
→0.5
)以增加模型容量。 - 注意力机制:在
models/yolo.py
中引入CBAM
或SE
模块,提升特征提取能力。
3. 超参数调优
- 学习率:使用
--lr0 0.01 --lrf 0.01
(初始学习率和最终学习率)。 - 优化器:尝试
AdamW
或SGD
+Momentum
。 - 早停机制:在
train.py
中设置--patience 50
,若验证损失连续50轮不下降则停止训练。
4. 知识蒸馏
- 教师-学生模型:使用大模型(如Yolov5l)指导小模型(Yolov5s)训练,提升轻量级模型性能。
六、部署与优化
1. 模型导出
python export.py --weights runs/train/custom_model/weights/best.pt --include torchscript onnx engine
- 格式选择:
TorchScript
:PyTorch原生部署。ONNX
:跨平台兼容(如TensorRT、OpenVINO)。TensorRT
:NVIDIA GPU加速。
2. 性能优化
- 量化:使用
--int8
参数进行8位整数量化,减少模型体积和推理时间。 - 剪枝:通过
--prune 0.3
移除30%的低权重通道。
七、总结与建议
- 数据质量优先:标注精度和多样性直接影响模型性能。
- 渐进式调优:先调整数据增强,再修改模型结构,最后优化超参数。
- 业务对齐:根据实际场景(如实时性要求)选择模型大小和部署方案。
- 持续迭代:定期收集新数据并微调模型,适应环境变化。
通过以上流程,开发者可以高效完成Yolov5的自定义训练和调优,满足不同业务场景的需求。
发表评论
登录后可评论,请前往 登录 或 注册