nuScenes数据集

一、数据集简介

nuScenes是由自动驾驶公司Motional(原nuTonomy)发布的大型自动驾驶公开数据集,是目前自动驾驶感知领域最权威、使用最广泛的基准数据集之一。数据集采集于波士顿和新加坡两座城市的真实道路场景,涵盖城市道路、高速公路、住宅区等多种复杂驾驶环境。

nuScenes数据集以多传感器融合为核心特色,每帧数据同时包含相机图像、激光雷达点云、毫米波雷达数据以及高精度的3D目标标注,广泛应用于3D目标检测、多目标跟踪、BEV感知、语义分割等自动驾驶感知算法的研究与评测。

二、传感器配置

nuScenes采集车辆搭载了完整的多传感器套件,所有传感器均经过严格的时间同步与空间标定。

(一)相机系统

● 共6路环绕式相机,覆盖车辆周围360°视野

● 相机命名:CAM_FRONT(前视)、CAM_FRONT_LEFT(前左)、CAM_FRONT_RIGHT(前右)、CAM_LEFT(左侧)、CAM_RIGHT(右侧)、CAM_BACK(后视)

● 图像分辨率:1600×900像素

● 采样帧率:关键帧2Hz,中间帧约12Hz

(二)激光雷达

● 1路顶部激光雷达(LIDAR_TOP)

● 32线机械式激光雷达,垂直视场-30°至+10°

● 采样帧率:关键帧2Hz,中间帧约10Hz

● 每帧约34万个点,探测距离约100米

(三)毫米波雷达

● 共5路毫米波雷达,分布于车辆四周

● 提供速度、距离、角度等低维特征,不受光照和天气影响

(四)定位与IMU

● 高精度GPS+IMU组合定位系统

● 提供厘米级精度的自车位姿数据

三、数据组织结构

nuScenes数据分为两大类别:samples(关键帧)和sweeps(中间扫频帧),二者在采样频率、标注属性和用途上有显著区别。

|----------|-----------------|--------------------|
| 对比维度 | samples 关键帧 | sweeps 中间帧 |
| 采样频率 | 2 Hz(每0.5秒一帧) | 相机约12Hz,激光雷达约10Hz |
| 3D人工标注 | 有,完整的人工标注真值 | 无,仅原始传感器数据 |
| 多传感器同步 | 全传感器严格时间对齐 | 各传感器独立采样,无全局硬同步 |
| 数据量 | 较少(基准标注集) | 较大,约为samples的5~6倍 |
| 训练作用 | 监督学习的真值基准 | 时序特征补充、无监督预训练 |
| 评测使用 | 官方指标统一评测基准 | 不直接用于指标计算 |

(一)samples 关键帧

samples是数据集的标注基准关键帧,是全传感器严格时间同步的采样时刻,也是官方提供人工3D标注的唯一数据。每个sample关键帧包含一整套同步采集的6路相机图像、1路激光雷达点云、多路毫米波雷达数据,以及对应时刻的自车位姿和完整的3D目标标注框。

单帧3D目标检测、单帧BEV感知算法(如BEVFormer、PETR等)的主力训练与验证数据均基于samples关键帧,损失计算和指标评测都基于关键帧标注进行。

(二)sweeps 中间帧

sweeps是关键帧之间的高频率中间采样帧,只有原始传感器数据,没有人工标注的3D真值。相机每秒约12帧图像,其中2帧属于samples关键帧,剩余10帧都在sweeps中;激光雷达每秒约10帧点云,其中2帧属于samples关键帧,剩余8帧都在sweeps中。

sweeps主要用于时序类算法输入,时序BEV模型(如BEVFormer时序版、PETRv2)、多帧点云检测算法会将过去若干帧sweeps数据投影融合到当前关键帧,补充时序运动信息以提升检测精度。训练损失只在samples关键帧上计算,sweeps仅作为输入特征的补充。

四、JSON标注文件体系

nuScenes的元数据与标注全部以JSON格式存储,相当于数据集的"关系型数据库表",各文件通过唯一token(ID标识)互相关联,原始图像、点云文件则单独按路径存放。

(一)核心标注文件

● sample_annotation.json:3D目标检测的核心真值文件,所有3D bounding box标注都存储于此。每个条目是一个3D标注框,包含所属sample、instance、category,以及3D框的尺寸、位置、旋转角度(车身坐标系下)。

