4. 标准测试数据集:公开数据集介绍与数据增强
做红外系统评估,最怕什么?
怕你辛辛苦苦调出来的模型,换个场景就崩了。我早年吃过这个亏——在实验室里跑得飞起,一到户外雨天直接翻车。后来我明白了:评估的根基,是标准测试数据集。
这一章,我们就来聊聊红外领域最常用的三个公开数据集:OSU、KAIST、FLIR。我会结合自己的踩坑经历,把它们的标注规范、适用场景和数据增强方法讲透。
4.1 三大公开数据集概览
先看一张总览表,心里有个底:
| 数据集 | 年份 | 场景 | 图像数 | 标注类型 | 分辨率 |
|---|---|---|---|---|---|
| OSU | 2005 | 校园/道路 | ~10K | 行人框 | 320×240 |
| KAIST | 2015 | 城市道路 | ~95K | 行人框+遮挡 | 640×480 |
| FLIR | 2018 | 城市/郊区 | ~14K | 多类别框 | 640×512 |
这三个数据集,我全用过。说实话,没有一个是完美的。但组合起来用,效果还不错。
4.2 OSU 数据集:经典但有限
OSU 是俄亥俄州立大学发布的,算是红外行人检测的“老祖宗”。
- 优点:标注规范,场景单一,适合做 baseline 测试。
- 缺点:分辨率低,场景少,没有遮挡标注。
4.3 KAIST 数据集:多模态标杆
KAIST 是目前引用最多的红外数据集。它同时提供了可见光+红外对齐图像。
我个人最喜欢它的遮挡标注——这在真实场景中太重要了。你想想看,行人被树挡一半,被车挡一半,模型能不能扛住?
标注规范细节
- 类别:person、people、cyclist
- 遮挡等级:none、partial、heavy
- 标注格式:PASCAL VOC 格式(XML)
4.4 FLIR 数据集:多类别实战
FLIR 是 FLIR 公司发布的,场景更丰富,类别更多。
| 类别 | 训练集数量 | 验证集数量 |
|---|---|---|
| person | ~15K | ~3K |
| bicycle | ~2K | ~0.5K |
| car | ~10K | ~2K |
| dog | ~0.5K | ~0.1K |
嗯,这里要注意:类别严重不平衡。dog 类只有 500 张,你直接训练,模型大概率学不到狗的特征。我建议做类别重采样或合成数据。
4.5 数据标注规范对比
不同数据集的标注规范差异很大。我整理了一个对比表:
| 规范项 | OSU | KAIST | FLIR |
|---|---|---|---|
| 标注工具 | 自定义 | LabelImg | LabelMe |
| 框格式 | MAT | XML | JSON |
| 遮挡标注 | 无 | 有 | 无 |
| 截断标注 | 无 | 有 | 无 |
| 属性标签 | 无 | 有 | 有 |
你看,KAIST 的标注最完整。但 FLIR 的 JSON 格式更容易转成 COCO 格式。我个人习惯:统一转成 COCO 格式,方便后续做数据增强和模型训练。
4.6 数据增强方法
数据增强,说白了就是用有限的数据,模拟无限的真实场景。我做过一个实验:只用原始数据训练,mAP 是 0.72;加了增强后,mAP 涨到 0.81。效果很明显。
4.6.1 基础增强
- 随机翻转:水平翻转,概率 0.5
- 随机裁剪:裁剪后 resize 到原尺寸
- 颜色抖动:亮度、对比度、饱和度微调
4.6.2 红外专用增强
红外图像和可见光不一样。我总结了几种专用方法:
- 热噪声注入:模拟传感器噪声
- 温度漂移模拟:整体亮度偏移
- 局部遮挡模拟:随机矩形遮挡
4.6.3 代码示例
下面是我常用的增强 pipeline,基于 Albumentations:
import albumentations as A
transform = A.Compose([
A.RandomBrightnessContrast(
brightness_limit=0.15,
contrast_limit=0.1,
p=0.5
),
A.HorizontalFlip(p=0.5),
A.RandomSizedBBoxSafeCrop(
height=512, width=640,
erosion_rate=0.2, p=0.3
),
A.CoarseDropout(
max_holes=8, max_height=32,
max_width=32, fill_value=0,
p=0.2
),
], bbox_params=A.BboxParams(
format='coco',
label_fields=['labels']
))
这段代码我用了两年,效果稳定。注意 RandomSizedBBoxSafeCrop 会保证不切掉标注框——这个细节很重要,否则增强后的标注就废了。
4.7 知识体系结构图
下面这张图,把本章的核心逻辑串起来了:
4.8 实战建议
最后,给你几条实在的建议:
- 不要只用单一数据集。我见过很多团队只拿 FLIR 训练,结果在 KAIST 上掉点严重。三个数据集混合使用,泛化能力会好很多。
- 标注格式统一化。我建议全部转成 COCO 格式,后续做数据增强、模型训练、评估都方便。
- 数据增强要克制。不是增强越多越好。我做过消融实验:加 3-4 种增强效果最好,加到 8 种反而下降。
- 验证集要保留原始分布。增强后的数据只用于训练,验证集必须用原始数据,否则评估结果会虚高。