BundleFusion

Dai 2016 · 论文

一句话总结 — 通过分层的局部到全局位姿优化实现全局一致的实时RGB-D重建,在位姿被修正时对TSDF进行即时的反集成与重新集成。

问题

可扩展的实时3D扫描会受到位姿漂移的困扰,这种漂移会在重建模型中累积显著的误差;全局校正传统上需要数小时的离线处理。已有的在线方法要么需要数分钟才能完成校正(并非真正实时),要么使用脆弱的帧到帧或帧到模型跟踪,一旦失败便无法恢复,要么仅支持限制扫描质量的无结构点表示。BundleFusion的目标是一次性解决这三个问题:全局优化(即经过光束法平差)的位姿、具备重定位能力的鲁棒跟踪,以及高质量的体积模型——全部实时完成。

方法与架构

输入是一个30 Hz、640×480的RGB-D流 S={fi=(Ci,Di)}S = \{f_i = (C_i, D_i)\};目标是求出将每一帧映射到世界空间的刚体变换 Ti(p)=Rip+tiT_i(p) = R_i p + t_i。系统不进行时序跟踪,而是将每一新帧相对完整的历史输入进行定位——回环检测是隐式且持续进行的,重定位也因此自然获得。

稀疏对应搜索。 检测SIFT关键点(每帧4–5毫秒),并在GPU上与所有先前帧进行匹配(每对约0.05毫秒,即使面对2万多帧也是可行的)。匹配需通过三层筛选:基于Kabsch算法的关键点筛选(刚体拟合并进行条件数分析;持续剔除对应关系直至最大残差小于0.02米)、表面面积筛选(所跨面积必须超过0.032平方米),以及在80×60下采样帧上进行的稠密双向几何/光度验证(若重投影误差超过0.075米则该帧对失效)。一对帧需要至少 Nmin=5N_{\min} = 5 个有效匹配。

分层的局部到全局优化。 连续帧被分组为大小为 Nchunk=11N_{\mathrm{chunk}} = 11 的块(重叠1帧)。每个块内部进行光束法平差;每个块以一个带有聚合特征集的关键帧的形式贡献给第二层针对所有关键帧的全局优化。两个层级都对堆叠的位姿参数 XX 最小化同一能量函数:

Ealign(X)=wsparseEsparse(X)+wdenseEdense(X)E_{\mathrm{align}}(X) = w_{\mathrm{sparse}} E_{\mathrm{sparse}}(X) + w_{\mathrm{dense}} E_{\mathrm{dense}}(X)

Esparse(X)=ij(k,l)C(i,j)Tipi,kTjpj,l22E_{\mathrm{sparse}}(X) = \sum_{i}\sum_{j}\sum_{(k,l) \in C(i,j)} \left\| T_i\, p_{i,k} - T_j\, p_{j,l} \right\|_2^2

其中 pi,kp_{i,k} 是第 ii 帧的第 kk 个特征点,C(i,j)C(i,j) 是它与第 jj 帧的对应关系。稠密项 Edense=wphotoEphoto+wgeoEgeoE_{\mathrm{dense}} = w_{\mathrm{photo}} E_{\mathrm{photo}} + w_{\mathrm{geo}} E_{\mathrm{geo}} 结合了基于亮度梯度 IiI_i 的光度对齐项和一个点到平面几何项,并在视角相近(60°以内)且有重叠的帧对 EE 上进行评估:

Ephoto(X)=(i,j)EkIi(π(di,k))Ij(π(Tj1Tidi,k))22E_{\mathrm{photo}}(X) = \sum_{(i,j) \in E}\sum_{k} \left\| I_i\big(\pi(d_{i,k})\big) - I_j\big(\pi(T_j^{-1} T_i\, d_{i,k})\big) \right\|_2^2

Egeo(X)=(i,j)Ek[ni,k(di,kTi1Tjπ1(Dj(π(Tj1Tidi,k))))]2E_{\mathrm{geo}}(X) = \sum_{(i,j) \in E}\sum_{k} \Big[ n_{i,k}^{\top} \Big( d_{i,k} - T_i^{-1} T_j\, \pi^{-1}\big( D_j\big(\pi(T_j^{-1} T_i\, d_{i,k})\big) \big) \Big) \Big]^2

其中 π\pi 是透视投影,di,kd_{i,k} 是第 kk 个像素的3D点,ni,kn_{i,k} 是其法向量。wdensew_{\mathrm{dense}} 被线性递增,使得稀疏项先固定全局结构,随后稠密项在其收敛域内进行细化。非线性最小二乘问题通过高斯-牛顿法配合数据并行的GPU PCG求解器求解(Jacobi预条件子,JFJ_FJFJ_F^{\top} 在不同的核函数中分别应用)。每次求解后,若最大残差超过0.05米,则移除相应问题帧对的所有对应关系——作为最后一道外点保护机制。

即时重新集成。 几何信息被融合进一个体素哈希的TSDF(8³体素块)。深度样本 di(v)d_i(v) 及其权重 wi(v)w_i(v) 的集成,以及其精确的逆操作(反集成),分别为:

D(v)=D(v)W(v)+wi(v)di(v)W(v)+wi(v),W(v)=W(v)+wi(v)D'(v) = \frac{D(v)\,W(v) + w_i(v)\,d_i(v)}{W(v) + w_i(v)}, \qquad W'(v) = W(v) + w_i(v)

反集成时用减法代替加法。每一帧都存储其已集成位姿和优化后位姿;对于每个新的输入帧,位姿差异最大的 Nfix=10N_{\mathrm{fix}} = 10 帧会在旧位姿处被反集成,并在新位姿处重新集成,从而使稠密模型持续收敛到优化后的轨迹——无需任何地图形变。

实验结果

实时扫描使用了iPad上的Structure Sensor,将数据流传输到桌面工作站;该流程的运行速度远超过30 Hz,分布在两块GPU(GTX Titan X + Titan Black)上运行,默认体素大小为4毫米。所拍摄的场景——4间办公室、2间公寓、1间复印室,轨迹长度最长达95米,超过2万帧——展示了与离线方法相当的无漂移对齐效果和完整度。在合成的ICL-NUIM基准上,ATE RMSE为kt0 0.6 cm、kt1 0.4 cm、kt2 0.6 cm、kt3 1.1 cm——优于在线方法(例如ElasticFusion:0.9/0.9/1.4/10.6 cm)和离线方法(Redwood刚体方法:25.6/3.0/3.3/6.1 cm)的当前最优水平。在TUM RGB-D上:fr1/desk 1.6 cm,fr2/xyz 1.1 cm,fr3/office 2.2 cm,fr3/nst 1.2 cm,与此前系统相当或更优。消融实验(仅稀疏 vs 稀疏+局部稠密 vs 完整版本)证实了稀疏到稠密设计中的每个阶段都为精度带来了提升。该系统能够从跟踪失败(传感器遮挡、无特征区域)中恢复,方法是持续相对全局关键帧进行定位,并后来被用于采集ScanNet数据集。

对SLAM的意义

BundleFusion解决了自KinectFusion以来一直困扰体积式SLAM的问题:如何在回环检测之后校正稠密地图而不产生形变伪影。其反集成/重新集成机制正是TSDF世界对ElasticFusion地图形变方法给出的回应,定义了稠密SLAM中一个基本设计分叉的一侧。每当现代稠密系统需要在”优化后位姿发生变化”与”地图已经融合”之间进行协调时,都是在重用这一套方案。

相关条目