● sample.json:数据集的最小"帧"单元,代表一个时间戳下的多传感器同步快照,对应训练时的一个输入样本。每个sample对应一个关键时间戳,关联所属scene、时间戳、前后帧sample token。

● sample_data.json:所有原始传感器文件的索引目录,每一张图片、每一帧点云、每一帧雷达数据都对应一条记录,包含所属sample、对应标定传感器、自车位姿、文件路径、时间戳、图像尺寸等。

● instance.json:对同一个物理物体在整段场景中的唯一标识,实现跨帧的物体跟踪关联。同一物体在不同帧的3D标注共享同一个instance token。

(二)传感器与标定文件

● sensor.json:定义传感器硬件本身的基础属性,只描述硬件型号和类型,不包含标定参数。包含传感器名称、传感器类型(camera/lidar/radar)、硬件型号。

● calibrated_sensor.json:存储每一路传感器的标定参数(内参+外参),是BEV算法做相机投影、坐标转换的核心文件。每个条目对应一个安装位置的传感器加一辆采集车的标定结果,包含外参(传感器到车身坐标系的平移和旋转)以及相机内参矩阵、畸变系数。

● ego_pose.json:记录每一时刻采集车辆自身的全局位姿(位置+朝向),用于车身坐标系与全局地图坐标系的转换,也用于多帧点云拼接、时序对齐。

(三)分类与属性文件

● category.json:定义数据集全部3D目标检测的物体分类体系,采用层级化分类(大类→子类),如vehicle.car、human.pedestrian.adult、movable_object.trafficcone等。

● attribute.json:对物体类别做补充状态描述,不改变分类,只标注目标的动态属性,如vehicle.moving(行驶中车辆)、vehicle.stopped(静止车辆)、pedestrian.sitting_lying_down(坐卧行人)。

● visibility.json:定义目标物体可见程度的分级标准,用于标注遮挡程度,通常分为4个等级(0-40%、40-60%、60-80%、80-100%)。

(四)场景与地图文件

● scene.json:定义一段连续的行车场景序列,由数十个连续的sample(关键帧)组成,单段时长约20秒。用于时序类任务,也常用于划分训练/验证集。

● log.json:记录每一段数据采集行程的元信息,对应一次完整的行车录制片段,包含采集城市/地点、采集车辆编号、录制日期、对应地图版本等。

● map.json:高精语义地图的索引文件,存储车道线、人行道、停止线等矢量地图的元数据,主要服务于BEV语义分割、车道线感知、规划类任务。

五、数据关联逻辑

nuScenes各JSON文件通过token形成完整的关联网络,从宏观到微观的层级关系如下:

scene(场景)→ sample(关键帧)→ sample_data(单传感器数据:图像/点云)

↘ sample_annotation(3D标注框)→ category / instance / attribute / visibility

log(采集日志)→ calibrated_sensor(标定参数)→ sensor(硬件)

六、数据集规模与典型应用

(一)数据规模

● 训练集:约28000个关键帧,700+段场景

● 验证集:约6000个关键帧,150+段场景

● 测试集:约6000个关键帧,150+段场景(标注不公开)

● 标注目标类别:23类常见交通参与者,含车辆、行人、骑行者、交通设施等

● 总标注框数:超过140万个3D标注框

(二)典型应用场景

● 3D目标检测:基于相机、激光雷达或多模态融合的3D检测算法评测

● BEV鸟瞰图感知:BEVFormer、PETR等BEV算法的主流训练与评测基准

● 3D多目标跟踪:基于时序数据的多目标跟踪算法研究

● 语义分割与全景分割:点云或图像的语义/全景分割任务

● 多传感器融合:相机、激光雷达、雷达的融合感知算法研究

七、官方评测指标

nuScenes官方提供统一的评测基准,核心指标包括:

● mAP(mean Average Precision):3D目标检测的平均精度均值,是最核心的检测精度指标

● NDS(nuScenes Detection Score):综合检测评分,综合考虑mAP、平移误差、尺度误差、朝向误差、速度误差、属性误差等多个维度

● AMOTA / AMOTP:多目标跟踪的准确率与精度指标

所有官方评测均基于samples关键帧的标注进行,确保不同算法之间的公平对比。