mono3d汇总

news2025/1/19 21:31:37

lidar坐标系

lidar坐标系可以简单归纳为标准lidar坐标系和nucense lidar坐标系,参考链接。这个坐标系和车辆的ego坐标系是一致的。

  • 标准lidar坐标系
    opendet3d,mmdetection3d和kitt都i使用了该坐标系
                   up z
                      ^   x front
                      |  /
                      | /
       left y <------ 0

kitti采集平台传感器安装示意图如下,其中红色圆圈标记的为lidar坐标系。
在这里插入图片描述
后面说的global yaw就是目标与’-y’的夹角,与’-y’重合时是0, 与x重合为90度。

  • nucense lidar坐标系
    nucense传感器坐标系示意图如下,可以看出lidar坐标系和和标准lidar坐标系有个90度的旋转关系。
    在这里插入图片描述

local yaw & global yaw

由于透视投影的关系,目标在相平面上的成像会同时收到目标转动和相对相机位移的双重影响。所以引出了local yaw和global yaw。

网络学习的对象为local yaw(下面的 α z \alpha_z αz, 其中 α z = α x + p i / 2 \alpha_z = \alpha_x + pi/2 αz=αx+pi/2), 推理时根据目标位置+local yaw计算出global yaw。

α x \alpha_x αx在kitti数据集中的定义为:

α∈[−π,π],即从 −180∘ 到 180∘。
α=0:目标物体的方向与相机光轴完全对齐(面向相机)。
α>0:目标物体的朝向偏向相机光轴的 左侧(逆时针方向)。
α<0:目标物体的朝向偏向相机光轴的 右侧(顺时针方向)。

部分公司2d目标标注的local yaw:目标与相机z同向重叠:90度,与右侧方向的相机x轴重叠:0度。
global yaw为[-pi, pi]之间,一般正前方为0,左边为90,右边-90. 参考lidar_box3d.py中的定义:

class LiDARInstance3DBoxes(BaseInstance3DBoxes):
   """3D boxes of instances in LIDAR coordinates.

   Coordinates in LiDAR:

   .. code-block:: none

                                up z    x front (yaw=0)
                                   ^   ^
                                   |  /
                                   | /
       (yaw=0.5*pi) left y <------ 0

   The relative coordinate of bottom center in a LiDAR box is (0.5, 0.5, 0),
   and the yaw is around the z axis, thus the rotation axis=2. The yaw is 0 at
   the positive direction of x axis, and increases from the positive direction
   of x to the positive direction of y.

   Attributes:
       tensor (Tensor): Float matrix with shape (N, box_dim).
       box_dim (int): Integer indicating the dimension of a box. Each row is
           (x, y, z, x_size, y_size, z_size, yaw, ...).
       with_yaw (bool): If True, the value of yaw will be set to 0 as minmax
           boxes.
   """
   YAW_AXIS = 2

   @property
   def corners(self) -> Tensor:
       """Convert boxes to corners in clockwise order, in the form of (x0y0z0,
       x0y0z1, x0y1z1, x0y1z0, x1y0z0, x1y0z1, x1y1z1, x1y1z0).

       .. code-block:: none

                                          up z
                           front x           ^
                                /            |
                               /             |
                 (x1, y0, z1) + -----------  + (x1, y1, z1)
                             /|            / |
                            / |           /  |
              (x0, y0, z1) + ----------- +   + (x1, y1, z0)
                           |  /      .   |  /
                           | / origin    | /
           left y <------- + ----------- + (x0, y1, z0)
               (x0, y0, z0)

       Returns:
           Tensor: A tensor with 8 corners of each box in shape (N, 8, 3).
       """
       if self.tensor.numel() == 0:
           return torch.empty([0, 8, 3], device=self.tensor.device)

       dims = self.dims
       corners_norm = torch.from_numpy(
           np.stack(np.unravel_index(np.arange(8), [2] * 3), axis=1)).to(
               device=dims.device, dtype=dims.dtype)

       corners_norm = corners_norm[[0, 1, 3, 2, 4, 5, 7, 6]]
       # use relative origin (0.5, 0.5, 0)
       corners_norm = corners_norm - dims.new_tensor([0.5, 0.5, 0])
       corners = dims.view([-1, 1, 3]) * corners_norm.reshape([1, 8, 3])

       # rotate around z axis
       corners = rotation_3d_in_axis(
           corners, self.tensor[:, 6], axis=self.YAW_AXIS)
       corners += self.tensor[:, :3].view(-1, 1, 3)
       return corners

