RAFT-3D

Teed 2021 · 论文

一句话总结 — 将RAFT从2D光流扩展到3D场景流,通过迭代细化一个逐像素SE(3)SE(3)刚体运动的稠密场来实现,并配备学习到的刚体运动嵌入以及一个强制几何一致性的可微Dense-SE3优化层。

问题

场景流——给定一对立体或RGB-D视频帧,估计逐像素的3D运动——是机器人将相机自运动与独立运动物体分离所需要的信息。真实场景在很大程度上是若干刚性运动物体的集合,因此其3D运动场在SE(3)SE(3)意义下是分段常数的,但早期方法要么预测无约束的逐点平移(例如FlowNet3D),要么通过物体检测/实例分割网络来利用刚性——这需要实例级监督,无法处理未知物体,并在流水线中引入不可微组件。RAFT-3D探究的问题是:如何在不使用任何物体实例标签的情况下,将刚性先验融入到RAFT式的稠密架构中。

方法与架构

输入:两对RGB-D帧(I1,Z1)(I_1, Z_1)(I2,Z2)(I_2, Z_2)(深度来自现成的立体网络GA-Net,针对立体输入);输出:一个稠密变换场TSE(3)H×W\mathbf{T} \in SE(3)^{H \times W}。使用一个增广的针孔投影π\pi,将3D点映射为像素坐标加逆深度d=1/Zd = 1/Z,该场可诱导出对应关系

xi=π(Tiπ1(xi))\mathbf{x}_i' = \pi(\mathbf{T}_i \cdot \pi^{-1}(\mathbf{x}_i))

其中xixi\mathbf{x}_i' - \mathbf{x}_i的前两个分量为光流,第三个分量为逆深度变化量。

aij=2σ(vivj2)[0,1]a_{ij} = 2\,\sigma(-\lVert \mathbf{v}_i - \mathbf{v}_j \rVert^2) \in [0, 1]

每个像素的变换通过在加权重投影目标函数上执行一步高斯-牛顿更新来更新,

E(δ)=iΩjNiaijrj+π(TjXj)π(eδiTiXj)wj2E(\delta) = \sum_{i \in \Omega} \sum_{j \in \mathcal{N}_i} a_{ij} \left\lVert \mathbf{r}_j + \pi(\mathbf{T}_j \mathbf{X}_j) - \pi(e^{\delta_i} \mathbf{T}_i \mathbf{X}_j) \right\rVert^2_{w_j}

也就是说,每个像素都在寻找一个能够解释其邻居的运动——但只有嵌入相似的邻居对才会产生贡献。因为每一项只涉及一个Ti\mathbf{T}_i,这个庞大的系统(在FlyingThings3D分辨率下有2亿个方程)分解为H×WH \times W个独立的、原地在CUDA中构造的6变量问题;12次GRU迭代对应12次高斯-牛顿更新。

实验结果

对SLAM的意义

动态环境是SLAM的核心失效模式之一:运动物体违反了自运动估计所依赖的静态世界假设。RAFT-3D的逐像素刚体运动场恰好提供了分割动态物体并将其运动与相机运动分开估计所需的表示——这正是动态SLAM系统(VDO-SLAM、DynaSLAM II)用基于检测器的流水线所攻克的同一个问题,而这里无需实例监督即可解决。它将学习式迭代细化与嵌入式可微几何优化层相结合,处于从RAFT到同一批作者提出的DROID-SLAM的直接谱系之上。

相关条目