论文笔记:Point Cloud Forecasting as a Proxy for 4D Occupancy Forecasting(1)

论文笔记:Point Cloud Forecasting as a Proxy for 4D Occupancy Forecasting(1)

方法

车队会记录大量未标注的序列LiDAR点云X−T:T\textbf{X}_{-T:T}X−T:T​,同时记录每一帧的传感器位置o−T:T\textbf{o}_{-T:T}o−T:T​,我们将X−T:0\textbf{X}_{-T:0}X−T:0​和o−T:0\textbf{o}_{-T:0}o−T:0​记录为历史部分,X1:T\textbf{X}_{1:T}X1:T​和o1:T\textbf{o}_{1:T}o1:T​记录为未来部分

标准的点云预测办法ggg,将过去点云作为输入,来预测未来点云:X^1:T=g(X−T:0)\hat{\textbf{X}}_{1:T}=g(\text{X}_{-T:0})X^1:T​=g(X−T:0​)(1)(1)(1)

我们的方法将未来LiDAR点云x∈Xt,t=1...T\textbf{x} \in \textbf{X}_t, t = 1 ... Tx∈Xt​,t=1...T重参数化成一条射线:该射线从传感器位置ot\textbf{o}_tot​出发,沿方向d\textbf{d}d,经过距离λ\lambdaλ后到达终点x\textbf{x}x:x=ot+λd,x∈Xt\textbf{x} = \textbf{o}_t + \lambda \textbf{d}, \textbf{x} \in \textbf{X}_tx=ot​+λd,x∈Xt​(2)(2)(2)

我们的方法fff在未来时间ttt选取一条通过原点和方向(ot,d)(\textbf{o}_t, \textbf{d})(ot​,d)进行参数化的射线。然后在给定过去点云X−T:0\textbf{X}_{-T:0}X−T:0​和传感器位置o−T:0\textbf{o}_{-T:0}o−T:0​的情况下,预测射线经过距离λ^\hat{\lambda}λ^:λ^=f(ot,d;X−T:0,o−T:0)\hat{\lambda}=f(\textbf{o}_t, \textbf{d}; \textbf{X}_{-T:0}, \textbf{o}_{-T:0})λ^=f(ot​,d;X−T:0​,o−T:0​)(3)(3)(3)

公式(3)与Nerf类似,Nerf预测颜色,本文预测深度

Spacetime (4D) occupancy

将spacetime occupancy定义为特定时间点的3D位置占用状态。使用z\textbf{z}z来表示真实的spacetime occupancy,由于视线可见性的限制,可能无法直接进行观测。给定一个有界时空4D volume V\mathcal{V}V,该volume被离散为时空voxel v\textbf{v}v。可以使用z[v]∈{0,1},v=(x,y,z,t),v∈V\textbf{z}[\textbf{v}] \in \{0, 1\}, \textbf{v}=(x, y, z, t), \textbf{v}\in \mathcal{V}z[v]∈{0,1},v=(x,y,z,t),v∈V(4)(4)(4)来表示时空voxel grid V\mathcal{V}V中voxel v\textbf{v}v的占用状态,该状态可以是占用(1)或者空闲(0)。

我们通过学习一个占用预测网络hhh(由w\textbf{w}w进行定义),根据历史点云和传感器位置来预测离散化的四维时空占用:z^=h(X−T:0,o−T:0;w)\hat{\textbf{z}}=h(\textbf{X}_{-T:0}, \textbf{o}_{-T:0}; \textbf{w})z^=h(X−T:0​,o−T:0​;w)(5)(5)(5),其中z^[v]∈R[0,1]\hat{\textbf{z}}[\textbf{v}] \in \mathbb{R}_{[0, 1]}z^[v]∈R[0,1]​表示预测的占用

Depth rendering from occupancy

给定射线query x=o+λd\textbf{x}=\textbf{o}+\lambda \textbf{d}x=o+λd,目标是预测λ^\hat{\lambda}λ^与真实λ\lambdaλ尽可能接近。我们首先通过voxel遍历计算其与占用grid的交集(Fig 4)。假定射线和列表voxels{v1...vn}\{\textbf{v}_1... \textbf{v}_n\}{v1​...vn​}相交。假设射线只能停在voxel的边界或者无限远处,从而对射线空间进行离散化,我们将voxel vi\textbf{v}_ivi​解释为从voxel vi−1\textbf{v}_{i-1}vi−1​发出的射线在voxel vi\textbf{v}_ivi​停止的条件概率,可以写为:pi=∏j=1i−1(1−z^[vj])z^[vi]p_i = \prod_{j=1}^{i-1} (1 - \hat{\textbf{z}}[\textbf{v}_j]) \hat{\textbf{z}}[\textbf{v}_i]pi​=∏j=1i−1​(1−z^[vj​])z^[vi​],其中pip_ipi​表示射线停在voxel vi\textbf{v}_ivi​的概率。现在可以通过计算期望中的停止点来渲染距离λ^=f(o,d)=∑i=1npiλ^i\hat{\lambda} = f(\textbf{o}, \textbf{d}) = \sum_{i=1}^{n}p_i\hat{\lambda}_iλ^=f(o,d)=∑i=1n​pi​λ^i​,λ^i\hat{\lambda}_iλ^i​表示voxel vi\textbf{v}_ivi​的停止距离。

在这里插入图片描述