mmdetection3d box_3d_mode.py中定义的各种坐标系:

class Box3DMode(IntEnum):
   """Enum of different ways to represent a box.

   Coordinates in LiDAR:

   .. code-block:: none

                   up z
                      ^   x front
                      |  /
                      | /
       left y <------ 0

   The relative coordinate of bottom center in a LiDAR box is (0.5, 0.5, 0),
   and the yaw is around the z axis, thus the rotation axis=2.

   Coordinates in Camera:

   .. code-block:: none

               z front
              /
             /
            0 ------> x right
            |
            |
            v
       down y

   The relative coordinate of bottom center in a CAM box is (0.5, 1.0, 0.5),
   and the yaw is around the y axis, thus the rotation axis=1.

   Coordinates in Depth:

   .. code-block:: none

       up z
          ^   y front
          |  /
          | /
          0 ------> x right

   The relative coordinate of bottom center in a DEPTH box is (0.5, 0.5, 0),
   and the yaw is around the z axis, thus the rotation axis=2.
   """

SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation 对local yaw给出了示意图:
在这里插入图片描述
在这里插入图片描述

  • globa2local转换
    参考fcos3d代码:
def _get_target_single(..):
#...
        # change orientation to local yaw
        gt_bboxes_3d[..., 6] = -torch.atan2(
            gt_bboxes_3d[..., 0], gt_bboxes_3d[..., 2]) + gt_bboxes_3d[..., 6]

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

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

相关文章

支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节

支持向量机算法&#xff08;一&#xff09;&#xff1a;像讲故事一样讲明白它的原理及实现奥秘-CSDN博客 支持向量机算法&#xff08;二&#xff09;&#xff1a;层层拆解&#xff0c;精读公式每一处细节-CSDN博客 支持向量机算法&#xff08;一&#xff09;、算法&#xff0…

LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145212097 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…

数据可视化:让数据讲故事的艺术

目录 1 前言2 数据可视化的基本概念2.1 可视化的核心目标2.2 传统可视化手段 3 数据可视化在知识图谱中的应用3.1 知识图谱的可视化需求3.2 知识图谱的可视化方法 4 数据可视化叙事&#xff1a;让数据讲故事4.1 叙事可视化的关键要素4.2 数据可视化叙事的实现方法 5 数据可视化…

数据库开发支持服务

文章目录 前言适用产品服务范围前提条件责任矩阵交互项目 服务流程交付件项目完成标志 前言 数据库开发支持服务是为了达成客户业务系统开发、测试、上线运行提供的具体技术支撑&#xff0c;内容包括数据库开发指导、性能调优、第三方平台对接支持、应用对接与上线支持等。数据…

2024年,我的技术探索与成长之路

2024年&#xff0c;我的技术探索与成长之路 2024年已经过去&#xff0c;作为一名技术爱好者和写作者&#xff0c;我回顾了过去一年在博客上记录的点滴&#xff0c;感慨良多。这一年&#xff0c;我不仅见证了技术的飞速发展&#xff0c;也在不断学习和实践中找到了自己的成长方向…

机器学习经典无监督算法——聚类K-Means算法

目录 算法原理 算法步骤 算法API 算法导入 API参数理解 算法实现 算法原理 Kmeans 算法是一种无监督的聚类算法&#xff0c;目的是将数据集中的样本划分到 K 个不同的簇中。 聚类&#xff1a;将数据集中相似的数据点归为一组或一个簇的过程。 数据集&#xff1a;一组相…

【MySQL索引:B+树与页的深度解析】

文章目录 MySQL索引&#xff1a;B树与页的深度解析1. 索引使用的数据结构——B树1.1 B树介绍1.2 B树的特点1.3 B树和B树的对比 2. MySQL中的页2.1 页的介绍2.2 页主体2.3 页目录2.4 B树在MySQL索引中的应用 MySQL索引&#xff1a;B树与页的深度解析 在MySQL数据库中&#xff0…

新阿里云买服务器配置需手动配置80端口

新买阿里云服务器需手动配置80&#xff0c;端口才可以访问nginx CentOS系统 安装nginx 1. 安装 Nginx yum install nginx 2. 启动 Nginx 服务 systemctl start nginx 3. 修改默认网页 cd /usr/share/nginx/ echo "666" >index.html cat index.html 访问ngin最后…

机器学习——什么是代价函数? 下

