nuscenes数据集分析

nuscenes数据集分析

标注与总体介绍

在这里插入图片描述

nuscenes包含有相机、激光雷达、毫米波雷达、IMU与GPS等设备提供的数据。它的数据采集了1000个场景,每个场景大约有20s,针对目标检测任务,对23类物体进行标注,且以2Hz的频率提供精确的三维目标框标注。此外,还有物体级别的属性如可见度、姿态、活动状态等。
具体来说,对于标注数据,标注的要求有以下几点:

  • 一个物体不超过一个框,确保所有点在框中且在图像视角看着正常。
  • 如果对于一个物体能够判断出他的位置形状等,且至少有一个点云,就标注它。
  • 框要紧凑,如果目标物体有外延如胳膊腿等要包含进来,但像车的侧边镜或超过一定高度的外延不需要考虑。如果目标携带其他物体,需要包含进来,若多个目标携带一个东西,则这个东西只能包含在一个框中。
  • 如果由于定位误差导致一个静止的物体移动,同样要标注框。对于点云稀疏的物体,用图像辅助框进行调整。

标注的物体类别有23类,

  • 此外他们还有属性Visibility,它代表该物体在全景视角下的可见程度。
  • 对于有四个轮子以上的汽车有属性Vehicle Activity,它有三种选择,Parked代表静止的,Stopped代表静止的,但是司机在上面,Moving代表在移动。
  • 对于自行车、摩托车与个人便携移动工具,有属性Has Ride,它有Yes与No代表是否有人在上面。
  • 对于场景中的人有属性Human Activity,可以有Sitting or Lying Down,Standing与Moving三种。

在元数据中,maps文件夹就是我们采集场景的4张地图。
在这里插入图片描述

数据格式介绍

所有的标注数据与元数据都以关系数据库的形式组织起来,接下来将分别介绍。
在这里插入图片描述
下面三个记录了我们需要标注的属性

  • 对于visibility.json,记录了四种不同程度的可见程度。
  • 对于attribute.json,记录了动态物体的运动状态,也就是上一节说到的Vehicle Activity等等,通过token进行标识。
  • 对于category,记录的就是类别信息,一共有23类。

下面四个则是我们汽车的一些记录信息,如传感器参数,地图等。

  • 对于log,记录的是数据采集的日志信息,它包含以下的信息,vehicle代表车名,date_captured代表数据采集日期,location代表采集地点,logfile代表数据日志文件名,可能多个场景对应同个日志。
  • 对于map,它描述了每段数据采集的语义地图,包含有category表示语义先验图,filename代表地图文件路径,log_tokens为一个列表,包含所有在该地图下进行数据采集的log_token。
  • 对于sensor,它记录了我们的传感器,即6个相机,lidar与radar等,包含有channel表示它具体的通道,如CAM_FRONT,CAM_BACK_LEFT等等,modality标识它的传感器类别。
  • 对于calibrated_sensor,他记录了对传感器标定的参数信息,其中的sensor_token定义传感器对象,translation与rotation则是外参,camera_intrinsic则是相机内参矩阵。

下面四个是关于具体采集数据时的一些信息记录。

  • 对于ego_pose,他记录了具体时间戳下的车辆相对于世界坐标系的外参,即translation与rotation,还有timestamp记录时间戳。
  • 对于scene,他是从log中提取的连续的20s长的连续帧,可能多个scene取自一个log。包含的信息有,log_token告诉我们来自哪个log,nbr_samples告诉我们samples的数量,first_sample_token代表该场景下第一个sample的token,last_sample_token代表该场景下最后一个sample,name即场景的名字,description是场景详细描述。
  • 对于sample,它代表关键采样帧,频率为2HZ,包含以下信息,timestamp代表时间戳信息,prev与next代表前一个与下一个sample的token,scene_token对应的是该sample属于的场景token。
  • 对于sample_data,代表传感器采集的原始数据。sample_token为所属的sample的token,要选择时间上最接近的;ego_pose_token代表汽车位姿信息;calibrated_sensor_token代表传感器内外参信息;filename代表文件的相对路径;fileformat为数据文件的格式;width与height代表如果是图片,它的宽高;timestamp为时间戳;is_key_frame代表sample_data是否是关键帧。next与prev代表在该场景下该传感器顺着时间向前向后的一个Sample data。

