方法
车队会记录大量未标注的序列 LiDAR 点云 $\mathbf{X}{-T:T}$,同时记录每一帧的传感器位置 $\mathbf{o}{-T:T}$。我们将 $\mathbf{X}{-T:0}$ 和 $\mathbf{o}{-T:0}$ 记录为历史部分,$\mathbf{X}{1:T}$ 和 $\mathbf{o}{1:T}$ 记录为未来部分。
标准的点云预测方法通常将过去点云作为输入,直接预测未来点云: $$ \hat{\mathbf{X}}{1:T} = g(\mathbf{X}{-T:0}) $$
我们的方法则不同,它将未来 LiDAR 点云 $\mathbf{x} \in \mathbf{X}_t, t = 1...T$ 重参数化成一条射线:该射线从传感器位置 $\mathbf{o}_t$ 出发,沿方向 $\mathbf{d}$,经过距离 $\lambda$ 后到达终点 $\mathbf{x}$: $$ \mathbf{x} = \mathbf{o}_t + \lambda \mathbf{d}, \quad \mathbf{x} \in \mathbf{X}_t $$
具体来说,我们在未来时间 $t$ 选取一条通过原点和方向 $(\mathbf{o}t, \mathbf{d})$ 进行参数化的射线。然后在给定过去点云 $\mathbf{X}{-T:0}$ 和传感器位置 $\mathbf{o}{-T:0}$ 的情况下,预测射线经过的距离 $\hat{\lambda}$: $$ \hat{\lambda} = f(\mathbf{o}t, \mathbf{d}; \mathbf{X}{-T:0}, \mathbf{o}{-T:0}) $$ 这与 NeRF 的思路类似,NeRF 预测颜色,而本文预测深度。
Spacetime (4D) occupancy
我们将时空占据(spacetime occupancy)定义为特定时间点的 3D 位置占用状态。使用 $\mathbf{z}$ 来表示真实的时空占据,由于视线可见性的限制,可能无法直接进行观测。给定一个有界时空 4D 体素空间 $\mathcal{V}$,该空间被离散为时空体素 $\mathbf{v}$。可以使用 $\mathbf{z}[\mathbf{v}] \in {0, 1}, \mathbf{v}=(x, y, z, t), \mathbf{v}\in \mathcal{V}$ 来表示时空体素网格 $\mathcal{V}$ 中体素 $\mathbf{v}$ 的占用状态,该状态可以是占用 (1) 或者空闲 (0)。
我们通过学习一个占用预测网络 $h$(由参数 $\mathbf{w}$ 定义),根据历史点云和传感器位置来预测离散化的四维时空占据: $$ \hat{\mathbf{z}} = h(\mathbf{X}{-T:0}, \mathbf{o}{-T:0}; \mathbf{w}) $$ 其中 $\hat{\mathbf{z}}[\mathbf{v}] \in \mathbb{R}_{[0, 1]}$ 表示预测的占用概率。
Depth rendering from occupancy
给定射线查询 $\mathbf{x}=\mathbf{o}+\lambda\mathbf{d}$,目标是预测 $\hat{\lambda}$ 与真实 $\lambda$ 尽可能接近。我们首先通过体素遍历计算其与占用网格的交集(如图 4)。假定射线和列表体素 ${\mathbf{v}_1... \mathbf{v}_n}$ 相交。假设射线只能停在体素的边界或者无限远处,从而对射线空间进行离散化,我们将体素 $\mathbf{v}i$ 解释为从体素 $\mathbf{v}{i-1}$ 发出的射线在体素 $\mathbf{v}i$ 停止的条件概率,可以写为: $$ p_i = \prod{j=1}^{i-1} (1 - \hat{\mathbf{z}}[\mathbf{v}_j]) \hat{\mathbf{z}}[\mathbf{v}_i] $$ 其中 $p_i$ 表示射线停在体素 $\mathbf{v}i$ 的概率。现在可以通过计算期望中的停止点来渲染距离: $$ \hat{\lambda} = f(\mathbf{o}, \mathbf{d}) = \sum{i=1}^{n} p_i \hat{\lambda}_i $$ 这里 $\hat{\lambda}_i$ 表示体素 $\mathbf{v}_i$ 的停止距离。
从上式可看出,如果不考虑射线停在体素网格外面的情况,该停止距离未定义(将在无限远处停止)。在训练时,我们在真实的网格外部设置一个虚拟的停止点: $$ \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} = \lambda$。


