跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于深度学习的无人机航拍小目标检测算法研究

本项目针对无人机航拍场景下的小目标检测问题,采用 Ultralytics YOLO11 框架在 VisDrone 2019 数据集上进行训练优化。项目包含完整的检测系统桌面应用,支持图片、视频及摄像头实时检测与指标可视化。内容涵盖数据集介绍、训练流程、参数配置、结果分析及系统功能模块,技术栈涉及 Python、PyQt6、PyTorch 等,旨在实现行人、车辆等交通目标的高效识别。

月亮邮递员发布于 2026/4/6更新于 2026/7/2148 浏览
基于深度学习的无人机航拍小目标检测算法研究

本项目针对无人机航拍场景下的小目标检测问题,基于 YOLO11 系列模型,在 VisDrone 2019 数据集上进行训练与优化,并提供了完整的检测系统桌面应用,支持图片、视频、摄像头的实时检测与训练指标可视化。


一、项目概述

无人机航拍图像具有目标尺度小、密集分布、多尺度混合等特点,传统检测算法难以取得理想效果。本项目采用 Ultralytics YOLO11 框架,结合 VisDrone 数据集进行训练,实现了对行人、车辆等 10 类交通相关目标的高效检测,并配套开发了基于 PyQt6 的桌面应用,便于模型验证与日常使用。


二、数据集

2.1 数据集简介

本项目使用 VisDrone 2019-DET 数据集,由天津大学机器学习与数据挖掘实验室 AISKYEYE 团队发布,对应 ICCV 2019 "Vision Meets Drone" 挑战赛,是面向无人机视角目标检测的大规模基准数据集。

2.2 数据规模
子集图像数量说明
训练集 (train)6,471 张用于模型训练
验证集 (val)548 张用于超参数调优与模型选择
测试集 (test-dev)1,610 张含标注,可进行论文实验与结果发布
  • 总标注框数量:超过 260 万个边界框
  • 图像来源:288 个视频片段 + 10,209 张静态图像
  • 图像格式:JPEG (.jpg)
2.3 目标类别

数据集包含 10 个预定义类别:

