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

YOLO11 驱动的无人机航拍小目标检测系统实战

YOLO11 结合 VisDrone 数据集实现无人机航拍小目标检测,配套 PyQt6 桌面应用支持图片、视频及摄像头实时推理。通过提升输入分辨率至 1280 并开启多尺度训练优化小目标精度,提供完整训练参数配置与可视化分析工具,覆盖从数据标注到模型部署的全流程。

Eee_123发布于 2026/3/21更新于 2026/10/782 浏览
YOLO11 驱动的无人机航拍小目标检测系统实战

项目背景与概述

无人机航拍图像通常存在目标尺度小、密集分布及多尺度混合等特点,传统检测算法往往难以取得理想效果。本项目基于 Ultralytics YOLO11 框架,在 VisDrone 2019 数据集上进行训练与优化,实现了对行人、车辆等 10 类交通相关目标的高效检测。此外,我们还配套开发了基于 PyQt6 的桌面应用,支持图片、视频及摄像头的实时检测与训练指标可视化,便于模型验证与日常使用。

数据集准备

数据概况

我们选用 VisDrone 2019-DET 数据集,该数据集由天津大学机器学习与数据挖掘实验室 AISKYEYE 团队发布,是面向无人机视角目标检测的大规模基准数据集。其包含超过 260 万个边界框,涵盖 288 个视频片段和 10,209 张静态图像,格式均为 JPEG。

子集图像数量说明
训练集 (train)6,471 张用于模型训练
验证集 (val)548 张用于超参数调优与模型选择
测试集 (test-dev)1,610 张含标注,可进行论文实验与结果发布

目标类别

数据集预定义了 10 个类别,涵盖了常见的交通参与者:

类别 ID英文名称中文名称
0pedestrian行人
1people人群
2bicycle自行车
3car小汽车
4van面包车
5truck卡车
6tricycle三轮车
7awning-tricycle带篷三轮车
8bus公交车
9motor摩托车

数据特点

  • 地理位置:覆盖中国 14 个不同城市,场景跨度大。
  • 小目标特性:航拍高度较高,大量目标归一化后宽度或高度小于 2%。
  • 密集分布:交通路口、人行道等场景中目标密集,遮挡严重。
  • 多尺度混合:同一张图像中存在近大远小现象。

目录结构

dataset_visdrone/
├── data.yaml                 # YOLO 数据集配置文件
├── data_local.yaml           # 自动生成,含本机绝对路径
├── 数据集介绍.md             # 数据集说明文档
├── VisDrone2019-DET-train/   # 训练集
│   ├── images/
│   └── labels/
├── VisDrone2019-DET-val/     # 验证集
│   ├── images/
│   └── labels/
└── VisDrone2019-DET-test-dev/ # 测试集
    ├── images/
    └── labels/

标注格式

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

训练流程

脚本说明

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

  • train:训练模式(默认)
  • val:验证模式,需指定权重路径
  • predict:推理模式,需指定权重与输入路径

基本步骤

  1. 检查 dataset_visdrone/data.yaml 是否存在。
  2. 调用 fix_data_yaml() 自动生成 data_local.yaml(含本机绝对路径),避免跨设备路径错误。
  3. 加载 YOLO 预训练模型。
  4. 调用 Ultralytics 训练流程进行训练。
  5. 结果保存在 runs/train/<实验名称>/ 或 --project 指定目录。

命令示例

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

关键参数建议

  • 图像尺寸:建议 ≥ 640,推荐 1280。小目标需要更高的分辨率来保留细节。
  • Batch Size:建议 16–32,显存不足时适当降低。
  • Epochs:建议 200–300,VisDrone 数据集收敛相对较慢。
  • 数据增强:默认开启 mosaic,最后 10 个 epoch 关闭以稳定收敛;可使用 --multi_scale 提升小目标性能。

训练参数详解

主要配置

参数默认值说明
--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 数据增强概率

优化策略

  • 优化器:SGD
  • 损失权重:box=7.5, cls=0.5, dfl=1.5
  • 数据增强:mosaic=1.0, randaugment, erasing=0.4, close_mosaic=10

检测参数(应用配置)

参数默认值说明
conf_threshold0.25置信度阈值
iou_threshold0.70NMS IoU 阈值
max_det300单张图像最大检测数量

