nuscenes devkit 使用入门

nuScenes数据集 是自动驾驶公司nuTonomy建立的大规模自动驾驶数据集,标注了BEV视野下3D目标真值信息,同时有车辆底盘CAN信息,以及IMU位姿信息。关于数据集的信息可参考官网:

https://www.nuscenes.org/nuscenes

本文旨在做一个科普性的入门介绍,希望对你有帮助。

nuScenes数据集本身比较大,如果想先了解一下数据结构建议下载mini数据集进行学习。

下载链接:https://www.nuscenes.org/nuscenes 点击download栏,登录后可下载**Full dataset (v1.0)**中mini数据。

一、工具简介

nuScenes数据集真值标注数据都存在了json文件中,并且每个json文件还存了不同的信息,直接看可能不够直观。而本身数据集就提供了库或函数帮助我们使用这些数据。下面是相关工具简介:

  • nuscenes-devkit安装包,可通过pip直接安装
  • nuscenes-devkit repo代码,提供了一些示例脚本,帮助我们可视化数据。

以上两个工具配合使用,可以调用函数处理或可视化数据。

二、 nuscenes-devkit安装包安装

python环境:Python 3.6 or Python 3.7.

pip install nuscenes-devkit

三、nuscenes-devkit repo代码使用

代码仓库:GitHub - nutonomy/nuscenes-devkit: The devkit of the nuScenes dataset.

clone到本地后,打开以下路径:nuscenes-devkit/python-sdk/tutorials进入到应用脚本文件夹。

其中的脚本会使用nuscenes-devkit安装包里的函数,或者repo代码里实现的函数处理数据,输出相应结果。

以nuscenes_tutorial.ipynb代码为例:

1.导入数据集

from nuscenes import NuScenes
#nuscenes即我们上面安装的库

# This is the path where you stored your copy of the nuScenes dataset.
# 你本机存放数据的路径,即包含v1.0-mini,samples,sweeps的文件夹路径
DATAROOT = '/data/sets/nuscenes'

nuscenes = NuScenes('v1.0-mini', dataroot=DATAROOT) #v1.0-mini为存放json文件的文件夹

from nuscenes.nuscenes import NuScenes
#nuscenes即我们上面安装的库

nusc = NuScenes(version='v1.0-mini', dataroot='/data/sets/nuscenes', verbose=True)
# dataroot,你本机存放数据的路径,即包含v1.0-mini,samples,sweeps的文件夹路径
#v1.0-mini为存放json文件的文件夹

通过以上方法即将数据加载到了nusc 句柄中(可能这个名称并不专业)。

2.显示场景信息

nusc.list_scenes()
>>>
scene-0161, Car overtaking, parking lot, peds, ped ... [18-05-21 15:07:23]   19s, boston-seaport, #anns:1970
scene-0162, Leaving parking lot, parked cars, hidde... [18-05-21 15:07:43]   19s, boston-seaport, #anns:2230
scene-0163, Drive along street with dozens of parke... [18-05-21 15:08:03]   19s, boston-seaport, #anns:1585
scene-0164, Turn into narrow street, parked cars, p... [18-05-21 15:08:38]   19s, boston-seaport, #anns:745
scene-0165, Pass crane, truck and construction work... [18-05-21 15:09:15]   19s, boston-seaport, #anns:1423
scene-0166, Leaving narrow street, many cars [18-05-21 15:09:35]   19s, boston-seaport, #anns:1313
scene-0167, Pass parked trucks, sitting pedestrians... [18-05-21 15:10:13]   19s, boston-seaport, #anns:1455
...

会显示是在哪些场景中采集的数据,一般一个场景20s左右,包含40帧sample标注。

注:我使用的是全的数据,可能mini的显示和这个略有不同,但格式是一样的。

2.1显示具体场景信息

