自动驾驶nuScenes数据集——一个KITTI以外的新数据集
1. 数据集简介
(图片来源:https://www.nuscenes.org/data-collection )
nuScenes数据集 是自动驾驶公司nuTonomy建立的大规模自动驾驶数据集,该数据集不仅包含了Camera和Lidar,还记录了雷达数据,是我所知道的唯一一个有雷达数据的数据集。
这个数据集由1000个场景组成(即scenes,这就是该数据集名字的由来),每个scenes长度为20秒,包含了各种各样的情景。在每一个scenes中,有40个关键帧(key frames),也就是每秒钟有2个关键帧,其他的帧为sweeps。关键帧经过手工的标注,每一帧中都有了若干个annotation,标注的形式为bounding box。不仅标注了大小、范围、还有类别、可见程度等等。这个数据集不久前发布了一个teaser版本(包含100个scenes),正式版(1000个scenes)的数据要2019年发布。
这个数据集在sample的数量上、标注的形式上都非常好,记录了车的自身运动轨迹(相对于全局坐标),包含了非常多的传感器,可以用来实现更加智慧的识别算法和感知融合算法。
本文描述了如何在一个新的Google Cloud Platform(下文简称GCP)Compute Engine - VM instance上使用这个数据集,关于如何创建和使用GCP,有很多现成的材料可以学习,作者最早是通过Stanford CS231n课的谷歌云教程学习的谷歌云。本教程所使用的谷歌云镜像参数如下:
参数名称 | 数值 |
---|---|
Machine type | n1-standard-4 (4 vCPUs, 15 GB memory) |
Boot disk and local disks | 100GB SSD persistent disk |
Source image | ubuntu-1604-xenial-v20181030 |
如果读者想在自己的PC机上面使用这个数据集,则可以跳过从Google Bucket把数据拷贝到server的硬盘中的步骤。
1.1 Setup
数据集可以通过注册nuScenes网站后,在 Download 页面下载,里面有五个下载项,其中metadata and annotation 是必须要下载的,其他数据可以根据需要下载。下载后的数据是 tbz2 格式的压缩文件,需要经过两次解压缩。
在 nuScenes-devkit github page 上面有一个可以用来visualization的开发工具。
1.1.1 Python version
如果想要用nuScenes的开发工具,需要Python 3.7版本,具体的安装方式在上文的github上面有提到,但是较为推荐的是在一个虚拟环境下安装python 3.7。
1.1.2 Python virtual environment
nuScenes-devkit github page 的教程中用的是虚拟环境管理包 virtualenvwrapper 来创建虚拟环境,关于虚拟环境,可以参考 这篇文章 或者virtualenvwrapper 和 virtualenv。其实我个人是偏好使用Anaconda内嵌的虚拟环境管理工具的,关于Anaconda与Virtualenv的比较,“You actually can install (some) conda packages within a virtualenv, but better is to use Conda’s own environment manager: it is fully-compatible with pip and has several advantages over virtualenv.”
Anaconda创建新环境的命令为:
conda create --name myenv
创建了新环境以后进入新环境的命令为:
source activate myenv
(其他命令可以查阅conda 文档 )
1.1.3 Storage buckets
想要使用Google Cloud Platform来下载数据集,我主要采取两个方法,一个方法是在terminal中输入wget + [http address],但是如果想要下载nuScenes数据集,直接用wget是不行的,该数据集需要一定的权限才能访问。另一个方法是这篇博客使用的方法——将数据集从我的本地硬盘传到cloud storage的bucket中,再进入GCP VM instance将数据从bucket拷贝到VM instance的硬盘里。过程如下:
- 进入cloud storage创建一个object
- 将数据集上传到object
- 将数据集从buckets拷贝到instance
在拷贝和解压数据集的过程中,VM instance的硬盘空间可能会不够用(数据占50GB),因此可以考虑讲硬盘的内存调大。这就是Google VM instance的方便之处:随时根据需要设置硬件的参数
命令如下
gsutil cp gs://[buckets object name]/[filename] [target folder name]
for example:
gsutil cp gs://[buckets object name]/nuscenes_teaser_meta_v1.tbz2 ./
2. 数据集的使用
- 解压
bzip2 -d [filename]
- 二次解压
tar xf [filename]
PCD文件
文件 nuscenes.py 的第453行
pc = PointCloud.from_file(osp.join(self.nusc.dataroot, pointsensor['filename']))
Metadata
javascript文件中是每一个元数据的表格,可以用token来identify,这些元数据是用来表达数据之间的对应关系的。比如某一个scene对应哪些sample,这个sample有哪些传感器,传感器又有哪些数据。radar 和 lidar 都是用pcd文件记录的数据,camera 是 jpg。
Shortcut
这个数据集中所有的标注是通过json文件完成的,json文件如同为我们定义了一个graph结构,这个graph里的每一个节点是scene, sample, instance, data, category等等,我们可以通过token在这个graph中寻找我们需要的部分,比如说在多个sample关键帧中找到同一个骑自行车的人。
这个数据集的标注中,只有一对一的对应关系,很少有一对多的对应关系,但是有时候这种对应关系又非常重要,比如说给定一个sample,我想要sample中所有的annotation,又或者给定一个instance,我想要得到所有该instance的annotation,于是在nuScenes提供的dev-kit中,为使用者设置了很多的Shortcuts。即整理好了的“一对多”。
开发者提供的函数
开发者在github上提供了可以用来可视化Nuscenes数据集的函数,叫nusenes.py
,在随同提供的Jupyter notebook中这个函数被声明为nusc
。注意,真正在Jupyter notebook中使用的很多函数其实在nusc.explore类中,因此如果要在nusc.explorer中定义新的方法,要在nusc中把shortcut加上。
3. 遇到的问题
3.1 没有足够的空间
3.2 opencv版本问题
在运行Jupyter notebook的时候出现错误
cannot open shared object file: No such file or directory
解决办法
sudo apt-get install libsm6 libxrender1 libfontconfig1
pip install opencv-contrib-python
3.3 Dataset的位置
如果没有把dataset存到根目录下,也可以把它存到nuscenes-devkit的目录下,然后把路径从dataroot='/data/nuscenes'
换成dataroot='./data/nuscenes'。
4. 数据集的可视化
(待填)
自动驾驶nuScenes数据集——一个KITTI以外的新数据集相关推荐
- 自动驾驶深度多模态目标检测和语义分割:数据集、方法和挑战
自动驾驶深度多模态目标检测和语义分割:数据集.方法和挑战 原文地址:https://arxiv.org/pdf/1902.07830.pdf Deep Multi-Modal Object Detec ...
- CODA:自动驾驶中道路目标检测的极端情况数据集
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源丨计算机视觉深度学习和自动驾驶 2022年3月arXiv论文"CODA: A Real- ...
- Christopher Manning:Uber 出售自动驾驶部门是一个标志性事件 | AI日报
为 AI 内行人定制资讯, 帮你一篇尽览 AI 行业要闻. AI消除马赛克,GitHub开源项目上线三天收获近7000星 最近,一个名为 Depix 的 GitHub 项目爆火,上线三天 star 量 ...
- 【转载】模拟器,会是自动驾驶的下一个刺激战场吗?
模拟器,会是自动驾驶的下一个刺激战场吗? 雷锋网 百家号08-2111:36 在亚利桑那州梅萨的南隆摩街和西南大街的拐角处有一个左转黄灯,自动驾驶行业内的人士习惯戏称它为"死亡之地" ...
- Kaggle新赛:Lyft 自动驾驶运动预测,发布迄今最大预测任务数据集
近日,国外著名出行公司 Lyft 在Kaggle 竞赛平台发起自动驾驶汽车的运动预测挑战赛,旨在促进自动驾驶汽车的研究,并发布了迄今最大的运动预测数据集. 任务介绍 挑战参赛者对自动驾驶场景中出现的行 ...
- 线控转向,自动驾驶的下一个标配?
汽车转向系统是汽车上的重要构件,其性能的好坏直接决定了汽车操控性能的优劣,它随着新技术的出现不断推陈出新. 从最初的纯机械转向系统,历经机械式液压助力转向(Hydraulic Power Steeri ...
- 自动驾驶产业链躁动,四维图新能否做好新时代“Tier 1”?
自动驾驶行业的"劲风"又来了. 6月21日,工信部副部长辛国斌在国务院政策例行吹风会上表示,将启动智能网联汽车准入和上路通行试点,他强调,"这里面讲的是L3级,及更高级别 ...
- 对话英特尔副总裁Erez Dagan:自动驾驶引擎盖下的秘密!|《新程序员》
以芯片.摄像头.软件为基石,依托人工智能.大数据等前沿技术,从数据处理.传输.分析到数据安全,纵横于数十年创新经验之上,看半导体巨头英特尔如何布局自动驾驶. 作者 | 屠敏 徐威龙 出品 | < ...
- Lyft开源L5自动驾驶数据集:55000个人工标注的3D注释框架,还有高清空间语义地图...
铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 今天,又有新的自动驾驶数据集开源了. 数据集来自Lyft,官方称作是目前同类产品中最大的公开数据集. 这份L5数据集内容丰富,加入了原始传感 ...
最新文章
- win2003登陸及關機設定
- bzoj 4710 [Jsoi2011]分特产 组合数学+容斥原理
- 在公司的局域网内,组长让你在自己的虚拟机部署项目,大家等着访问测试,该怎么办???...
- [云炬创业基础笔记]第七张创业资源测试14
- JavaFX鼠标点击事件
- 安防摄像头Onvif、RTSP、GB28181转web无插件直播卡顿分析
- C#关键字的个人理解与注释
- java演练 数组的逆序文字玩法 你是猪才怪
- 手把手玩转win8开发系列课程(22)
- telnet不通linux下tomcat端口
- 数学——对数公式log常识回顾
- 基金购买和赎回线下业务
- fastlane build 版本号自增
- [转]在低调中修炼自己
- ISO软件质量度量模型
- 常见的注册表修改大全
- 塔望3W消费战略全案丨火出天际的预制菜,能否拯救开饭焦虑?
- “我祝你不幸并痛苦”——约翰·罗伯茨毕业致辞
- Unity入门03——Unity脚本
- python小玩意——猜数字游戏
热门文章
- 关联分析-问题定义(1)♀️
- 如何解除计算机方向键问题,笔记本键盘上下左右键怎么解锁_笔记本电脑的上下左右键被锁住了如何解决-win7之家...
- SQL语言的四大功能
- 学习全栈在线教育实战项目(尚硅谷) 第一天
- nib but the view outlet was not set 错误的解决办法。
- clips系列二-clips调用外部函数
- 2020-09-19《GNU Radio软件无线电技术》白勇 胡驻华编著 笔记(1)
- Zeal - 离线 API 文档大全
- 如何绘制流程图?绘制流程图在线网站分享
- 【Effective C++ 条款03 笔记】尽可能使用const