从上式可看出不考虑射线停在voxel grid外面的情况,该停止距离未定义(将在无限远处停止)。在训练时,在真实的grid外部设置一个虚拟的停止点:
λ^=f(o,d)=∑i=1npiλ^i+∏i=1n(1−pi)λ^n+1\hat{\lambda} = f(\mathbf{o}, \mathbf{d}) = \sum_{i=1}^{n} p_i \hat{\lambda}_i + \prod_{i=1}^{n} (1 - p_i) \hat{\lambda}_{n+1}λ^=f(o,d)=∑i=1n​pi​λ^i​+∏i=1n​(1−pi​)λ^n+1​,其中λ^n+1=λ\hat{\lambda}_{n+1} = \lambdaλ^n+1​=λ.

Loss function

使用L1 loss来训练occupancy prediction network:
L(w)=∑(o,λ,d)∈(X1:T,o1:T)∣λ−f(o,d;X−T:0,o−T:0,w)∣L(\mathbf{w}) = \sum_{(\mathbf{o}, \lambda, \mathbf{d}) \in (\mathcal{X}_{1:T}, \mathbf{o}_{1:T})} \left| \lambda - f(\mathbf{o}, \mathbf{d}; \mathbf{X}_{-T:0}, \mathbf{o}_{-T:0}, \mathbf{w}) \right|L(w)=∑(o,λ,d)∈(X1:T​,o1:T​)​∣λ−f(o,d;X−T:0​,o−T:0​,w)∣

Read more

Flutter 三方库 docker_commander 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、透明、多端协同的 Docker 容器管理与 CI/CD 编排引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 docker_commander 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、透明、多端协同的 Docker 容器管理与 CI/CD 编排引擎 在鸿蒙(OpenHarmony)系统的桌面端设备(PC Mode)、高性能后台监控管理中心或基于鸿蒙的自动化产线控制台上,如何通过 Dart 代码即时管理本地及远程的 Docker 容器、执行 Container 指令或部署 PostgreSQL/Nginx 等标准化镜像?docker_commander 为开发者提供了一套工业级的、基于 Shell 与 REST 驱动的 Docker 指令集封装方案。本文将深入实战其在跨端容器治理中的应用。 前言 什么是 Docker

By Ne0inhk
Flutter 组件 built_value_test 的适配 鸿蒙Harmony 实战 - 驾驭不可变对象测试审计、实现鸿蒙端复杂状态一致性语义断言方案

Flutter 组件 built_value_test 的适配 鸿蒙Harmony 实战 - 驾驭不可变对象测试审计、实现鸿蒙端复杂状态一致性语义断言方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 built_value_test 的适配 鸿蒙Harmony 实战 - 驾驭不可变对象测试审计、实现鸿蒙端复杂状态一致性语义断言方案 前言 在鸿蒙(OpenHarmony)生态的大型分布式状态管理、精密金融级数据模型审计、以及对数据不可变性(Immutability)有极致追求的架构设计中,“测试的严密性”是决定软件品质的生死线。面对包含数十个嵌套字段的 built_value 对象。如果仅仅依靠原始的 expect(a.name, b.name) 或手写繁琐的 toString() 比对。那么不仅会导致测试代码高度冗余、难以维护,更会因为无法精准识别“由于深度克隆产生的非预期副作用”而漏掉潜在的逻辑缺陷。 我们需要一种“语义对齐、逻辑自证”的对象测试艺术。 built_value_

By Ne0inhk
Flutter 组件 chance 的适配 鸿蒙Harmony 实战 - 极速构建随机测试数据集、提升鸿蒙应用 Mock 交互及复杂场景压测效率

Flutter 组件 chance 的适配 鸿蒙Harmony 实战 - 极速构建随机测试数据集、提升鸿蒙应用 Mock 交互及复杂场景压测效率

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 chance 的适配 鸿蒙Harmony 实战 - 极速构建随机测试数据集、提升鸿蒙应用 Mock 交互及复杂场景压测效率 前言 在进行鸿蒙(OpenHarmony)应用的大规模集成测试或性能压测时,高质量的测试数据往往是稀缺资源。如果你依然靠手动编写 test1, 123456 这种低质量的字符串,不仅无法覆盖到 Unicode 字符集带来的渲染边界问题,更无法真实模拟出数据库索引在高负载下的实际表现。 chance 是一款被广泛认可的、具备“上帝视角”的随机数据生成库。它能够产出符合人类直觉的姓名、地址、日期、GUID 乃至随机的段落内容。 在鸿蒙适配实战中,利用 chance 构建动态的 UI 自适应列表和鲁棒性后端接口测试,能让你的开发效率提升数倍。本文将为你揭秘 chance 在鸿蒙全场景开发中的妙用。 一、

By Ne0inhk
Mac安装激活--Typora,一个比记事本更加强大的纯文本软件

Mac安装激活--Typora,一个比记事本更加强大的纯文本软件

一、安装 1.首先到官网下载Mac版的Typora,下载地址:https://typoraio.cn/ (1)打开默认中文站 (2)往下滑,下载Mac版 2.下载完成后,会看到Typora.dmg文件,点击打开文件 3.打开Typora.dmg文件,鼠标落在左边app图标上,按住拖拽到右边图标,安装完成。 4.打开启动台 ,可以看到Typora软件已安装成功。 5.点击Typora进入app的欢迎界面,发现未激活,只能试用14天。下面进行激活的操作。 二、激活 1.打开访达 ,按快捷键Command+Shift+G 打开搜索, 2.在上图红框内输入/Applications/Typora.app/Contents/Resources/TypeMark 点击回车,快速进入目录。

By Ne0inhk