my_scene = nusc.scene[0]
my_scene
>>>
{'token': '73030fb67d3c46cfb5e590168088ae39',
 'log_token': '6b6513e6c8384cec88775cae30b78c0e',
 'nbr_samples': 40,                                     #该场景包含的帧数
 'first_sample_token': 'e93e98b63d3b40209056d129dc53ceee', #对应的sampletoken
 'last_sample_token': '40e413c922184255a94f08d3c10037e0',
 'name': 'scene-0001',
 'description': 'Construction, maneuver between several trucks'}

3.显示sample信息

sample是scene中的某一帧环境感知信息。

如取上面场景的第一个sample数据, token作用可参考:NuScenes中token作用-CSDN博客

first_sample_token = my_scene['first_sample_token']
my_sample = nusc.get('sample', first_sample_token)
>>>
{'token': '2cc9075f8e4348fb922c712ffd3fee12',
 'timestamp': 1532402418046971,                  #unix时间戳
 'prev': '',
 'next': 'dfdd53ac5a6e464abc187ee789b2e5ff',
 'scene_token': '6d4b2bd795ae4c66900ad98ccd2371a6', #对应的场景token
 'data': {'RADAR_FRONT': '43a6ac808b7a4e5189c9ee804c3c368b', #对应的传感器信息,因为其实BEV视野,所以包含多个传感器
  'RADAR_FRONT_LEFT': 'dfb26980b12d4471bde15ad81bb5f529',
  'RADAR_FRONT_RIGHT': 'ba9146cd7c80400a947be99f4fcf1a3b',
  'RADAR_BACK_LEFT': 'a990dc188cf841d5933d2679e8b26a22',
  'RADAR_BACK_RIGHT': '41d69cb8494148cc957d6f819d9b9008',
  'LIDAR_TOP': '5bfd05fdff414f5ea2cc38ea6740f5f1',
  'CAM_FRONT': 'e5ec064ef77a4a3a828cc9a589773492',
  'CAM_FRONT_RIGHT': '4bc790012be24843b8422018c7b202ba',
  'CAM_BACK_RIGHT': '3491f77b6ec14ccd84518fa597fe9b6d',
  'CAM_BACK': '12d71b77a814404e972af142dc3b6fe1',
  'CAM_BACK_LEFT': '724fc0551c444322b43c46b6deb5f9f2',
  'CAM_FRONT_LEFT': 'e21670f38989456fb2f5d1218a6945d0'},
 'anns': ['8974f7dd53b24df883947d84ddc8ba05',  #标注实例(目标)token
  '96b507556cde460aaaccc9c05f698338',
  '9b23587b63d14002b44dc4f6166d2e0f',
  '6fceba25a9ca4bd9b289b929be43d6d4',
  'e401fe9655f94f4ab1d7cb6069c18f99',
  'fc0e3834967a40579c01bd102b864124',
  '1a4c7a6e22264ef2a5f8406e9f50a927',
  'c354ed3e8f50467f82345bcffff5abca',
...
  'b822085aa4e54d86b852f5375e8b361a',
  'cf2a81436b9047edb446ce0fb6fa26ce',
  '018f12b168fc4f1e99859477a597fca8',
  '0faa6713fe73452f8ac4dbd1b107f723',
  'cfa300e2b5e14a64b0248c9ce190348e']}

这一块可以展开说一下:

打开v1.0-mini中sample.json文件,会发现文件中对应token信息如下,并没有通过函数获取到的内容多。所以通过官方库函数,它内部做了更多的链接处理,可以帮助获取更多信息。

    {
        "token": "2cc9075f8e4348fb922c712ffd3fee12",
        "timestamp": 1532402418046971,
        "prev": "",
        "next": "dfdd53ac5a6e464abc187ee789b2e5ff",
        "scene_token": "6d4b2bd795ae4c66900ad98ccd2371a6"
    },

3.1显示具体传感器帧信号

