> 技术文档 > 论文笔记: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}XT:T,同时记录每一帧的传感器位置o−T:T\\textbf{o}_{-T:T}oT:T,我们将X−T:0\\textbf{X}_{-T:0}XT:0o−T:0\\textbf{o}_{-T:0}oT:0记录为历史部分,X1:T\\textbf{X}_{1:T}X1:To1: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(XT:0) (1)(1)(1)

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

我们的方法fff在未来时间ttt选取一条通过原点和方向(ot,d)(\\textbf{o}_t, \\textbf{d})(ot,d)进行参数化的射线。然后在给定过去点云X−T:0\\textbf{X}_{-T:0}XT:0和传感器位置o−T:0\\textbf{o}_{-T:0}oT: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;XT:0,oT: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),vV (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(XT:0,oT: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}vi1发出的射线在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=1i1(1z^[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=1npiλ^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=1npiλ^i+i=1n(1pi)λ^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;XT:0,oT:0,w)