下面是标注信息的介绍

  • 对于instance,代表的就是单个物体实例。category_token指向类别,nbr_annotations为该实例被标注的数量。first_annotation_token与last_annotation_token指向sample_annotation,代表第一次与最后一次被标注的token,指向sample_annotation。
  • 对于sample_annotation,它是坐标框信息,定义了在sample中看到的物体的位置,所有位置信息都是全局坐标系下的,sample_token代表对应的sample,instance_token代表对应的实例,attribute_tokens与attribute_tokens即属性,translation代表框的中心位置,size代表框的大小,rotation代表框的朝向,num_lidar_pts代表此边界框内的激光雷达点数,next与prev指向自身,代表同一物体之前之后的下一个标注token。

nuscenes数据集的使用

在这里以mini数据集为例

#导入nuscenes开发包,并把数据集加载进来,得到对象nusc。
from nuscenes.nuscenes import NuScenes
nusc = NuScenes(version='v1.0-mini', dataroot='/data/sets/nuscenes', verbose=True)
#可以使用nusc访问我们的场景,具体展示如下
my_scene = nusc.scene[0]
print(my_scene)

在这里插入图片描述

#接下来获得该场景下的第一个sample
first_sample_token = my_scene['first_sample_token']
my_sample = nusc.get('sample', first_sample_token)
print(my_sample)
#展示如下所示,它提功了该sample对应的数据sample_data以及所需要的标注信息sample_annotation。

在这里插入图片描述

#接下来看data数据是什么样子的
sensor = 'CAM_FRONT'
cam_front_data = nusc.get('sample_data', my_sample['data'][sensor])
print(cam_front_data)
#此外,还可以对此进行渲染,如图所示
nusc.render_sample_data(cam_front_data['token'])

在这里插入图片描述
在这里插入图片描述

#这个则是获取标注信息,同样可以可视化。
my_annotation_token = my_sample['anns'][18]
my_annotation_metadata =  nusc.get('sample_annotation', my_annotation_token)
nusc.render_annotation(my_annotation_token)

在这里插入图片描述
在这里插入图片描述

总结

nuscenes的开发工具主要就是加载数据集并让你可以用字典的方式访问它,并且可以对其进行渲染,并通过token标识获取你想要的东西。具体的操作可以在官网查看,本篇文章讲述了一些核心的方法,最主要还是数据库的架构得看懂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript学习教程,从入门到精通,JavaScript 运算符及语法知识点详解(8)

JavaScript 运算符及语法知识点详解 一、JavaScript 运算符 1. 算术运算符 用于执行数学运算: 加法- 减法* 乘法/ 除法% 取模(余数) 递增-- 递减** 幂运算(ES6) let a 10, b 3; console.log(a b); // 13 conso…

Shell脚本的学习

编写脚本文件 定义以开头:#!/bin/bash #!用来声明脚本由什么shell解释,否则使用默认shel 第一步:编写脚本文件 #!/bin/bash #注释 echo "这是输出" 第二步:加上执行权限:chmod x 脚本文件名.sh 第三步&…

在线PDF文件拆分工具,小白工具功能实用操作简单,无需安装的文档处理工具

小白工具中的在线 PDF 文件拆分工具是一款功能实用、操作便捷的文档处理工具,以下是其具体介绍: 操作流程 上传 PDF 文档:打开小白工具在线PDF文件拆分工具 - 快速、免费拆分PDF文档 - 小白工具的在线 PDF 文件拆分页面,通过点击 …

数字的乘阶运算

