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 | 英文名称 | 中文名称 |
|---|---|---|
| 0 | pedestrian | 行人 |
| 1 | people | 人群 |
| 2 | bicycle | 自行车 |
| 3 | car | 小汽车 |
| 4 | van | 面包车 |
| 5 | truck | 卡车 |
| 6 | tricycle | 三轮车 |
| 7 | awning-tricycle | 带篷三轮车 |
| 8 | bus | 公交车 |
| 9 | motor | 摩托车 |
目录结构
建议按以下结构组织文件,确保路径配置正确:
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]。


