nuScenes数据集及mmdetection3d中的相关处理

news2024/11/24 14:36:19

1. nuScence数据集简单介绍

数据集官网:https://www.nuscenes.org

论文:https://arxiv.org/abs/1903.11027

官方github页面:GitHub - nutonomy/nuscenes-devkit: The devkit of the nuScenes dataset.

1.1 坐标系的定义

nuScence数据集共有5类坐标系,定义分别如下:

注:全局坐标系的原点位于该场景地图左上角(该信息对可视化有帮助)。

nuScenes同时也提供了各传感器与自车坐标系、自车坐标系与全局坐标系之间的坐标平移矩阵与旋转矩阵(四元数表达),以及各相机的内参矩阵。

1.2 激光雷达点云

nuScenes数据集使用32线激光雷达,垂直方向的视野为−30.67°−30.67°到10.67°10.67°,水平方向上有360°360°视野,一帧测量的次数为1086。采样频率为20Hz,但每10帧才有标注信息(这些帧称为关键帧,存储在samples文件夹中;其余无标注的帧称为非关键帧,存储在sweeps文件夹中)。每一个序列的长度约为20s。

上述数据来源:https://arxiv.org/abs/2205.13764

nuScence数据集的激光雷达点云包含5个通道,分别表示x,y,zx,y,z,强度(0~255的整数值)和激光束编号(0~31的整数)。

1.3 边界框的标注

边界框的标注信息位于全局坐标系下,包含中心位置、尺寸(顺序为w,l,hw,l,h)、角度(四元数表达)、速度、属性、包含的激光雷达/雷达点数量等。

实际标注的类别有很多。但通常,评估时考虑的10个类别如下:

2. mmdetection3d中,nuScenes数据集info文件的生成

当使用nuScenes的mini数据集时,在 mmdetection3d目录下执行:

python tools/create_data.py nuscenes --root-path $数据集根目录$ --version v1.0-mini --extra-tag nuscenes --out-dir $数据集根目录$

当使用完整数据集时,执行

python tools/create_data.py nuscenes --root-path $数据集根目录$ --version v1.0 --extra-tag nuscenes --out-dir $数据集根目录$

会在数据集根目录下生成5个文件和一个内含bin文件的文件夹。

由于mmdetection3d默认的pipeline只涉及 nuscenes_infos_train.pklnuscenes_infos_val.pkl 这两个文件,因此本文只讨论这两个文件的由来和内容。

2.1 create_data.py做了什么

与 nuscenes_infos_train.pklnuscenes_infos_val.pkl的生成有关的函数为nuscenes_converter.create_nuscenes_infos()函数,该函数除了使用nuScenes工具包从数据集文件中获取信息外,还对获取的信息进行了下列处理:

  • 计算各传感器(相机、非关键帧激光雷达)到关键帧激光雷达的坐标变换矩阵(平移矩阵+旋转矩阵):由于各传感器采样数据不完全同步,记传感器采集数据的时刻为t’t’,激光雷达采集数据的时刻为tt,则坐标变换的流程如下

  • 将边界框速度从全局坐标系下转换到激光雷达坐标系下,得到vx,vyvx​,vy​。

  • 使用nuScenes的工具包将边界框的中心位置和角度转换到激光雷达坐标系下(调用nusc.get_sample_data方法),得到中心位置cx,cy,czcx​,cy​,cz​;将旋转角四元数转换为欧拉角,取偏航角θθ(弧度制,与xx轴的夹角)。

  • 根据边界框内的激光雷达点数和雷达点数,计算边界框的有效性(至少包含一个激光雷达点或雷达点时有效)。

  • 构建边界框表达:(cx,cy,cz,l,w,h,θ)(cx​,cy​,cz​,l,w,h,θ)。

  • 将信息整理为2.2节所述的info文件格式并保存。

与其余文件的生成有关的函数为nuscenes_converter.export_2d_annotation()函数和create_groundtruth_database()函数,关于后者的生成过程、文件说明及使用见此文。

点击nuScenes数据集及mmdetection3d中的相关处理 - 古月居 (guyuehome.com)可查看全文

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

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

相关文章

cpp学习记录06:文件操作与模板

文件操作 对文件操作需要包含头文件<fstream> 文件类型&#xff1a; 文本文件&#xff1a;以文本ASCII码形式储存 二进制文件&#xff1a;以文本的二进制形式储存 操作文件三大类&#xff1a; ofstream&#xff1a;写操作 ifstream&#xff1a;读操作 fstream&…

以知识图谱结构为Prompt框架,帮LLM快速找出因果关系生成更精准内容

因果关系提取一直是LLM领域一个热门的研究方向&#xff0c;正如我上一篇文章中介绍的&#xff0c;我们在制定决策和科学研究时&#xff0c;往往需要LLM具有非常稳健的因果推理能力。幸运的是&#xff0c;恰巧知识图谱结构作为Prompt(“KG Structure as Prompt”&#xff09;能够…

做一个能和你互动玩耍的智能机器人之六-装配