求数字的乘阶: 例如:6的乘阶运算:6*5*4*3*2*1 例如:3的乘阶运算:3*2*1 class Program{static void Main(string[] args){Console.WriteLine("请输入数字:");int num_01 Convert.ToInt32 (Con…

tcp/ip攻击及防范

作为高防工程师,我每天拦截数以万计的恶意流量,其中TCP/IP协议层攻击是最隐蔽、最具破坏性的威胁之一。常见的攻击手法包括: 1. SYN Flood攻击:攻击者发送大量伪造的SYN包,耗尽服务器连接资源,导致正常用…

C++类成员内存分布详解

本文将探讨C类中成员变量的内存分布情况,包括普通成员、静态成员、虚函数等不同情况下的内存布局。 一、基本成员内存布局 1. 普通成员变量 普通成员变量按照声明顺序在内存中连续排列(受访问修饰符和内存对齐影响): class Nor…

计算机视觉——为什么 mAP 是目标检测的黄金标准

概述 在目标检测领域,有一个指标被广泛认为是衡量模型性能的“黄金标准”,它就是 mAP(Mean Average Precision,平均精确率均值)。如果你曾经接触过目标检测模型(如 YOLO、Faster R-CNN 或 SSD)…

C语言单链表的增删改补

目录 (一)单链表的结构定义及初始化 (二)单链表的尾插,头插 (三)单链表的尾删,头删 (四)单链表的查找,删除,销毁 单链表是数据结构课程里的第二个数据结构。单链表在逻辑结构是连续的,在物理…

Android10.0 framework第三方无源码APP读写断电后数据丢失问题解决

1.前言 在10.0中rom定制化开发中,在某些产品开发中,在某些情况下在App用FileOutputStream读写完毕后,突然断电 会出现写完的数据丢失的问题,接下来就需要分析下关于使用FileOutputStream读写数据的相关流程,来实现相关 功能 2.framework第三方无源码APP读写断电后数据丢…

杀戮尖塔(Slay The Spire) 的全新角色模组 - 女巫

女巫(The Witch) 杀戮尖塔(Slay The Spire) 的全新角色模组 女巫模组为游戏增添了超过 75 张新卡牌和 4 个全新遗物,围绕 诅咒(Curses) 展开独特的玩法体验。她的起始遗物 黑猫(Bl…

AI开发学习路线(闯关升级版)

以下是一份轻松版AI开发学习路线,用「闯关升级」的方式帮你从零开始变身AI开发者,每个阶段都配有有趣的任务和实用资源,保证不枯燥、可落地!👇 目录 🔰 新手村:打基础(1-2个月&…

迭代器模式深度解析与实战案例

一、模式定义 迭代器模式(Iterator Pattern) 是一种行为设计模式,提供一种方法顺序访问聚合对象的元素,无需暴露其底层表示。核心思想是将遍历逻辑从聚合对象中分离,实现 遍历与存储的解耦。 二、核心组件 组件作用…

SSH远程工具

一、常见SSH远程工具 工具开源跨平台多标签文件传输高级功能价格Xshell❌Win✔️✔️脚本、会话管理免费/商业版Tabby✔️全平台✔️✔️插件扩展免费MobaXterm❌Win✔️✔️集成工具集免费/付费SecureCRT❌Win/macOS/Linux✔️✔️企业级加密$129+PuTTY✔️全平台❌❌基础连接…

VUE中的路由处理

1.引入,预处理main.ts import {} from vue-router import { createRouter, createWebHistory } from vue-router import HomePages from @/pages/HomePages.vue import AboutPage from @/pages/AboutPage.vue import NewsPage from @/pages/NewsPage.vue //1. 配置路由规…

编程助手fitten code使用说明(超详细)(vscode)

这两年 AI 发展迅猛,作为开发人员,我们总是追求更快、更高效的工作方式,AI 的出现可以说改变了很多人的编程方式。 AI 对我们来说就是一个可靠的编程助手,给我们提供了实时的建议和解决方,无论是快速修复错误、提升代…

Opencv计算机视觉编程攻略-第九节 描述和匹配兴趣点

一般而言,如果一个物体在一幅图像中被检测到关键点,那么同一个物体在其他图像中也会检测到同一个关键点。图像匹配是关键点的常用功能之一,它的作用包括关联同一场景的两幅图像、检测图像中事物的发生地点等等。 1.局部模板匹配 凭单个像素就…

C++内存管理优化实战:提升应用性能与效率

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle…

17-产品经理-创建发布

点击“发布”-“创建发布”。 填写发布名称,选择测试的版本。还可以设置此次发布是否为“里程碑”。 点击“保存”后,进入该发布详情页面。需要为此次发布关联需求、已解决BUG、以及遗留BUG。可以通过设置条件,进行“搜索”,然后批…

Axure RP9.0教程 | 内联框架 对应html 元素中的iframe标签 (打开内部页面和外部网址)

文章目录 引言I 打开内部页面II 打开外部网址操作效果引言 应用场景: 选择右侧不同栏目,左侧内容发生变化 I 打开内部页面 在公用元件库中找到内联框架图标,将其拖到画布中,设置其宽、高;在右侧添加三个按钮,分别用来跳转三个不同的页面;在内部框架中,添加三个子页面,…

在1panel中安装WebUI

如果需要建站,那得选安装Openresty。点击应用商店,安装 Openresty 接下来安装Ollama,可以部署本地模型提供给WebUi平台使用 最后是安装 WebUi,安装时需要填写Ollama的地址: 容器地址:30000 这些安装都很方便&#xf…