TPH-YOLOv5实战教程:如何在自己的无人机数据集上训练模型

TPH-YOLOv5实战教程:如何在自己的无人机数据集上训练模型

【免费下载链接】tph-yolov5项目地址: https://gitcode.com/gh_mirrors/tp/tph-yolov5

无人机目标检测技术在现代计算机视觉领域扮演着重要角色,而TPH-YOLOv5正是针对无人机视角优化的先进目标检测框架。本文将为您提供完整的TPH-YOLOv5实战教程,帮助您在自己的无人机数据集上成功训练高性能检测模型。😊

为什么选择TPH-YOLOv5进行无人机目标检测?

TPH-YOLOv5是基于Transformer预测头的改进版YOLOv5,专门为无人机拍摄场景优化。相比传统目标检测模型,它在处理小目标、密集目标和复杂背景方面表现更出色。在VisDrone Challenge 2021中,TPH-YOLOv5获得第四名的优异成绩,与第一名模型效果相当!

环境配置与项目准备

第一步:克隆项目仓库

git clone https://gitcode.com/gh_mirrors/tp/tph-yolov5 cd tph-yolov5 pip install -r requirements.txt

第二步:了解项目结构

  • 配置文件:data/VisDrone.yaml - 数据集配置
  • 模型架构:models/yolov5l-xs-tph.yaml - TPH-YOLOv5模型
  • 训练脚本:train.py - 主要训练脚本
  • 标签转换:VisDrone2YOLO_lable.py - 数据格式转换

准备您的无人机数据集

数据集格式要求

TPH-YOLOv5支持YOLO格式的数据集。如果您的数据是VisDrone格式,可以使用内置转换脚本:

python VisDrone2YOLO_lable.py

创建自定义数据集配置文件

data/目录下创建您的数据集配置文件,例如data/my_drone.yaml

# 数据集配置 path: ../datasets/my_drone_dataset train: images/train val: images/val test: images/test # 类别数量与名称 nc: 5 # 根据您的类别数量修改 names: ['car', 'person', 'bicycle', 'motorcycle', 'bus']

一键训练TPH-YOLOv5模型

基础训练命令

使用以下命令开始训练您的无人机检测模型:

python train.py --img 1536 --adam --batch 4 --epochs 80 \ --data ./data/my_drone.yaml \ --weights yolov5l.pt \ --hy data/hyps/hyp.VisDrone.yaml \ --cfg models/yolov5l-xs-tph.yaml \ --name my_drone_model

参数详解

  • --img 1536:输入图像尺寸(适合无人机高分辨率图像)
  • --adam:使用Adam优化器
  • --batch 4:批次大小(根据GPU显存调整)
  • --epochs 80:训练轮数
  • --cfg models/yolov5l-xs-tph.yaml:使用TPH-YOLOv5模型架构

高级训练技巧与优化

1. 数据增强策略

TPH-YOLOv5内置了针对无人机场景的数据增强:

  • Mosaic增强:提升小目标检测能力
  • MixUp增强:改善模型泛化性能
  • 随机旋转与缩放:适应无人机视角变化

2. 超参数调优

修改data/hyps/hyp.VisDrone.yaml中的超参数:

lr0: 0.01 # 初始学习率 lrf: 0.2 # 最终学习率倍数 momentum: 0.937 # 动量 weight_decay: 0.0005 # 权重衰减

3. 多GPU训练加速

python -m torch.distributed.launch --nproc_per_node 4 train.py \ --img 1536 --batch 16 --epochs 100 \ --data ./data/my_drone.yaml \ --weights yolov5l.pt \ --cfg models/yolov5l-xs-tph.yaml

模型评估与结果分析

验证模型性能

训练完成后,使用验证集评估模型:

python val.py --weights ./runs/train/my_drone_model/weights/best.pt \ --img 1996 \ --data ./data/my_drone.yaml \ --task val

关键性能指标

  • mAP@0.5:IoU阈值为0.5时的平均精度
  • mAP@0.5:0.95:IoU阈值从0.5到0.95的平均精度
  • Precision:精确率
  • Recall:召回率

模型部署与应用

导出为ONNX格式

python export.py --weights ./runs/train/my_drone_model/weights/best.pt \ --include onnx \ --img 1536

实时推理示例

import torch # 加载训练好的模型 model = torch.hub.load('./', 'custom', path='./runs/train/my_drone_model/weights/best.pt', source='local') # 进行推理 results = model('your_drone_image.jpg') results.show() # 显示检测结果

常见问题与解决方案

问题1:显存不足

解决方案:减小批次大小或图像尺寸

python train.py --img 1024 --batch 2 ...

问题2:训练不收敛

解决方案:调整学习率或使用预训练权重

python train.py --weights yolov5l.pt --lr0 0.001 ...

问题3:小目标检测效果差

解决方案:增加Mosaic数据增强,使用更高分辨率输入

性能对比与选择建议

TPH-YOLOv5 vs TPH-YOLOv5++

  • TPH-YOLOv5:原始版本,检测精度高
  • TPH-YOLOv5++:改进版本,推理效率更高,计算成本更低

最佳实践总结

  1. 数据准备是关键:确保标注质量,特别是小目标标注
  2. 从预训练模型开始:使用yolov5l.pt作为起点
  3. 监控训练过程:关注损失曲线和验证指标
  4. 适当的数据增强:针对无人机场景选择合适的增强策略
  5. 模型集成提升效果:使用wbf.py进行多模型融合

扩展阅读与资源

  • 官方论文:TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-Captured Scenarios
  • 改进版本:TPH-YOLOv5++: Boosting Object Detection on Drone-Captured Scenarios with Cross-Layer Asymmetric Transformer

通过本教程,您已经掌握了在自定义无人机数据集上训练TPH-YOLOv5模型的完整流程。无论您是无人机应用开发者还是计算机视觉研究者,TPH-YOLOv5都能为您提供强大的目标检测能力。开始您的无人机目标检测之旅吧!🚀

提示:训练过程中遇到任何问题,可以参考项目中的示例配置和脚本进行调整。祝您训练顺利!

【免费下载链接】tph-yolov5项目地址: https://gitcode.com/gh_mirrors/tp/tph-yolov5

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考