当前位置: 首页 > article >正文

​BEV和OCC学习-3:mmdet3d 坐标系

目录

坐标系

转向角 (yaw) 的定义

框尺寸的定义

与支持的数据集的原始坐标系的关系

KITTI

Waymo

NuScenes

Lyft

ScanNet

SUN RGB-D

S3DIS


坐标系

坐标系 — MMDetection3D 1.4.0 文档https://mmdetection3d.readthedocs.io/zh-cn/latest/user_guides/coord_sys_tutorial.html

  • 相机坐标系 – 大多数相机的坐标系,在该坐标系中 y 轴正方向指向地面,x 轴正方向指向右侧,z 轴正方向指向前方。
  • 激光雷达坐标系 – 众多激光雷达的坐标系,在该坐标系中 z 轴负方向指向地面,x 轴正方向指向前方,y 轴正方向指向左侧。
  • 深度坐标系 – VoteNet、H3DNet 等模型使用的坐标系,在该坐标系中 z 轴负方向指向地面,x 轴正方向指向右侧,y 轴正方向指向前方。

三个坐标系的图示如下:

上面三张图是 3D 坐标系,下面三张图是鸟瞰图。以后我们将坚持使用本教程中定义的三个坐标系。

转向角 (yaw) 的定义

在目标检测中,我们选择一个轴作为重力轴,并在垂直于重力轴的平面 $\Pi$ 上选取一个参考方向,那么参考方向的转向角为 0,在Pi上的其他方向有非零的转向角,其角度取决于其与参考方向的角度。目前,对于所有支持的数据集,标注不包括俯仰角 (pitch) 和滚动角 (roll),这意味着我们在预测框和计算框之间的重叠时只需考虑转向角 (yaw)。

在 MMDetection3D 中,所有坐标系都是右手坐标系,这意味着如果从重力轴的负方向(轴的正方向指向人眼)看,转向角 (yaw) 沿着逆时针方向增加

下图显示,在右手坐标系中,如果我们设定 x 轴正方向为参考方向,那么 y 轴正方向的转向角 (yaw) 为\frac{Pi}{2}

                     z 上  y 前 (yaw=0.5*pi)^    ^|   /|  /| /|/
左 (yaw=pi)    ------ 0 ------> x 右 (yaw=0)

对于一个框来说,其转向角 (yaw) 的值等于其方向减去一个参考方向。在 MMDetection3D 的所有三个坐标系中,参考方向总是 x 轴的正方向,而如果一个框的转向角 (yaw) 为 0,则其方向被定义为与 x 轴平行。框的转向角 (yaw) 的定义如下图所示。

  y 前^      框的方向 (yaw=0.5*pi)/|\        ^|        /|\|     ____|____|    |    |    ||    |    |    |
__|____|____|____|______\ x 右|    |    |    |      /|    |    |    ||    |____|____||

框尺寸的定义

框尺寸的定义与转向角 (yaw) 的定义是分不开的。在上一节中,我们提到如果一个框的转向角 (yaw) 为 0,它的方向就被定义为与 x 轴平行。那么自然地,一个框对应于 x 轴的尺寸应该是 $dx$。但是,这在某些数据集中并非总是如此(我们稍后会解决这个问题)。

下图展示了 x 轴和dx,y 轴和dy 对应的含义。

y 前^      框的方向 (yaw=0.5*pi)/|\        ^|        /|\|     ____|____|    |    |    ||    |    |    | dx
__|____|____|____|______\ x 右|    |    |    |      /|    |    |    ||    |____|____||         dy

注意框的方向总是和dx 边平行。

y 前^     _________/|\   |    |    ||    |    |    ||    |    |    | dy|    |____|____|____\  框的方向 (yaw=0)|    |    |    |    /
__|____|____|____|_________\ x 右|    |    |    |         /|    |____|____||         dx|

与支持的数据集的原始坐标系的关系

KITTI

KITTI数据集的原始标注是在相机坐标系下的,详见 get_label_anno。在 MMDetection3D 中,为了在 KITTI 数据集上训练基于激光雷达的模型,首先将数据从相机坐标系转换到激光雷达坐标,详见 get_ann_info。对于训练基于视觉的模型,数据保持在相机坐标系不变

