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

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

本项目利用 YOLO11 框架解决无人机航拍场景下的小目标检测难题。基于 VisDrone 2019 数据集训练模型,支持行人、车辆等 10 类目标识别。配套开发 PyQt6 桌面应用,实现图片、视频及摄像头的实时检测与结果可视化。重点优化了图像尺寸与多尺度训练策略,提升小目标精度,提供完整的工程化落地方案。

PentesterX发布于 2026/4/10更新于 2026/7/2141 浏览
YOLO11 驱动的无人机航拍小目标检测系统实战

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

针对无人机航拍场景下小目标密集、尺度变化大的痛点,本项目基于 Ultralytics YOLO11 框架,在 VisDrone 2019 数据集上完成了模型训练与优化,并配套开发了 PyQt6 桌面应用。支持图片、视频及摄像头的实时检测,同时提供完整的训练指标可视化功能。

项目背景

航拍图像中目标往往占据像素极少,且存在严重遮挡和多尺度混合问题,传统算法效果有限。我们采用 YOLO11 系列模型,结合 VisDrone 数据集,实现了对行人、车辆等 10 类交通相关目标的高效检测。这套方案不仅包含训练脚本,还封装了可直接使用的桌面端工具,方便日常验证与部署。

数据集准备

数据概况

使用 VisDrone 2019-DET 数据集,这是面向无人机视角的大规模基准数据集。主要划分如下:

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

总标注框超过 260 万个,涵盖城市、乡村等多种环境。值得注意的是,大量目标归一化后宽度或高度小于 2%,这对分辨率提出了更高要求。

类别定义

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

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

目录结构

建议按以下结构组织文件,确保路径配置正确:

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. 结果保存在 runs/train/<实验名称>/ 目录下。

命令行示例

这里直接给出常用的命令组合,大家可以根据显存情况调整:

# 默认配置训练
python train_yolo11.py 

# 指定模型大小(m 版本平衡速度与精度)
python train_yolo11.py --model yolo11m 

# 指定训练轮数(VisDrone 收敛较慢,建议 200+)
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*_labels.jpg / val_batch*_pred.jpg:分别展示训练输入、验证标签和预测结果的可视化对比。

评估指标曲线

重点关注以下文件来定位问题:

  • confusion_matrix_normalized.png:混淆矩阵,查看哪些类别容易混淆。
  • P_curve.png / R_curve.png / F1_curve.png:精确率、召回率、F1 分数随置信度的变化。
  • PR_curve.png:精确率 - 召回率曲线,综合评估模型性能。

CSV 字段说明

results.csv 中的关键字段包括 epoch, time, train/box_loss, metrics/mAP50(B), metrics/mAP50-95(B) 等,可用于后续绘图分析。

桌面应用功能

为了便于非代码人员使用,我们开发了基于 PyQt6 的桌面应用「无人机航拍小目标检测系统」。

核心模块

模块功能说明
图片识别支持 JPG/PNG/BMP,拖拽导入,导出检测结果图片与 CSV
视频识别支持 MP4/AVI/MOV,逐帧检测并显示进度
摄像头识别实时调用本地摄像头进行目标检测
检测历史查看所有历史记录,支持筛选与导出
模型管理管理模型文件路径,调整置信度、IoU 阈值等参数
指标展示展示训练过程的可视化指标

启动与配置

  • 入口:detection_app/main.py
  • 默认账号:admin / admin123
  • 逻辑实现:通过 utils/detector.py 中的 Worker 类调用 Ultralytics YOLO 进行推理。
  • 配置文件:config.json 存储模型路径与检测参数,data/users.json 存储用户信息。

技术栈

类别技术
GUI 框架PyQt6
深度学习框架Ultralytics (YOLO11)
检测模型YOLO11s
后端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
│   ├── VisDrone2019-DET-train/
│   └── ...
├── 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
│       ├── weights/
│       └── ...
└── 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}
}

目录

  1. YOLO11 驱动的无人机航拍小目标检测系统实战
  2. 项目背景
  3. 数据集准备
  4. 数据概况
  5. 类别定义
  6. 目录结构
  7. 训练实战
  8. 脚本与模式
  9. 基本流程
  10. 命令行示例
  11. 默认配置训练
  12. 指定模型大小(m 版本平衡速度与精度)
  13. 指定训练轮数(VisDrone 收敛较慢,建议 200+)
  14. 提升小目标检测能力,增大分辨率
  15. 开启多尺度训练,增强泛化性
  16. 验证模型
  17. 推理预测
  18. 关键参数建议
  19. 训练参数详解
  20. 核心配置
  21. 优化策略
  22. 检测阈值
  23. 可视化分析
  24. 训练过程图表
  25. 评估指标曲线
  26. CSV 字段说明
  27. 桌面应用功能
  28. 核心模块
  29. 启动与配置
  30. 技术栈
  31. 依赖包
  32. 项目结构概览
  33. 参考文献
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 分治算法实战:归并排序与数组逆序对详解
  • OpenClaw 配置飞书机器人与 Kimi2.5 接入指南
  • OpenClaw 配置飞书机器人与 Kimi 2.5 集成
  • Ubuntu Edgy Eft 完整软件源列表配置指南
  • Llama Factory 一键生成可部署 API 服务
  • C++ 类中何时使用静态变量:核心场景与初始化规则
  • 量化、算子融合、内存映射:C 语言实现 AI 推理的三板斧
  • Python Pandas 库核心用法实战指南
  • 英伟达 GTC 2026 发布新推理芯片与 Rubin 架构,开启 AI 智能体时代
  • 网络安全入门指南:岗位、技术方向与学习路线
  • 前端三剑客:HTML、CSS 与 JavaScript 的关系解析
  • AI 原生架构:鸿蒙 App 的下一代形态
  • Android 项目开发整体架构设计与演进
  • 2025年12月GESP C++五级真题:相等序列
  • Visual C++ 运行库安装与 DLL 缺失问题排查指南
  • 隆中对与 AI 战略:天下三分与算法布局
  • Android 开发者成长路径与技术进阶指南
  • 内网穿透工具 Ngrok 与 Natapp 使用及微信回调配置指南
  • MISRA-C++实战:嵌入式开发中的安全编码与合规实践
  • Streamlit 实战指南:用 Python 快速构建交互式 Web 应用

相关免费在线工具

  • 加密/解密文本

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