购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 nuScenes数据集

nuScenes是一个由Motional团队发布的大规模自动驾驶数据集,包含在美国波士顿和新加坡采集的1000个驾驶场景。它涵盖了140万张标注图像、39万组激光雷达点云数据,并标注了23个物体类别和140万个三维检测框。数据集配备了丰富的传感器阵列,包括激光雷达、毫米波雷达、摄像头、GPS和IMU,能够全方位捕捉环境信息。nuScenes在数据采集速率和参数上均优于其他数据集,其激光雷达采集速率高达20Hz。nuScenes数据集支持自动驾驶算法的训练和验证,为物体检测、分类、跟踪等任务提供了丰富和精确的信息,具有广泛的应用价值和研究潜力。nuScenes数据集的传感器配置精密且全面,如图2-7所示。

图2-7 nuScenes传感器配置

对于自动驾驶和机器视觉方面的研究者而言,高质量且详细的标注数据集至关重要。nuScenes便是这样一个数据集,它提供多样的驾驶场景数据,适用于多种感知任务。

1.数据集下载

nuScenes官网提供了不同版本的数据集下载服务,以满足不同需求,其中,mini版本适合存储进行有限或初步实验的用户。此外,官网还提供数据格式、API文档、示例代码等资源,有助于理解和使用数据集,开发算法,以及解决问题。nuScenes官网会引导用户至数据集下载界面,如图2-8所示。

图2-8 数据集下载界面

2.nuScenes数据集内容

nuScenes是一个专为自动驾驶研究设计的大型多模态数据集,它集成了从多种传感器捕获的详尽数据,旨在为计算机视觉和机器学习任务构建一个全面且真实的驾驶环境视图。该数据集涵盖了传感器数据和标注与元数据两大部分。传感器数据包括:

1)140余万覆盖车辆360度视野的相机图像(JPEG格式),这些图像展现了多样化的天气和光照条件;

2)约39万个激光雷达扫描结果,每个扫描结果都含有数百万个精确的点云数据点,这些数据以二进制格式存储,并携带三维坐标和反射强度信息,对障碍物检测和道路几何形状估计等任务至关重要;

3)140万个毫米波雷达扫描结果,能够穿透恶劣天气提供物体距离和速度信息;

4)栅格化和矢量化两种地图文件,分别用于道路网络的鸟瞰视图和详细的道路几何形状、交通标志等信息的展示。

在标注与元数据方面,nuScenes为23个不同的物体类别提供了标注信息,这些标注信息包括三维边界框、方向和速度等属性,并将数据集分割为训练、验证、测试和mini等部分,以便于实验和评估。数据集的结构设计注重层次性和模块化,包括描述数据采集交通工具信息的Vehicle部分,将采集目标分级的Extraction部分,表示特定驾驶情况的Scene部分,以及带有注释的Sample和细化传感器输出的Sample_data部分。同时,Annotation部分涉及数据集中目标的标注过程,Taxonomy部分定义了目标的类别和层次结构。这种结构化的组织方式为信息提取、场景重建、传感器融合、目标检测与跟踪等研究任务提供了有力支持,也为研究人员灵活地获取和使用数据提供了便利,nuScenes数据集结构如图2-9所示。

3.数据集文件夹分布

nuScenes数据集的组织结构直观且易于使用,主要由4个核心文件夹构成。

1)maps文件夹:包含所有地图文件,提供道路网络的详细视图,地图文件虽在3D检测中应用较少,但在路径规划等后续决策阶段至关重要。maps文件夹中的图像和文件为研究人员提供了一个清晰的驾驶环境视图,有助于研究人员增强对场景的理解和分析,如图2-10所示。

2)samples文件夹:存储关键帧的传感器数据,这些经精心挑选和标注的关键帧富含车辆位置、行人动态等信息,是训练和验证模型的关键数据来源。

图2-9 nuScenes数据集结构

注:星号(*)用于突出显示修改。

图2-10 maps文件夹中的图像和文件

3)sweeps文件夹:包含未标注的中间帧数据,可用于自监督学习等任务,可以充分挖掘数据集潜力。

4)v1.0-version文件夹:以JSON表格形式存储元数据和标注信息,涵盖车辆轨迹、行人位置等,对训练模型、评估算法和场景分析至关重要。同时,这些数据按用途进一步地细分,便于针对性实验和评估。

这种结构设计使nuScenes成为一个全面、灵活且易用的数据平台,有力推动自动驾驶和计算机视觉研究进展。

