NodeSLAM

Sucar 2020 · 论文

一句话总结 — 一种物体级 SLAM 方法,将每个检测到的物体表示为一个由类别条件 VAE 解码的紧凑学习式占据编码,并使用一种新颖的概率可微渲染器联合优化物体形状、物体位姿和相机轨迹。

问题

场景表示方式的选择决定了 SLAM 系统所需要的推断算法,也决定了它能支持哪些应用。点云地图或面元(surfel)地图不携带任何物体身份、位姿或完整形状的概念——而机器人抓取一个杯子或打包一个箱子恰恰需要这些信息。经典重建方法只能恢复直接观测到的表面;前馈式形状预测则无法以一种原理性的方式融合多次观测。NodeSLAM 追求的是在类似 SLAM 的联合估计框架内,从一张或多张 RGB-D 图像出发进行原理性的完整物体形状推断,,从而填补逐物体 TSDF 系统(Fusion++)与基于 CAD 模型的实例系统之间的空白。

方法与架构

形状模型。 一个单一的类别条件三维 CNN VAE(5 个卷积层,卷积核大小 4,步长 2;解码器与编码器镜像对称)在 ShapeNet 的 32×32×3232\times 32\times 32 占据网格上针对四个桌面物体类别(杯子、碗、瓶子、罐头)进行训练,采用 KL 潜在损失和二元交叉熵重建损失。地图中的每个物体由一个大小为 16 的潜在编码 d\mathbf{d} 加一个 9 自由度位姿(旋转、平移、缩放)表示。

概率渲染(测量函数)。对于每个像素,沿反投影光线采样 MM 个深度值 δ^i\hat{\delta}_i,并从解码后的网格中三线性插值得到占据值 oio_i。光线终止概率与逃逸概率为

ϕi=p(D[u,v]=δ^i)=oij=1i1(1oj),ϕM+1=j=1M(1oj),\phi_i = p(\mathbf{D}[u,v] = \hat{\delta}_i) = o_i \prod_{j=1}^{i-1}(1-o_j), \qquad \phi_{M+1} = \prod_{j=1}^{M}(1-o_j),

据此得到渲染深度和逐像素不确定性,即分布的均值和方差:

δ^μ[u,v]=i=1M+1ϕiδ^i,δ^var[u,v]=i=1M+1ϕi(δ^iD[u,v])2.\hat{\delta}_{\mu}[u,v] = \sum_{i=1}^{M+1}\phi_i\,\hat{\delta}_i, \qquad \hat{\delta}_{var}[u,v] = \sum_{i=1}^{M+1}\phi_i\,(\hat{\delta}_i - D[u,v])^2 .

多物体渲染结果通过取最小深度合并(处理遮挡),一个 4 级高斯金字塔扩大感受野以支持由粗到细的优化。

推断。 在编码上加一个高斯先验,MAP 问题就变成一个用 Levenberg-Marquardt 求解的最小二乘目标:

mind,TCGu,v(δ[u,v]δ^μ[u,v])2δ^var[u,v]+idi2.\min_{\mathbf{d},\,T_{CG}} \sum_{u,v} \frac{(\delta[u,v] - \hat{\delta}_{\mu}[u,v])^2}{\hat{\delta}_{var}[u,v]} + \sum_i \mathbf{d}_i^2 .

平移/缩放由被遮罩的点云初始化,朝向由检测到的支撑平面初始化(对杯子的偏航角还额外使用一个 CNN),而 d=0\mathbf{d}=0(即类别平均形状)。

SLAM 循环。 Mask R-CNN 的掩码通过两阶段与地图中的物体进行关联(首先是与前一帧掩码的 IoU > 0.2,然后是与渲染掩码的 IoU);未匹配的掩码会生成新物体。相机跟踪在地图固定的情况下最小化同一个渲染损失。关键帧(在物体初始化或视角变化超过 13° 时创建)进入一个滑动窗口的联合优化,对 3 个关键帧内的相机位姿、物体位姿和形状编码进行优化:Ljoint=jLrenderj+iLprioriL_{joint} = \sum_j L_{render}^j + \sum_i L_{prior}^i。耗时:每个物体渲染耗时 7 毫秒,完整物体重建约 1.5 秒,跟踪速度为 7 fps,联合优化耗时 2 秒。

实验结果

对SLAM的意义

NodeSLAM 确立了现代物体级 SLAM 的范式:将学习到的形状先验作为经典联合估计中可优化的地图变量,并以可微渲染作为测量模型——这正是后来驱动神经场 SLAM 的”反转渲染器”思想。带位姿的完整物体模型正是机器人操作所需要的,而不是原始的几何碎片。它是从基于编码的稠密 SLAM(CodeSLAM)到以物体为中心的神经场建图(vMAP)以及诸如 DSP-SLAM 这类基于 DeepSDF 系统之间的概念桥梁。

相关条目