FlowNet3D

Liu 2019 · 论文

一句话总结 — 首个针对点云的端到端深度3D场景流网络,以PointNet++为骨干网络,采用新颖的流嵌入层和集合上采样卷积层,为每个点预测一个3D运动向量。

问题

机器人与人机交互需要理解动态环境中点的3D运动——即场景流——但此前大多数方法都是从立体或RGB-D图像中估计场景流,很少有方法直接在点云上工作。LiDAR点云是稀疏、无序且无网格结构的,因此标准CNN(以及图像空间的光流架构)都不适用;此前的点云处理流程使用手工设计的特征,并依赖刚性或对应关系假设。FlowNet3D要解决的问题是:如何从原始点云对中端到端地学习每个点的3D运动。

方法与架构

给定点云 P={xi}i=1n1\mathcal{P} = \{x_i\}_{i=1}^{n_1}Q={yj}j=1n2\mathcal{Q} = \{y_j\}_{j=1}^{n_2},其中 xi,yjR3x_i, y_j \in \mathbb{R}^3(无对应关系,且尺寸可能不同),需要为第一帧的每个点预测流 di=xixid_i = x_i' - x_i。该网络包含三个模块——点特征学习、点混合、流细化——由三种层构建而成:

fj=MAX{i:xixjr}{h(fi, xixj)}f_j' = \underset{\{i \,:\, \lVert x_i - x_j' \rVert \le r\}}{\mathrm{MAX}} \big\{ h(f_i,\ x_i - x_j') \big\}

其中 hh 是一个MLP,MAX是逐元素最大池化——由此在不规则数据上得到分层且平移不变的几何特征。

ei=MAX{j:yjxir}{h(fi, gj, yjxi)}e_i = \underset{\{j \,:\, \lVert y_j - x_i \rVert \le r\}}{\mathrm{MAX}} \big\{ h(f_i,\ g_j,\ y_j - x_i) \big\}

将两个点的特征都送入 hh(而不是使用固定的特征距离)使网络能够学习如何为候选位移 yjxiy_j - x_i 赋权。之后这些嵌入会通过更多的集合卷积层进行混合以获得空间平滑性(较大的感受野可以解决诸如平移桌面上的点这类模糊情形)。

最终架构为4个集合卷积层、1个流嵌入层、4个集合上采样卷积层(带跳跃连接),以及一个回归 R3\mathbb{R}^3 流的线性层。训练使用smooth-L1L_1流监督,外加对由变形点云预测出的反向流 did_i' 的循环一致性项:

L=1n1i=1n1(didi+λdi+di)L = \frac{1}{n_1} \sum_{i=1}^{n_1} \Big( \lVert d_i - d_i^* \rVert + \lambda \lVert d_i' + d_i \rVert \Big)

其中 λ=0.3\lambda = 0.3。推理时,对点云进行多次(10次)随机重采样运行,并对预测的流取平均以降低采样噪声。

实验结果

对SLAM的意义

FlowNet3D开创了基于点云的深度场景流估计,这正是LiDAR SLAM系统检测和处理动态物体的方式——将移动的车辆和行人与建图应依赖的静态结构分离开来。它为无序点集设计的软对应层影响了一大批后续工作(PointPWC-Net、FLOT、FastFlow3D),并在RGB-D一侧与基于图像的场景流方法(如RAFT-3D)互为补充;其配准和运动分割演示预示了SLAM系统正是如此使用场景流的。

相关条目