4.文件说明

以下是nuScenes数据集中各个JSON文件的详细描述。

1)attribute.json:描述物体实例的属性,如驾驶状态。

2)calibrated_sensor.json:包含已校准传感器的标定数据。

3)category.json:描述物体类别。

4)ego_pose.json:描述车辆在特定时刻的姿态。

5)instance.json:描述物体实例的连续观察。

6)log.json:记录数据收集日志信息。

7)map.json:描述地图信息。

8)sample.json:描述数据集中的样本。

9)sample_annotation.json:对3D边界框和物体的标注。

10)sample_data.json:描述样本中的传感器数据。

11)scene.json:描述数据集中的场景。

12)sensor.json:描述使用的传感器。

13)visibility.json:描述物体可见性。

每个JSON文件都提供唯一ID和描述性名称,以关联和管理数据集中的不同元素,从而支持自动驾驶和计算机视觉任务的需求。

5.标注信息

在nuScenes数据集中,图像和激光的时间戳分别代表相机开始曝光和激光扫描结束的时刻。激光扫描到相机视场(Field of View,FoV)中心时会触发相机曝光,一圈扫描可触发6次曝光。定位数据生成分两个阶段:首先离线使用激光点云创建高清地图;然后在线结合里程计和激光数据,采用蒙特卡洛定位算法实现车辆定位,误差可控制在10cm内。官方提供的数据集开发工具nuscenes-devkit简化了数据读取、索引和可视化操作,可通过Python的包管理工具pip进行安装。

数据集分为mini、trainval、test三部分,它们结构相同,都分为scene、sample、sample_data三个文件层级,可通过token访问。每个scene文件包含约20s的视频片段,约40个关键帧。每个sample文件对应一个关键帧,存储各类传感器token信息,而sample_data文件是这些token指向的实际数据,如图像路径、位姿、传感器标定和3D标注信息等。目标标注信息包括可见程度、类别、3D框位置和尺寸等字段。nuScenes涉及4个坐标系,分别为全局、车身、相机和激光坐标系,所有转换需先转换至车身坐标系。各坐标系转换关系详见第4章。

6.数据集解析

nuScenes官方提供了一套专门的数据集开发工具包,名为nuscenes-devkit,该工具包集成了数据读取、索引、可视化等常用功能,为研究人员和开发人员提供了便捷的接口。该工具包可以通过pip进行安装,安装命令如下:

nuscenes-devkit的使用相当直观和方便,官方网站上提供了详细的教程和示例代码,因此此处不再赘述其具体使用方法。然而,在使用nuScenes解析库时,必须确保v1.0-version等4个核心文件夹位于同一级目录下,否则解析过程中可能会遇到困难。

(1)场景

场景(scene)是nuScenes数据集中的一个重要概念,代表了一系列连续的样本。通过使用以下命令,用户可以方便地查看数据集中的所有场景,从而进一步进行分析和处理。

mini数据集共包含10个独立的场景。每个场景都包括了约连续20s的所采集到的相关信息,示例如图2-11所示。

图2-11 mini数据集示例

可以使用下列命令来查看某个场景中的信息:

执行代码后查看结果,如图2-12所示。

图2-12 查看结果

图2-12场景信息中包括以下关键信息。

1)token:场景的唯一标识符。

2)log_token:与场景关联的日志标识符。

3)nbr_samples:场景中包含的样本数量,此例中为39个。

4)first_sample_token:场景中第一个样本的标识符。

5)last_sample_token:场景中最后一个样本的标识符。

6)name:场景的名称,此例中为scene-0061。

7)description:场景的描述,此例中描述了场景的一些特征,如停靠的卡车、建筑工地、交叉口、左转、跟随一辆货车等。

(2)样本

样本(sample)是nuScenes数据集中的一个核心概念,它与场景有着紧密的关系。场景可以理解为一个约20s的连续视频片段。在场景中,每隔0.5s进行一次采样,得到样本,即每0.5s取一帧图像。因此,场景中的每个样本都是关键帧,代表了特定时间戳下的场景状态。

因此,样本被定义为场景中给定时间戳的带注释的关键帧。在关键帧中,来自所有传感器的数据的时间戳应非常接近其所指向的样本的时间戳。每个样本都包含了该时间点上的所有传感器的数据,如图像、点云数据等。

