基于 YOLO11 的无人机航拍小目标检测实战
做无人机项目时,最头疼的往往是小目标检测。航拍图像里目标尺度小、密集分布,传统算法很难搞。这次我们直接上手 Ultralytics YOLO11 框架,配合 VisDrone 2019 数据集训练,实现了对行人、车辆等 10 类交通相关目标的高效检测,还顺手做了个 PyQt6 桌面应用,方便验证和日常使用。
一、数据集准备
1. 数据集简介
项目用的是 VisDrone 2019-DET 数据集,由天津大学 AISKYEYE 团队发布,是 ICCV 2019 "Vision Meets Drone" 挑战赛的基准数据。专门针对无人机视角的目标检测,规模大且场景复杂。
2. 数据规模与结构
| 子集 | 图像数量 | 说明 |
|---|---|---|
| 训练集 (train) | 6,471 张 | 用于模型训练 |
| 验证集 (val) | 548 张 | 用于超参数调优与模型选择 |
| 测试集 (test-dev) | 1,610 张 | 含标注,可进行论文实验与结果发布 |
总标注框超过 260 万个,来源包含 288 个视频片段 + 10,209 张静态图像,格式均为 JPEG。
3. 目标类别
数据集定义了 10 个预定义类别:
| 类别 ID | 英文名称 | 中文名称 |
|---|---|---|
| 0 | pedestrian | 行人 |
| 1 | people | 人群 |
| 2 | bicycle | 自行车 |
| 3 | car | 小汽车 |
| 4 | van | 面包车 |
| 5 | truck | 卡车 |
| 6 | tricycle | 三轮车 |
| 7 | awning-tricycle | 带篷三轮车 |
| 8 | bus | 公交车 |
| 9 | motor | 摩托车 |
4. 难点分析
- 地理位置:覆盖中国 14 个不同城市,环境差异大。
- 小目标特性:航拍高度高,目标像素占比少,大量目标归一化后宽高小于 2%。
- 密集分布:路口、人行道遮挡严重。
- 多尺度混合:同一张图有近大远小的情况。
5. 目录与标注
dataset_visdrone/
├── data.yaml # YOLO 数据集配置文件
├── data_local.yaml # 自动生成,含本机绝对路径
├── 数据集介绍.md
└── VisDrone2019-DET-train/
├── images/
└── labels/


