3、数据集准备:公开数据集介绍与预处理
做感知联调,第一步就是搞定数据。
说实话,我见过不少团队,模型选得挺好,算法也调得不错,结果一跑起来效果稀烂。为什么?数据没整明白。你想想看,连数据格式都不统一,预处理流程有坑,后面联调就是给自己挖坑。
今天咱们就聊聊公开数据集那些事儿。我把自己踩过的坑、积累的经验,一次性倒给你。
3.1 三大主流公开数据集
目前业界用得最多的,就是KITTI、nuScenes和Waymo。这三家各有千秋,我分别说说。
3.4.1 KITTI —— 经典但有点“老”
KITTI是2012年发布的,算是自动驾驶数据集的“老前辈”。它用一辆大众旅行车,在德国卡尔斯鲁厄市区和高速上采集的。
特点:
- 包含双目图像、激光雷达点云、GPS/IMU数据
- 标注了8类物体:Car、Van、Truck、Pedestrian、Cyclist等
- 训练集7481张,测试集7518张
我个人习惯用KITTI做快速原型验证。为什么?数据量小,下载快,跑一轮实验不费时间。但要注意——它的场景比较单一,基本都是德国晴天路况。你在国内雨天、夜晚场景下,模型可能直接“翻车”。
3.4.2 nuScenes —— 多模态的“瑞士军刀”
nuScenes是2019年发布的,来自安波福(Aptiv)。它在波士顿和新加坡采集,场景覆盖了城市、郊区、夜晚、雨天。
核心数据:
- 6个摄像头(360度环视)
- 5个毫米波雷达
- 1个32线激光雷达
- 高精地图 + GPS/IMU
嗯,这里要注意——nuScenes的标注格式跟KITTI完全不同。它用了23类物体,而且每个物体有“属性”标签,比如车辆是“静止”还是“移动”,行人是在“走路”还是“站立”。
我建议做多传感器融合的同学,优先选nuScenes。它的雷达和相机数据是严格时间同步的,省了你不少对齐的功夫。
3.4.3 Waymo —— 数据量最大,但门槛也高
Waymo Open Dataset是2019年发布的,来自Waymo自动驾驶车队。它在旧金山、凤凰城、山景城等地采集。
数据规模:
- 1150个场景,每个场景20秒
- 5个激光雷达(1个中距+4个近距)
- 5个摄像头(前、左前、右前、左后、右后)
- 标注了1200万+个3D框
说实话,Waymo的数据质量是最高的。它的标注一致性做得特别好,框的抖动很小。但有个问题——数据太大了,完整下载要几百GB。我当年第一次下载,光解压就花了半天。
3.2 数据标注格式对比
这三个数据集的标注格式,说白了就是“各玩各的”。我整理了一张表,方便你对比:
| 数据集 | 标注格式 | 坐标系统 | 关键字段 |
|---|---|---|---|
| KITTI | txt文件(每行一个物体) | 相机坐标系 | 类别、截断、遮挡、alpha、bbox、尺寸、位置、旋转角 |
| nuScenes | JSON(嵌套结构) | 全局坐标系(ego) | token、类别、属性、平移、旋转、尺寸、速度 |
| Waymo | TFRecord(protobuf序列化) | 激光雷达坐标系 | box_id、类别、中心点、尺寸、朝向、速度 |
你看,KITTI最简单,一个txt文件搞定。nuScenes的JSON嵌套很深,解析起来有点麻烦。Waymo的TFRecord最“现代”,但需要你熟悉TensorFlow的数据管道。
我曾经在项目里,需要把KITTI格式转成nuScenes格式。光写转换脚本就花了三天。为什么?因为坐标系统不一样——KITTI是相机坐标系,nuScenes是全局坐标系,中间要经过激光雷达坐标系、车身坐标系,一层层变换。
3.3 数据预处理流程
数据预处理,说白了就是“把原始数据变成模型能吃的样子”。我一般分四步走:
3.3.1 数据清洗
原始数据里总有一些“脏数据”。比如:
- 标注框超出图像边界
- 点云里出现NaN值
- 时间戳不同步
我的做法是写一个清洗脚本,把这些坏数据过滤掉。别小看这一步,有时候能过滤掉5%-10%的无效数据。
3.3.2 坐标对齐
不同传感器的数据,需要统一到同一个坐标系下。比如:
- 激光雷达点云 → 转到相机坐标系,才能投影到图像上
- 毫米波雷达目标 → 转到车身坐标系,才能跟激光雷达融合
嗯,这里有个坑——标定参数会随时间漂移。我建议每隔一段时间,重新做一次传感器标定,不然对齐精度会越来越差。
3.3.3 数据增强
数据增强是提升模型泛化能力的关键。常用的方法有:
- 图像:随机裁剪、颜色抖动、高斯噪声
- 点云:随机旋转、随机缩放、随机丢弃点
- 多模态:同时增强图像和点云,保持对应关系
我特别推荐“混合增强”(MixUp)——把两张图像和对应的点云混合在一起。这个方法在nuScenes上能提升2-3个点的mAP。
3.3.4 格式转换
最后一步,把数据转成模型需要的格式。比如:
- 图像:resize到固定尺寸(如1216×352),归一化到[0,1]
- 点云:体素化(Voxelization)或柱状化(Pillarization)
- 标注:编码成one-hot向量或回归目标
3.4 知识体系总览
下面这张图,帮你理清数据集准备的整体脉络:
你看,整个流程就是从数据集选择,到理解标注格式,再到预处理,环环相扣。每一步都马虎不得。
最后说一句——数据准备这件事,看起来枯燥,但它是整个感知联调的基石。我见过太多人急着调模型,结果数据没处理好,后面全白干。磨刀不误砍柴工,把数据整明白了,后面联调才能顺风顺水。
可可精品资料库