在 SECOND 中,框的激光雷达坐标系定义如下(鸟瞰图):

对于每个框来说,尺寸为 $(w, l, h)$,转向角 (yaw) 的参考方向为 y 轴正方向。更多细节请参考代码库。

我们的激光雷达坐标系有两处改变:

  • 转向角 (yaw) 被定义为右手而非左手,从而保持一致性;

  • 框的尺寸为 $(l, w, h)$ 而非 $(w, l, h)$,由于在 KITTI 数据集中 $w$ 对应 $dy$,$l$ 对应 $dx$。

Waymo

我们使用 Waymo 数据集的 KITTI 格式数据。因此,在我们的实现中 KITTI 和 Waymo 也共用相同的坐标系。

NuScenes

NuScenes 提供了一个评估工具包,其中每个框都被包装成一个 Box 实例。Box 的坐标系不同于我们的激光雷达坐标系,在 Box 坐标系中,前两个表示框尺寸的元素分别对应 $(dy, dx)$ 或者 $(w, l)$,和我们的表示方法相反。更多细节请参考 NuScenes 教程。读者可以参考 NuScenes 开发工具,了解 NuScenes 框 的定义和 NuScenes 评估的过程。

Lyft

就涉及坐标系而言,Lyft 和 NuScenes 共用相同的数据格式。请参考官方网站获取更多信息。

ScanNet

ScanNet 的原始数据不是点云而是网格,需要在我们的深度坐标系下进行采样得到点云数据。对于 ScanNet 检测任务,框的标注是轴对齐的,并且转向角 (yaw) 始终是 0。因此,我们的深度坐标系中转向角 (yaw) 的方向对 ScanNet 没有影响。

SUN RGB-D

SUN RGB-D 的原始数据不是点云而是 RGB-D 图像。我们通过反投影,可以得到每张图像对应的点云,其在我们的深度坐标系下。但是,数据集的标注并不在我们的系统中,所以需要进行转换。

将原始标注转换为我们的深度坐标系下的标注的转换过程请参考 sunrgbd_data_utils.py。

S3DIS

在我们的实现中,S3DIS 与 ScanNet 共用相同的坐标系。然而 S3DIS 是一个仅限于分割任务的数据集,因此没有标注是坐标系敏感的。

http://www.lryc.cn/news/2399206.html

相关文章:

  • [蓝桥杯]图形排版
  • 【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】
  • CloudFront 加速详解:AWS CDN 怎么用?
  • 《高级架构师》------- 考后感想
  • 【iOS】YYModel源码解析
  • C++算法训练营 Day6 哈希表(1)
  • 【C语言编译与链接】--翻译环境和运行环境,预处理,编译,汇编,链接
  • 【JavaEE】多线程
  • 【项目】在线OJ(负载均衡式)
  • 贪心算法应用:在线租赁问题详解
  • torch.zeros()用法简介
  • Prj10--8088单板机C语言8259测试(1)
  • 3步在小米13手机跑DeepSeek R1
  • 数智管理学(十六)
  • 注销微软账户
  • Ubuntu 服务器软件更新,以及常用软件安装 —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录 3
  • Mysql常用知识3:Kafka和数据库优化
  • Milvus单机模式安装和试用
  • 飞牛NAS+Docker技术搭建个人博客站:公网远程部署实战指南
  • 刷leetcode hot100返航必胜版--链表6/3
  • C# 序列化技术全面解析:原理、实现与应用场景
  • isp调试 blend模式指什么
  • electron定时任务,打印内存占用情况
  • Gitee Wiki:以知识管理赋能 DevSecOps,推动关键领域软件自主演进
  • 学习STC51单片机24(芯片为STC89C52RCRC)
  • LabVIEW基于 DataSocket从 OPC 服务器读取数据
  • 阿里云无影云桌面深度测评
  • 【208】VS2022 C++ 32位整数和unsigned char数组之间互相转换
  • 数据库技术
  • 深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式