openbot小车&#xff0c;最简单的配件。一个小车支架或者底盘&#xff0c;四个马达&#xff0c;最好是双层的&#xff0c;下层安装马在&#xff0c;上层电池和电源盒&#xff0c;L298N&#xff0c;arduino&#xff0c;手机支架&#xff0c;根据需要配置蓝牙&#xff0c;超声波等…

Arrays、Lambda表达式、Collection集合

1. Arrays 1.1 操作数组的工具类 方法名说明public static String toString(数组)把数组拼接成一个字符串public static int binarySearch(数组,查找的元素)二分查找法查找元素public static int[] copyOf(原数组,新数组长度)拷贝数组public static int[] copyOfRange(原数组…

接口自动化测试mock框架模块实战

前言 mock的介绍 py3已将mock集成到unittest库中&#xff1b; 为的就是更好的进行单元测试&#xff1b; 简单理解&#xff0c;模拟接口返回参数&#xff1b; 通俗易懂&#xff0c;直接修改接口返回参数的值&#xff1b; mock的作用 1、解决依赖问题&#xff0c;达到解耦作用…

基于Spring前后端分离版本的论坛

基于Spring前后端分离版本的论坛系统 PP论坛地址系统设计逻辑交互图数据库设计工程结构概述注册功能实现展示注册交互图参数要求接口规范后端具体实现前端数据集成 接口拦截器实现mybatis生成类与映射文件改造session存储到 redis加盐算法实现部分Bug调试记录项目测试记录Postm…

关于正点原子imx6ull-mini在写触摸驱动时,一直挂载不上驱动,就是没有一些信息反馈

/** 设备树匹配表 */ const struct of_device_id gt9147_of_match_table[] {{.compatible "goodix,gt9147" },{ /* sentinel */ } };const struct of_device_id gt9147_of_match_table[] {{.compatible "goodix&#xff0c;gt9147"},{} }; 找了俩小时…

高频面试题全攻略:从算法到解题技巧

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…

基于宝塔面板稳定快速安装 ssl 证书脚本

背景 我通过AI制作了不少关于签发ssl证书的脚本&#xff0c;目的是方便无脑安装&#xff0c;不需要懂代码。 但全都是基于acme.sh这个工具来设计的脚本&#xff0c;而且证书申请有点慢&#xff0c;有时还会申请失败。 然后我发现了certbot, 安装证书可谓神速&#xff01; c…

[米联客-安路飞龙DR1-FPSOC] UDP通信篇连载-04 IP层程序设计

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

全面解析PHP反序列化漏洞:原理、复现与防御

文章目录 概念序列化数据的含义魔术方法魔术方法的使用construct&#xff0c;destructtoStringcallgetsetsleepwakeupissetunsetinvoke 原生态反序列化漏洞概念种类复现 wakeup长度绕过产生原因条件复现 基本题型源码解读 在Web应用安全领域&#xff0c;PHP反序列化漏洞常常被视…

Tomcat 使用和配置文件(详解)

一.tomcat 介绍 1. tomcat 概述 自从JSP发布之后&#xff0c;推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后&#xff0c;开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器&#xff0c;当然同时也支持 Servlet&#xff0c;这样Tomcat就诞…

MySQL数据库误删恢复--超详细

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Tensorflow——第三讲神经网络八股

前两讲我们学习了使用tensorflow原生代码搭建神经网络&#xff0c;本讲主要学习使用Tensorflow API&#xff1a;tf.keras搭建神经网络 一、搭建网络八股Sequential 六步法&#xff1a; 1.import&#xff1a;import 相关模块&#xff0c;如 import tensorflow as tf 2.train…

2024年7月30日~2024年8月5日周报

一、前言 上周继续修改论文&#xff0c;并阅读了两篇论文。 本周主要修改论文、完成实验、参加一些组会与论文讨论会&#xff0c;并配置了torch环境。 二、完成情况 2.1 论文符号系统注意事项 数学符号应该有唯一性&#xff0c;不能与其他符号造成误解&#xff1b;W_{\mathr…

c++初阶-----适配器---priority_queue

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

极狐GitLab CICD Catalog Beta 功能介绍

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

【Python】数据类型之列表(下)

&#xff08;6&#xff09;清空列表 功能&#xff1a;clear() 代码示例&#xff1a; &#xff08;7&#xff09;根据值获取索引&#xff08;从左到右找到第一个返回索引&#xff09;【慎用&#xff0c;找不到报错】 功能&#xff1a;index(xyz)&#xff0c;xyz为数据类型。 …

OpenAI gym player mode

题意&#xff1a;OpenAI gym 的自定义模式 问题背景&#xff1a; Does anyone know how to run one of the OpenAI gym environments as a player. As in letting a human player play a round of cart pole? I have seen that there is env.mode human but I have not been…

波兰表达式求值

from operator import add, sub, muldef div(x, y):# 使用整数除法的向零取整方式return int(x / y) if x * y > 0 else -(abs(x) // abs(y))class Solution(object):op_map {: add, -: sub, *: mul, /: div}def evalRPN(self, tokens: List[str]) -> int:stack []for …