可视化分析

训练完成后,Ultralytics 会在实验目录下生成一系列可视化文件,帮助我们分析模型表现。

训练过程图表

  • results.csv:记录每个 epoch 的损失与指标(训练/验证 loss、mAP、精确率、召回率等)。
  • results.png:训练曲线概览,包含损失、mAP、学习率等随 epoch 变化趋势。
  • train_batch*.jpg:展示数据增强后的输入图像与标签。
  • val_batch*_pred.jpg:验证 batch 的预测结果可视化。

评估指标曲线

  • confusion_matrix_normalized.png:归一化混淆矩阵,展示各类别的预测与真实标签对应关系。
  • PR_curve.png:精确率–召回率曲线。
  • P_curve.png / R_curve.png / F1_curve.png:分别展示精确率、召回率、F1 分数随置信度阈值的变化。

results.csv 字段说明

主要包含 epoch、time、train/box_loss、metrics/mAP50(B)、metrics/mAP50-95(B)、val/box_loss、lr/pg0 等关键列,用于量化模型收敛情况。

桌面应用功能

本项目提供基于 PyQt6 的桌面应用 「无人机航拍小目标检测系统」,将训练好的模型封装为易用的工具。

核心模块

  • 图片识别:支持 JPG/PNG/BMP 等格式,拖拽导入即可检测,支持导出结果图片与 CSV。
  • 视频识别:支持 MP4/AVI/MOV 等格式,逐帧检测并显示进度。
  • 摄像头识别:实时调用本地摄像头进行目标检测。
  • 检测历史:查看所有历史检测记录,支持筛选与导出。
  • 模型管理:管理检测模型文件路径,调整置信度、IoU 阈值等检测参数,验证模型加载。
  • 指标展示:展示模型训练过程的各项可视化指标,包括训练曲线、指标汇总、可视化图表。

启动与配置

  • 入口:detection_app/main.py,启动后进入登录窗口。
  • 默认账号:admin / admin123
  • 检测逻辑:通过 utils/detector.py 中的 ImageDetectWorker、VideoDetectWorker、CameraDetectWorker 调用 Ultralytics YOLO 进行推理。
  • 配置文件: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

依赖包

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/
└── 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

目录

  1. 项目背景与概述
  2. 数据集准备
  3. 数据概况
  4. 目标类别
  5. 数据特点
  6. 目录结构
  7. 标注格式
  8. 训练流程
  9. 脚本说明
  10. 基本步骤
  11. 命令示例
  12. 关键参数建议
  13. 训练参数详解
  14. 主要配置
  15. 优化策略
  16. 检测参数(应用配置)
  17. 可视化分析
  18. 训练过程图表
  19. 评估指标曲线
  20. results.csv 字段说明
  21. 桌面应用功能
  22. 核心模块
  23. 启动与配置
  24. 技术栈
  25. 依赖包
  26. 项目结构
  27. 参考资料

更多推荐文章

查看全部
  • 论文降重与 AIGC 检测双重达标的技术方案
  • ToDesk 顺网云 海马云部署 DeepSeek 大模型对比评测
  • AgentScope-Java 框架特性及快速入门
  • RAG 技术全面解析:五步流程与十二优化策略详解
  • 腾讯混元大模型业务落地实践与技术方案
  • Android Kotlin 协程异常处理流程与实战方案
  • 基于FPGA的五级CIC滤波器Verilog设计与实现
  • 用原生 JavaScript 和 Canvas 实现网页截图:从底层原理到下载
  • STL vector 常用接口使用及底层原理与实现
  • IntelliJ IDEA 集成 GitHub Copilot 使用指南:从安装到实战
  • MySQL 索引原理:B+ 树演进与操作实战
  • YOLO11 基于 DroneVehicle 数据集的无人机车辆目标检测
  • SpringBoot 应用实现代码热更新机制
  • 昇腾 NPU 部署 Llama 大模型实战指南
  • Qwen2.5-32B-Instruct 本地部署指南:快速搭建 AI 写作助手
  • C++ 类与对象进阶:默认成员函数详解
  • 微搭低代码:手机号登录与RBAC路由控制
  • AI Agent 开发进阶:架构、规划、记忆与工具编排
  • C++11 function 与 bind 包装器详解
  • MySQL 配置与基础操作

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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