通过场景信息(如上文中的my_scene)可以获取某个样本的标识符token值。通过样本的标识符,可以进一步分析和处理该样本中的具体数据。例如,如果我们已经有了某个场景的信息,则可以通过该场景获取其中的某个样本,并进一步分析这个场景中第一个带注释的示例。

以下是具体的操作步骤和解释。

1)获取第一个样本的标识符,命令如下:

2)利用标识符获取样本信息,通过使用nusc.get()命令,并传入样本的类型('sample')和标识符,可以获取当前样本的详细信息。

当前样本的详细信息示例如图2-13所示。

图2-13 当前样本的详细信息示例

图2-13的结果中包括了该样本的各项信息,如传感器采集到的数据、标注信息等。这些信息为后续的数据分析、模型训练等任务提供了基础。

(3)样本数据

使用下面的命令可以获取sample的样本数据,即sample_data。

得到的具体样本数据如图2-14所示。

图2-14 样本数据

从图2-14中可以看出,样本数据包含在不同的传感器里。

这些数据代表了组成传感器套件的不同传感器类型。下面将深入探讨从特定传感器(例如前置摄像头,即CAM_FRONT)获取的样本数据,并展示如何在特定传感器上进行数据渲染。

例如,我们可以选择前置摄像头(CAM_FRONT)并获取其样本数据,选择前置摄像头的命令如下:

执行选择前置摄像头的命令之后,可以获取前置摄像头的样本数据,如图2-15所示。

图2-15 获取前置摄像头的样本数据

这些数据包括了传感器的标定参数、时间戳、文件路径等信息,这些信息对于理解传感器的工作原理和数据采集过程非常重要。此处我们使用nuScenes的渲染工具来展示特定传感器的数据,命令如下:

执行命令后将展示前置摄像头的可视化结果,包括图像的几何结构、颜色分布等特性,如图2-16所示。

图2-16 前置摄像头可视化结果

通过这些操作,研究人员不仅可以访问传感器的原始数据,还可以深入了解传感器的工作机制和数据特性。

(4)样本标注

样本标注(sample_annotation)指的是在样本中定义物体位置的边界框。这些边界框可以是二维或三维的,用于描述物体的几何形状和空间位置。所有的位置数据都是相对于全局坐标系统给出的,意味着每个物体的位置都相对于一个固定参考点,这确保了不同传感器和不同时间戳下的数据一致性。

我们可以通过以下代码获取上述样本中的一个样本标注,并分析其内容:

我们还可以使用以下命令对其进行可视化:

样本标注可视化后的效果如图2-17所示。

图2-17 样本标注可视化效果

其中包括了物体的类别、属性、位置、方向、速度和边界框等信息。

(5)实例

实例(instance)是需要由自动驾驶车辆检测或跟踪的目标(例如特定车辆、行人等)。通常在特定场景的不同帧中跟踪实例,不会跨场景跟踪。我们可以用以下代码获取实例数据:

实例注释标记如图2-18所示。

图2-18 实例注释标记

输出实例记录的第一个和最后一个注释标记,其命令如下:

实例第一个标记和最后一个标记分别如图2-19和图2-20所示。

图2-19 实例第一个标记

图2-20 实例最后一个标记

(6)类别

类别(category)是注释的目标分配。数据库的类别表中包含了不同目标类别的分类,并列出了子类别,由句点分隔。类别记录包含该特定类别的名称和描述。数据集中支持的类别可使用以下命令查看:

数据集中支持的类别如图2-21所示。

图2-21 数据集中支持的类别

(7)属性

属性(attribute)是实例的属性,可能在同一场景的不同部分发生变化。下面是一个属性在场景中发生变化的例子。

可看到属性的变化为:

(8)可见度

可见度(visibility)是指从6个不同摄像头采集的所有图像中可见的像素部分。具体来说,可见度评估了目标对象在图像中的可见程度。可见度分为4个组。

●0%~40%:目标对象在图像中仅小部分可见。

●40%~60%:目标对象在图像中部分可见。

●60%~80%:目标对象在图像中大部分可见。

●80%~100%:目标对象在图像中完全或几乎完全可见。

我们可以用以下代码显示可见度。

这里以一个可见度为80%~100%的example_annotation进行示例,如图2-22所示。

图2-22 可见度示例 dWEe0/p9Z68yqzAKCEEgrJx+gQZRSde2XSYXNscKWwIEZkhbNfnlq/Z3RP0XYv7M

点击中间区域
呼出菜单
上一章
目录
下一章
×