无人机 RGB+ 红外双模态小目标行人检测系统
数据集概览
本方案基于无人机视角下的 RGB+ 红外(RGBT)对齐行人小目标检测数据集。该数据集专为挑战性极高的低空安防、应急搜救等场景设计,特别适合评估模型在远距离、小尺度及复杂光照(含夜间)条件下的鲁棒性。
核心参数
| 项目 | 内容 |
|---|---|
| 任务类型 | 小目标行人检测(Tiny Person Detection) |
| 采集平台 | 无人机搭载 RGB + 热红外双光相机 |
| 采集高度 | 50 – 80 米 |
| 俯视角 | 45° – 60° 斜向俯拍 |
| 图像分辨率 | 640 × 512 像素(严格对齐) |
| 数据规模 | 6,125 对图像(4,900 train / 1,225 test) |
| 标注实例 | 70,880 个行人框(平均约 11.6 个/图) |
| 目标特点 | 小目标为主(<32×32 像素),含遮挡、密集、夜间场景 |
系统架构与代码实现
由于 Ultralytics YOLOv8 原生不支持直接输入双模态数据,我们采用早期融合(Early Fusion)策略,将 RGB 与红外图拼接为 4 通道输入,并微调模型结构。
1. 项目结构
DroneRGBT_Detection/
├── datasets/
│ ├── images/
│ │ ├── train/ # 存放融合后的 4 通道 .npy
│ │ └── val/
│ └── labels/
│ ├── train/
│ └── val/
├── models/
│ └── yolov8s-rgbt.yaml
├── tools/
│ ├── fuse_rgb_thermal.py
│ └── create_labels.py
├── train.py
├── detect.py
└── rgbt_drone.yaml
2. 图像融合预处理
我们需要编写脚本将同步的 RGB 和热红外图像合并为 4 通道张量。注意处理单通道红外图的扩展。
# tools/fuse_rgb_thermal.py
import os
cv2
numpy np
():
os.makedirs(output_dir, exist_ok=)
rgb_files = (os.listdir(rgb_dir))
rgb_file rgb_files:
rgb_file.lower().endswith((, )):
thermal_file = rgb_file
rgb_path = os.path.join(rgb_dir, rgb_file)
thermal_path = os.path.join(thermal_dir, thermal_file)
rgb = cv2.imread(rgb_path)
thermal = cv2.imread(thermal_path, cv2.IMREAD_GRAYSCALE)
rgb thermal :
()
thermal = np.expand_dims(thermal, axis=)
fused = np.concatenate([rgb, thermal], axis=)
np.save(os.path.join(output_dir, rgb_file.replace(, )), fused)
__name__ == :
fuse_rgb_thermal(
rgb_dir=,
thermal_dir=,
output_dir=
)