类别 ID英文名称中文名称
0pedestrian行人
1people人群
2bicycle自行车
3car小汽车
4van面包车
5truck卡车
6tricycle三轮车
7awning-tricycle带篷三轮车
8bus公交车
9motor摩托车
2.4 数据集特点
  • 地理位置:中国 14 个不同城市,相距数千公里
  • 场景类型:城市、乡村等多种环境
  • 小目标特性:无人机航拍高度较高,目标在图像中占据像素较少,大量目标归一化后宽度或高度小于 2%
  • 密集分布:交通路口、人行道等场景中目标密集,遮挡严重
  • 多尺度混合:同一张图像中存在近大远小现象
  • 2.5 目录结构
    dataset_visdrone/
    ├── data.yaml # YOLO 数据集配置文件
    ├── data_local.yaml # 自动生成,含本机绝对路径
    ├── 数据集介绍.md # 数据集说明文档
    ├── VisDrone2019-DET-train/
    │   ├── images/ # 训练图像
    │   └── labels/ # YOLO 格式标签 (.txt)
    ├── VisDrone2019-DET-val/
    │   ├── images/
    │   └── labels/
    └── VisDrone2019-DET-test-dev/
        ├── images/
        └── labels/
    
    2.6 标注格式

    采用 YOLO 标准格式,每行一个目标:<class_id> <x_center> <y_center> <width> <height>,坐标均为归一化值 [0, 1]。


    三、训练过程

    3.1 训练脚本

    训练脚本为项目根目录下的 train_yolo11.py,支持三种运行模式:

    • train:训练模式(默认)
    • val:验证模式,需指定权重路径
    • predict:推理模式,需指定权重与输入路径
    3.2 基本流程
    1. 检查 dataset_visdrone/data.yaml 是否存在
    2. 调用 fix_data_yaml() 自动生成 data_local.yaml(含本机绝对路径)
    3. 加载 YOLO 预训练模型
    4. 调用 Ultralytics 训练流程进行训练
    5. 结果保存在 runs/train/<实验名称>/ 或 --project 指定目录
    3.3 使用示例
    python train_yolo11.py # 默认配置训练
    python train_yolo11.py --model yolo11m # 指定模型大小
    python train_yolo11.py --epochs 200 # 指定训练轮数
    python train_yolo11.py --imgsz 1280 # 更大分辨率(小目标更佳)
    python train_yolo11.py --multi_scale # 开启多尺度训练
    python train_yolo11.py --mode val --weights runs/train/exp/weights/best.pt
    python train_yolo11.py --mode predict --weights runs/train/exp/weights/best.pt --source path/to/image
    
    3.4 训练注意事项
    • 图像尺寸建议 ≥ 640,推荐 1280(小目标分辨率更高)
    • batch 建议 16–32(显存不足时降低)
    • epochs 建议 200–300(VisDrone 收敛较慢)
    • 默认开启 mosaic 数据增强,最后 10 个 epoch 关闭以稳定收敛
    • 可使用 --multi_scale 多尺度训练提升小目标性能

    四、训练参数

    4.1 主要训练参数
    参数默认值说明
    --modelyolo11s模型:yolo11n/s/m/l/x
    --epochs300训练轮数
    --imgsz640输入图像尺寸(小目标建议 1280)
    --batch16批大小
    --lr00.01初始学习率
    --lrf0.01最终学习率比例
    --patience100Early stopping 等待轮数
    --device""GPU 编号或 cpu
    --workers4DataLoader 工作进程数
    --projectruns/train实验保存目录
    --nameyolo11_visdrone实验名称
    --multi_scaleFalse多尺度训练
    --copy_paste0.0Copy-paste 数据增强概率
    4.2 模型与优化器
    • 优化器:SGD
    • 损失权重:box=7.5, cls=0.5, dfl=1.5
    • 数据增强:mosaic=1.0, randaugment, erasing=0.4, close_mosaic=10
    4.3 检测参数(应用配置)
    参数默认值说明
    conf_threshold0.25置信度阈值
    iou_threshold0.70NMS IoU 阈值
    max_det300单张图像最大检测数量

    五、可视化图含义

    训练完成后,Ultralytics 会在实验目录下生成以下可视化文件,用于分析模型表现:

    5.1 训练过程图表
    文件含义
    results.csv每 epoch 的损失与指标(训练/验证 loss、mAP、精确率、召回率等)
    results.png训练曲线概览,包含损失、mAP、学习率等随 epoch 变化
    train_batch*.jpg训练 batch 样本可视化,展示数据增强后的输入图像与标签
    val_batch*_labels.jpg验证 batch 的标签可视化
    val_batch*_pred.jpg验证 batch 的预测结果可视化
    5.2 标签与类别分析
    文件含义
    labels.jpg标签分布图,展示各类别目标在图像中的位置与数量分布
    labels_correlogram.jpg标签关联图,展示类别间相关性
    5.3 评估指标曲线
    文件含义
    confusion_matrix_normalized.png归一化混淆矩阵,展示各类别的预测与真实标签对应关系
    P_curve.png精确率–置信度曲线,随置信度阈值变化的精确率
    R_curve.png召回率–置信度曲线,随置信度阈值变化的召回率
    F1_curve.pngF1 分数–置信度曲线
    PR_curve.png精确率–召回率曲线(PR 曲线)
    5.4 results.csv 主要列说明

    epoch、time、train/box_loss、train/cls_loss、train/dfl_loss、metrics/precision(B)、metrics/recall(B)、metrics/mAP50(B)、metrics/mAP50-95(B)、val/box_loss、val/cls_loss、val/dfl_loss、lr/pg0、lr/pg1、lr/pg2


    六、系统功能

    本项目提供基于 PyQt6 的桌面应用 「无人机航拍小目标检测系统」,主要功能如下:

    6.1 功能模块
    模块功能说明
    图片识别支持 JPG/PNG/BMP 等格式,上传图片后点击开始检测,支持拖拽导入,可导出检测结果图片与 CSV
    视频识别支持 MP4/AVI/MOV 等格式,加载视频后逐帧检测,显示进度
    摄像头识别实时调用本地摄像头进行目标检测
    检测历史查看所有历史检测记录,支持筛选与导出
    模型管理管理检测模型文件路径,调整置信度、IoU 阈值等检测参数,验证模型加载
    指标展示展示模型训练过程的各项可视化指标,包括训练曲线、指标汇总、可视化图表
    6.2 入口与流程
    • 入口:detection_app/main.py,启动后进入登录窗口
    • 默认账号:admin / admin123
    • 检测流程:通过 utils/detector.py 中的 ImageDetectWorker、VideoDetectWorker、CameraDetectWorker 调用 Ultralytics YOLO 进行推理
    6.3 配置与存储
    • config.json:模型路径、指标目录、检测参数等
    • data/users.json:用户信息
    • data/history.json:检测历史记录

    七、项目技术栈

    类别技术
    GUI 框架PyQt6
    深度学习框架Ultralytics (YOLO11)
    检测模型YOLO11s + EMBSFPN + TADDH + C3K2 + PMSFA(改进模型)
    后端PyTorch (ultralytics)
    图像处理OpenCV, Pillow
    可视化matplotlib, pandas
    数据处理numpy, pandas
    依赖包(detection_app/requirements.txt)
    PyQt6>=6.4.0 ultralytics>=8.0.0 opencv-python>=4.7.0 Pillow>=9.0.0 matplotlib>=3.7.0 numpy>=1.23.0 pandas>=1.5.0
    

    训练脚本还需:pyyaml


    八、项目结构

    c124/
    ├── train_yolo11.py # YOLO11 训练脚本
    ├── README.md # 项目说明文档
    ├── dataset_visdrone/ # 数据集目录
    │   ├── data.yaml # 数据集配置
    │   ├── data_local.yaml # 自动生成(本机路径)
    │   ├── 数据集介绍.md # 数据集说明
    │   ├── VisDrone2019-DET-train/
    │   ├── VisDrone2019-DET-val/
    │   └── VisDrone2019-DET-test-dev/
    ├── detection_app/ # 检测系统应用
    │   ├── main.py # 应用入口
    │   ├── login_window.py # 登录窗口
    │   ├── main_window.py # 主窗口
    │   ├── config.json # 应用配置
    │   ├── requirements.txt # 依赖列表
    │   ├── data/
    │   │   ├── users.json # 用户数据
    │   │   └── history.json # 检测历史
    │   ├── pages/
    │   │   ├── image_page.py # 图片识别页
    │   │   ├── video_page.py # 视频识别页
    │   │   ├── camera_page.py # 摄像头识别页
    │   │   ├── history_page.py # 检测历史页
    │   │   ├── model_page.py # 模型管理页
    │   │   └── metrics_page.py # 指标展示页
    │   └── utils/
    │       ├── detector.py # 检测逻辑
    │       ├── storage.py # 配置与存储
    │       └── styles.py # 界面样式
    ├── 训练文件 1/ # 训练输出示例
    │   └── exp-yolo11s-EMBSFPN-TADDH-C3K2_PMSFA/
    │       ├── args.yaml # 训练参数快照
    │       ├── results.csv # 训练指标
    │       ├── results.png # 训练曲线
    │       ├── weights/
    │       │   ├── best.pt # 最佳权重
    │       │   └── last.pt # 最后一轮权重
    │       └── 其他可视化图表...
    └── runs/ # 训练输出目录(默认)
        └── detect/runs/train/yolo11_visdrone/
    

    九、参考文献

    如在论文中使用 VisDrone 数据集,建议引用:

    @article{zhu2021detection,
      title={Detection and tracking meet drones challenge},
      author={Zhu, Pengfei and Wen, Longyin and Du, Dawei and Bian, Xiao and Fan, Heng and Hu, Qinghua and Ling, Haibin},
      journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
      volume={44},
      number={11},
      pages={7380--7399},
      year={2021},
      publisher={IEEE}
    }
    

    十、相关链接

    • VisDrone 数据集官网:https://aiskyeye.com/
    • VisDrone GitHub:https://github.com/VisDrone/VisDrone-Dataset
    • ICCV 2019 挑战赛:Vision Meets Drone Object Detection in Image Challenge

    目录

    1. 一、项目概述
    2. 二、数据集
    3. 2.1 数据集简介
    4. 2.2 数据规模
    5. 2.3 目标类别
    6. 2.4 数据集特点
    7. 2.5 目录结构
    8. 2.6 标注格式
    9. 三、训练过程
    10. 3.1 训练脚本
    11. 3.2 基本流程
    12. 3.3 使用示例
    13. 3.4 训练注意事项
    14. 四、训练参数
    15. 4.1 主要训练参数
    16. 4.2 模型与优化器
    17. 4.3 检测参数(应用配置)
    18. 五、可视化图含义
    19. 5.1 训练过程图表
    20. 5.2 标签与类别分析
    21. 5.3 评估指标曲线
    22. 5.4 results.csv 主要列说明
    23. 六、系统功能
    24. 6.1 功能模块
    25. 6.2 入口与流程
    26. 6.3 配置与存储
    27. 七、项目技术栈
    28. 依赖包(detection_app/requirements.txt)
    29. 八、项目结构
    30. 九、参考文献
    31. 十、相关链接
    • 免费图片AI生成工具免费生成了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
    • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
    • 100+免费在线小游戏爽一把
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • Naiz AI:从语义到像素,全链路重构视频本地化
    • 基于 Python 的淘宝商品数据爬取与可视化系统
    • Naiz AI:视频本地化与数字孪生技术解析
    • Llama-2-7b 在昇腾 NPU 上的六大核心场景性能基准测试
    • 如何修改 Conda 环境的 Python 版本
    • MATLAB 与 Python 混合编程实战:原理、代码与部署
    • NUS 尤洋教授《实战 AI 大模型》书籍推荐与核心技术解析
    • LeetCode 290. 单词规律:多种解法与性能对比
    • 计算机专业学生成长指南:技能提升与学习路径
    • Spring AI 实战指南:核心接口、消息类型与流式输出详解
    • 基于 Web Unlocker 与 n8n 的自动化资讯采集推送系统
    • 基于 Spring Boot 与 MySQL 的仓库管理系统设计与实现
    • 用两个栈模拟队列:LIFO 到 FIFO 的转换实现与原理分析
    • ES6 核心语法全解析:let 到 Async-Await 实战避坑指南
    • 飞书 OpenClaw 机器人 HTTP 401 认证失败排查与解决
    • Win11 Docker Desktop 部署 CTyunOS 2.0.1 aarch64 容器嵌套实战
    • 如何赋予 LLM 多模态能力(MLLM)
    • MoltBot 集成钉钉 Stream 流式接入配置指南
    • STC 单片机摄像头组别高效搜线算法与帧率优化思路
    • 开源 IPTV 播放器 IPTVnator 功能与使用指南

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • RSA密钥对生成器

      生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

    • Mermaid 预览与可视化编辑

      基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

    • 随机西班牙地址生成器

      随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • curl 转代码

      解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online