NuSences 数据集解析以及 nuScenes devkit 的使用

该文章已生成可运行项目,

一、官网介绍

1.1 总览(Overview)

nuScenes数据集(发音为/nuːsiːnz/)是由Motional(前身为nuTonomy)团队开发的用于自动驾驶的公共大规模数据集。motion公司正在让无人驾驶汽车成为一个安全、可靠、方便的现实。通过向公众发布我们的一部分数据,motion旨在支持公众对计算机视觉和自动驾驶的研究。

为此,我们收集了波士顿和新加坡的1000个驾驶场景,这两个城市以交通密集和极具挑战性的驾驶情况而闻名。时长20秒的场景是手动选择的,展示了一组多样而有趣的驾驶动作、交通状况和意外行为。nuScenes的丰富复杂性将鼓励开发方法,使每个场景中有数十个物体的城市地区能够安全驾驶。收集不同大洲的数据进一步使我们能够研究计算机视觉算法在不同地区的泛化

为了方便常见的计算机视觉任务,例如对象检测和跟踪,我们在整个数据集上以2Hz的速度用精确的3D包围框注释了23个对象类。此外,我们还注释了对象级属性,如可见性、活动和姿势。

2019年3月,我们发布了包含所有1000个场景的完整nuScenes数据集。完整的数据集包括大约1.4M相机图像(camera images),390k激光雷达扫描(LIDAR sweeps),1.4M雷达扫描(RADAR sweeps)和1.4M物体边界框(object bounding boxes)在40k关键帧。其他功能(地图层,原始传感器数据等)将很快跟进。我们还组织了nuScenes 3D检测挑战,作为CVPR 2019自动驾驶研讨会的一部分。

nuScenes数据集的灵感来自开创性的KITTI数据集。**nuScenes是首个提供自动驾驶汽车整个传感器套件(6个摄像头、1个LIDAR、5个RADAR、GPS、IMU)数据的大规模数据集。**与KITTI相比,nuScenes包含了7倍多的对象注释。

2020年7月,我们发布了nuScenes-lidarseg。在nuScenes-lidarseg中,我们用32种可能的语义标签之一注释nuScenes中的关键帧中的每个激光雷达点(即激光雷达语义分割)。因此,nuScenes-lidarseg包含了14亿个注释点,横跨40000个点云和1000个场景(850个场景用于训练和验证,150个场景用于测试)。

1.1.1 数据搜集(Data collection)

  • 场景选择Scene planning

对于nuScenes数据集,我们在波士顿和新加坡收集了大约15小时的驾驶数据。对于完整的nuScenes数据集,我们发布了来自波士顿海港和新加坡One North、皇后镇和荷兰村地区的数据。驾驶路线经过精心选择,以捕捉具有挑战性的场景。我们的目标是不同的地点、时间和天气条件。为了平衡职业频率分布,我们加入了更多带有稀有职业的场景(比如自行车)。使用这些标准,我们手动选择1000个持续时间为20秒的场景。这些场景都是用人工仔细标注的

  • 汽车配置Car setup

我们使用两辆传感器布局相同的雷诺Zoe汽车在波士顿和新加坡驾驶。传感器的放置位置请参考上图。我们发布的数据来自以下传感器:
在这里插入图片描述

相机(CAM)有六个,分别分布在前方(Front)、右前方(Front Right)、左前方(Front Left)、后方(Back)、右后方(Back Right)、左后方(Back Left);

激光雷达(LIDAR)有1个,放置在车顶(TOP);

毫米波雷达有五个,分别放置在前方(Front)、右前方(Front Right)、左前方(Front Left)、右后方(Back Right)、左后方(Back Left)。

具体配置参数如下:

# 1x spinning LIDAR (Velodyne HDL32E):
20Hz capture frequency
32 beams, 1080 (+-10) points per ring
32 channels
360° Horizontal FOV, +10° to -30° Vertical FOV, uniform azimuth angles
80m-100m Range, Usable returns up to 70 meters, ± 2 cm accuracy
Up to ~1.39 Million Points per Second

# 5x long range RADAR sensor (Continental ARS 408-21):
13Hz capture frequency
77GHz
Independently measures distance and velocity in one cycle using Frequency Modulated Continuous Wave
Up to 250m distance
Velocity accuracy of ±0.1 km/h

# 6x camera (Basler acA1600-60gc):
12Hz capture frequency
Evetar Lens N118B05518W F1.8 f5.5mm 1/1.8"
1/1.8'' CMOS sensor of 1600x1200 resolution
Bayer8 format for 1 byte per pixel encoding
1600x900 ROI is cropped from the original resolution to reduce processing and transmission bandwidth
Auto exposure with exposure time limited to the maximum of 20 ms
Images are unpacked to BGR format and compressed to JPEG
See camera orientation and overlap in the figure below.

# 1x IMU & GPS (Advanced Navigation Spatial):
Position accuracy of 20mm
Heading accuracy of 0.2° with GNSS
Roll & pitch accuracy of 0.1°
Localization takes into account IMU, GPS and HD lidar maps (see our paper for more details)

