logo

Yolov5自定义数据集实战:从训练到调优的全流程指南

作者:公子世无双2025.09.18 18:05浏览量:0

简介:本文详细介绍Yolov5自定义图片训练、测试及模型调优的全流程,涵盖数据准备、训练配置、测试评估及优化策略,适合开发者快速上手并提升模型性能。

Yolov5自定义图片训练测试及模型调优(详细过程)

一、引言

Yolov5作为目标检测领域的经典模型,凭借其高效性和灵活性被广泛应用于工业检测、自动驾驶、安防监控等场景。然而,直接使用预训练模型往往无法满足特定业务需求,因此需要通过自定义图片训练和调优来提升模型性能。本文将详细介绍Yolov5自定义图片训练、测试及模型调优的全流程,帮助开发者快速上手并优化模型效果。

二、数据准备与标注

1. 数据收集与清洗

  • 数据来源:从实际业务场景中收集图片,确保覆盖目标物体的不同角度、光照条件、遮挡情况等。例如,在工业缺陷检测中,需包含正常产品、轻微缺陷产品和严重缺陷产品的图片。
  • 数据清洗:删除重复、模糊或无关的图片,确保数据质量。使用工具如OpenCVPillow进行初步筛选。

2. 数据标注

  • 标注工具:推荐使用LabelImgCVATLabelme等工具进行标注。标注格式需与Yolov5兼容,通常为.txt文件,每行格式为class_id x_center y_center width height(归一化到[0,1])。
  • 标注规范:确保标注框紧贴目标物体,避免漏标或误标。对于复杂场景,可分多轮标注并交叉验证。

3. 数据集划分

  • 划分比例:通常按7:2:1的比例划分为训练集、验证集和测试集。使用sklearntrain_test_split或手动划分。
  • 目录结构
    1. dataset/
    2. ├── images/
    3. ├── train/
    4. ├── val/
    5. └── test/
    6. └── labels/
    7. ├── train/
    8. ├── val/
    9. └── test/

三、训练配置与启动

1. 环境准备

  • 依赖安装
    1. pip install torch torchvision opencv-python tqdm matplotlib
    2. git clone https://github.com/ultralytics/yolov5.git
    3. cd yolov5
    4. pip install -r requirements.txt

2. 配置文件修改

  • 模型选择:根据需求选择yolov5s.yaml(轻量级)、yolov5m.yaml(平衡)或yolov5l.yaml(高性能)。
  • 数据配置:修改data/custom.yaml,指定数据集路径和类别数:
    1. train: ../dataset/images/train/
    2. val: ../dataset/images/val/
    3. nc: 3 # 类别数
    4. names: ['class1', 'class2', 'class3']

3. 训练启动

  • 命令行训练
    1. 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. 训练监控

  • 日志分析:训练过程中会输出lossmAP等指标,关注val/precisionval/recallval/mAP_0.5
  • 可视化工具:使用TensorBoardW&B实时监控训练曲线。

四、模型测试与评估

1. 测试命令

  1. python val.py --data custom.yaml --weights runs/train/custom_model/weights/best.pt --img 640 --task val
  • 关键指标
    • mAP@0.5:IoU=0.5时的平均精度。
    • mAP@0.5:0.95:IoU从0.5到0.95的平均精度(更严格)。
    • precisionrecall:查准率和查全率。

2. 结果分析

  • 可视化检测:使用detect.py测试单张图片:
    1. 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中调整mosaichsv_hhsv_s等参数,提升模型鲁棒性。
  • 类别平衡:若数据分布不均,可使用过采样(Oversampling)或加权损失函数。

2. 模型结构调整

  • 深度与宽度:修改yolov5s.yaml中的depth_multiplewidth_multiple(如0.330.5)以增加模型容量。
  • 注意力机制:在models/yolo.py中引入CBAMSE模块,提升特征提取能力。

3. 超参数调优

  • 学习率:使用--lr0 0.01 --lrf 0.01(初始学习率和最终学习率)。
  • 优化器:尝试AdamWSGD+Momentum
  • 早停机制:在train.py中设置--patience 50,若验证损失连续50轮不下降则停止训练。

4. 知识蒸馏

  • 教师-学生模型:使用大模型(如Yolov5l)指导小模型(Yolov5s)训练,提升轻量级模型性能。

六、部署与优化

1. 模型导出

  1. python export.py --weights runs/train/custom_model/weights/best.pt --include torchscript onnx engine
  • 格式选择
    • TorchScriptPyTorch原生部署。
    • ONNX:跨平台兼容(如TensorRT、OpenVINO)。
    • TensorRT:NVIDIA GPU加速。

2. 性能优化

  • 量化:使用--int8参数进行8位整数量化,减少模型体积和推理时间。
  • 剪枝:通过--prune 0.3移除30%的低权重通道。

七、总结与建议

  1. 数据质量优先:标注精度和多样性直接影响模型性能。
  2. 渐进式调优:先调整数据增强,再修改模型结构,最后优化超参数。
  3. 业务对齐:根据实际场景(如实时性要求)选择模型大小和部署方案。
  4. 持续迭代:定期收集新数据并微调模型,适应环境变化。

通过以上流程,开发者可以高效完成Yolov5的自定义训练和调优,满足不同业务场景的需求。

相关文章推荐

发表评论