“上次课讲了机器学习的模型表示,讲了一个线性模型的例子,那怎样在可能的拟合直线里选择一条最合适的呢?有没有数学的方法让这个直线合适还是不合适变得可以量化呢?这就要说代价函数了。” 本次课前半段内容非常简单,带领我们一起复习初中平面几何的知识,后半段给出了代价…

LeetCode - #187 Swift 实现重复的DNA序列

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

ReactiveReactor Core

Reactive&Reactor Core 一、概述1、问题2、优势3、发展 二、Reactive Streams1、依赖2、API 三、Project Reactor1、概述2、并发模型3、入门1、依赖2、Flux和Mono3、空流&错误流 4、订阅响应式流1、常见订阅2、自定义订阅 5、API1、index2、timestamp3、any4、map5、fi…

STL容器-- list的模拟实现(附源码)

STL容器-- list的模拟实现&#xff08;附源码&#xff09; List的实现主要考察我们对list这一容器的理解&#xff0c;和代码的编写能力&#xff0c;通过上节对list容器的使用&#xff0c;我们对list容器已经有了一些基本的了解&#xff0c;接下来就让我们来实现一些list容器常见…

【转】厚植根基,同启新程!一文回顾 2024 OpenHarmony 社区年度工作会议精彩瞬间

在数字化浪潮奔腾不息的今天&#xff0c;开源技术已成为推动科技创新与产业发展的强大引擎。2025年1月10日-11日&#xff0c;OpenAtom OpenHarmony&#xff08;开放原子开源鸿蒙&#xff0c;以下简称“OpenHarmony”或“开源鸿蒙”&#xff09;社区2024年度工作会议于深圳盛大启…

蓝桥杯备考:堆和priority queue(优先级队列)

堆的定义 heap堆是一种特殊的完全二叉树&#xff0c;对于树中的每个结点&#xff0c;如果该结点的权值大于等于孩子结点的权值&#xff0c;就称它为大根堆&#xff0c;小于等于就叫小根堆&#xff0c;如果是大根堆&#xff0c;每个子树也是符合大根堆的特征的&#xff0c;如果是…

力扣682

from typing import Listclass Solution:def calPoints(self, operations: List[str]) -> int:a [] # 用于存储有效得分的列表for op in operations:if op.isdigit() or (op[0] - and op[1:].isdigit()): # 如果是整数&#xff08;包括负数&#xff09;a.append(int(op)…

考研计算机组成原理——零基础学习的笔记

第一章 研究计算机硬件的学科。 1.计算机系统概述 计算机系统硬件软件&#xff08;系统软件&#xff1a;比如操作系统、数据库管理系统、标准程序库等&#xff0c;应用软件&#xff1a;QQ等&#xff09; 1.2计算机的层次结构 1.2.1计算机硬件的基本组成 冯诺伊曼计算机&a…

海康工业相机的应用部署不是简简单单!?

作者&#xff1a;SkyXZ CSDN&#xff1a;SkyXZ&#xff5e;-CSDN博客 博客园&#xff1a;SkyXZ - 博客园 笔者使用的设备及环境&#xff1a;WSL2-Ubuntu22.04MV-CS016-10UC 不会吧&#xff1f;不会吧&#xff1f;不会还有人拿到海康工业相机还是一脸懵叭&#xff1f;不会还有人…

计算机网络 (49)网络安全问题概述

前言 计算机网络安全问题是一个复杂且多维的领域&#xff0c;它涉及到网络系统的硬件、软件以及数据的安全保护&#xff0c;确保这些元素不因偶然的或恶意的原因而遭到破坏、更改或泄露。 一、计算机网络安全的定义 计算机网络安全是指利用网络管理控制和技术措施&#xff0c;保…

STM32 FreeRTOS中断管理

目录 FreeRTOS的中断管理 1、STM32中断优先级管理 2、FreeRTOS任务优先级管理 3、寄存器和内存映射寄存器 4、BASEPRI寄存器 5、FreeRTOS与STM32中断管理结合使用 vPortRaiseBASEPRI vPortSetBASEPRI 6、FromISR后缀 7、在中断服务函数中调用FreeRTOS的API函数需注意 F…

操作系统 期末重点复习

操作系统 期末重点复习 必会 课后题摘要 第二章&#xff1a; 在操作系统中为什么要引入进程概念&#xff1f;它会产生什么样的影响? 为了使程序在多道程序环境下能并发执行&#xff0c;并对并发执行的程序加以控制和描述&#xff0c;在操作系统中引入了进程概念。影响: 使程…