在这里插入图片描述

  • 传感器矫正(Sensor calibration

为了获得高质量的多传感器数据集,校准每个传感器的外参(extrinsics) 和内参(intrinsics) 是必不可少的。我们表示相对于自我框架(ego frame)的外部坐标,即后车轴的中点。最相关的步骤如下:

  1. LIDAR extrinsics

我们使用laser liner来精确测量激光雷达与自我框架的相对位置。

  1. Camera extrinsics

我们在摄像机和激光雷达传感器前放置一个立方体形状的校准目标。标定目标由三个已知模式的正交平面组成。在检测到模式后,通过对准校准目标的平面来计算从相机到激光雷达的变换矩阵。给出上面计算的激光雷达到自我帧的转换,然后我们可以计算相机到自我帧的转换和由此产生的外部参数。

  1. RADAR extrinsics

我们把雷达安装在水平位置。然后我们通过在城市环境中驾驶来收集雷达测量数据。在对移动物体的雷达回波进行滤波后,我们使用暴力方法校准偏航角,以使静态物体的补偿距离率最小化。

4 . Camera intrinsic calibration

我们使用一组已知模式的校准目标板来推断相机的固有参数和畸变参数。

1.1.2 传感器同步(Sensor synchronization)

为了在激光雷达和相机之间实现良好的跨模态数据对齐,当顶部激光雷达扫过相机的FOV中心时,相机的曝光被触发。图像的时间戳为曝光触发时间;所述LIDAR扫描的时间戳为当前LIDAR帧实现完全旋转的时间。考虑到相机的曝光时间几乎是瞬时的,这种方法通常会产生良好的数据对齐。请注意,相机运行在12Hz,而激光雷达运行在20Hz。12个相机曝光尽可能均匀地分布。

1.2 数据格式(Data format)

本文档描述了nuScenes中使用的数据库模式。所有注释和元数据(包括校准、地图、车辆坐标等)都包含在关系数据库中。下面列出了数据库表。每一行都可以由其唯一的主键token标识。可以使用sample_token等外键链接到表sampletoken。有关最重要的数据库表的介绍,请参阅本教程。

在这里插入图片描述

attribute

属性是可以在类别保持不变的情况下更改的实例的属性。例如:一辆正在停放/停止/移动的车辆,以及一辆自行车是否有人骑。

attribute {
   
   
   "token":                   <str> -- 唯一的标识符
   "name":                    <str> -- 属性名
   "description":             <str> -- 属性描述
}

calibrated_sensor

定义在特定车辆上校准的特定传感器(激光雷达/雷达/摄像机)。所有外部参数都是关于自我车体框架给出的。所有相机图像都没有失真和校正。

calibrated_sensor {
   
   
   "token":                   <str> -- 唯一的标识符
   "sensor_token":            <str> -- 指向传感器类型的外键。
   "translation":             <float> [3] -- 以米为单位的坐标系原点: x, y, z.
   "rotation":                <float> [4] -- 坐标系方向为四元数: w, x, y, z.
   "camera_intrinsic":        <float> [3, 3] -- 内置相机校准。对于非相机的传感器为空。
}

category

对象类别的分类(例如车辆、人)。子类别由一个点划分(如:human.pedestrian.adult)。

category {
   
   
   "token":                   <str> -- 唯一的标识符.
   "name":                    <str> -- 类别名称,子类别由句点划分
   "description":             <str> -- 类别描述
   "index":                   <int> -- 在nuScenes-lidarseg中 .bin 文件中用于提高效率的标签索引。
}

ego_pose

自车具在特定时间戳的姿势。给出了对数图的全局坐标系。ego_pose是我们论文中描述的基于激光雷达地图的定位算法的输出。定位在x-y平面上是二维的。

ego_pose {
   
   
   "token":                   <str> -- 唯一的标识符.
   "translation":             <float> [3] -- 坐标系原点以米为单位:x, y, z。注意z总是0
   "rotation":                <float> [4] -- 坐标系方向为四元数:w x y z。
   "timestamp":               <int> -- 唯一的表示符.
}

instance

对象实例,例如特定的车辆。这个表是我们观察到的所有对象实例的枚举。注意,实例不是跨场景跟踪的

instance {
   
   
   "token":                   <str> -- 唯一的标识符.
   "category_token":          <str> -- 指向物体类别的外键
   "nbr_annotations":         <int> -- 此实例的注释数量.
   "first_annotation_token":  <str> -- 外键。指向此实例的第一个注释
   "last_annotation_token":   <str> -- 外键。指向此实例的最后一个注释
}

lidarseg

nuScenes-lidarseg注释和sample_data之间的映射,对应于与关键帧相关的lidar点云。

lidarseg {
   
   
   "token":                   <str> -- 唯一的标识符.
   "filename":                <str> -- 包含nuScenes-lidarseg标签的.bin文件的名称。这些是使用numpy以二进制格式存储的uint8的numpy数组
   "sample_data_token":       <str
本文章已经生成可运行项目
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyw2002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值