sensor = 'CAM_FRONT'
cam_front_data = nusc.get('sample_data', my_sample['data'][sensor])
cam_front_data
>>>
{'token': 'e5ec064ef77a4a3a828cc9a589773492',
 'sample_token': '2cc9075f8e4348fb922c712ffd3fee12',
 'ego_pose_token': 'e5ec064ef77a4a3a828cc9a589773492',
 'calibrated_sensor_token': '4e71d28eb4094dfb9c5f1375ee9495dd',
 'timestamp': 1532402418012468,
 'fileformat': 'jpg',
 'is_key_frame': True,
 'height': 900,
 'width': 1600,
 'filename': 'samples/CAM_FRONT/n015-2018-07-24-11-13-19+0800__CAM_FRONT__1532402418012468.jpg',
 'prev': '',
 'next': 'a407f2cd85504c1a9a58521e3d6dc62c',
 'sensor_modality': 'camera',
 'channel': 'CAM_FRONT'}

对应的可以看到对应的图片的路径

3.2显示该图像

nusc.render_sample_data(cam_front_data['token'])

3.3显示激光雷达信息

lidar_top_data = nusc.get('sample_data', my_sample['data']['LIDAR_TOP'])
nusc.render_sample_data(lidar_top_data['token'])

3.4获取标注实例信息

my_annotation_token = my_sample['anns'][0]  #获取token
my_annotation_metadata =  nusc.get('sample_annotation', my_annotation_token)  #从标准信息中根据token查找信息
my_annotation_metadata
>>>
{'token': '8974f7dd53b24df883947d84ddc8ba05',
 'sample_token': '2cc9075f8e4348fb922c712ffd3fee12',
 'instance_token': 'caa1d11657774a378928e82dd4e07a0d',
 'visibility_token': '4',
 'attribute_tokens': ['cb5118da1ab342aa947717dc53544259'],
 'translation': [739.251, 941.023, 0.545],    #位置
 'size': [1.671, 4.441, 1.404],               #大小
 'rotation': [0.42193005462085964, 0.0, 0.0, 0.9066283852867383], #角度信息
 'prev': '',
 'next': '5c7896d5fbdf4324ae71d30abf5184e1',
 'num_lidar_pts': 104,
 'num_radar_pts': 0,
 'category_name': 'vehicle.car'}

可以获取得到目标的位置,大小,角度,类型等信息。

3.5根据token显示标注信息

nusc.render_annotation(my_annotation_token)

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nuscenes数据集 devkit是为了帮助研究者和开发者更好地利用nuscenes数据集而开发的一套工具和库。nuscenes数据集是一个广泛使用的自动驾驶领域的开源数据集,其中包含了来自于纽约和新加坡的高质量传感器数据和注释。它提供了一个丰富的环境来进行自动驾驶相关的研究和开发。 nuscenes数据集devkit提供了一系列功能来处理、分析和可视化nuscenes数据集。它包括了Python API,可以用于读取和解析nuscenes数据集,提取有用的信息。研究者和开发者可以使用这些功能来快速访问和处理数据,为他们的研究和开发工作节省了大量的时间和精力。 除了数据处理外,nuscenes数据集devkit还包括了一些强大的视觉化工具。它提供了一个交互式的图形界面,可以用于可视化和浏览nuscenes数据集中的传感器数据、注释和场景信息。这对于研究者和开发者来说非常有用,可以帮助他们更好地理解数据,分析结果,并进行模型评估和验证。 此外,nuscenes数据集devkit还提供了一些实用的功能,如路线规划、物体检测和跟踪等。这些功能可以帮助研究者和开发者进行高级驾驶场景的仿真和测试,以及开发自动驾驶系统的算法和模型。 综上所述,nuscenes数据集devkit是一个强大的工具和库,它为研究者和开发者提供了便捷的数据处理、分析和可视化功能,帮助他们更好地利用nuscenes数据集进行自动驾驶相关的研究和开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值