iMAP

Sucar 2021 · 论文

一句话总结 —— 首个类NeRF SLAM系统:单个MLP无需先验数据、实时在线训练,作为实时RGB-D跟踪与建图唯一的场景表示。

问题

稠密RGB-D SLAM一直依赖显式的地图结构——TSDF体素网格(KinectFusion)、面元(surfel,ElasticFusion)——这些结构需要精细的内存管理,分辨率需事先固定,并且相机从未看到的地方会留下空洞。NeRF刚刚证明了MLP可以连续且紧凑地表示场景,但只能通过对已知姿态图像进行数小时的离线训练来实现。iMAP提出的问题是:MLP能否成为一个实时SLAM系统地图——“无需先验数据、在实时运行中训练”,处理来自手持RGB-D相机的数据流,同时还要用于跟踪。

方法与架构

地图网络。 单个MLP,4个隐藏层,宽度为256,将一个3D点映射为颜色与体密度,Fθ(p)=(c,ρ)F_{\theta}(\mathbf{p})=(\mathbf{c},\rho)——不含观察方向(镜面反射未被建模)。输入经过一个可优化的高斯位置编码 sin(Bp)\sin(\mathbf{B}\mathbf{p})(B\mathbf{B}n×3n\times 3 矩阵,σ=25\sigma=25,嵌入维度93),该编码也被拼接进第二层。

可微渲染。 对于像素 [u,v][u,v]、姿态 TWCT_{WC},沿反投影射线取 NN 个采样点 pi=dir\mathbf{p}_i=d_i\mathbf{r}(32个粗采样+12个细采样)。密度转换为占据概率 oi=1exp(ρiδi)o_{i}=1-\exp(-\rho_{i}\delta_{i}),其中 δi=di+1di\delta_i=d_{i+1}-d_i,光线终止权重为 wi=oij=1i1(1oj)w_{i}=o_{i}\prod_{j=1}^{i-1}(1-o_{j}),深度、颜色与深度方差按下式渲染:

D^[u,v]=i=1Nwidi,I^[u,v]=i=1Nwici,D^var[u,v]=i=1Nwi(D^[u,v]di)2\hat{D}[u,v]=\sum_{i=1}^{N}w_{i}d_{i},\quad\hat{I}[u,v]=\sum_{i=1}^{N}w_{i}\mathbf{c}_{i},\quad\hat{D}_{var}[u,v]=\sum_{i=1}^{N}w_{i}(\hat{D}[u,v]-d_{i})^{2}

联合优化(建图)。 网络权重 θ\theta 与关键帧姿态 {Ti}\{T_i\} 通过ADAM在稀疏像素采样 sis_i 上联合优化,最小化 Lg+λpLpL_{g}+\lambda_{p}L_{p}(λp=5\lambda_p=5),其中光度损失为L1误差,几何损失经方差归一化,以降低物体边界等不确定区域的权重:

Lg=1Mi=1W(u,v)siDi[u,v]D^i[u,v]D^var[u,v]L_{g}=\frac{1}{M}\sum_{i=1}^{W}\sum_{(u,v)\in s_{i}}\frac{\left|D_{i}[u,v]-\hat{D}_{i}[u,v]\right|}{\sqrt{\hat{D}_{var}[u,v]}}

并行跟踪。 依照PTAM的拆分方式,一个单独的进程仅针对锁定网络优化实时相机姿态,使用相同的损失函数,频率约10 Hz;而联合建图以约2 Hz运行;两者均为同一桌面GPU上的普通PyTorch多进程。

用于防止遗忘的关键帧选择。 当归一化深度误差小于 tD=0.1t_D=0.1(相对于锁定的地图快照)的像素比例 PP 低于 tP=0.65t_P=0.65 时,一帧被选为关键帧——即它看到了明显新的区域。关键帧集合起到重放记忆库的作用,使单个MLP不会灾难性地遗忘场景中先前观测到的部分。

主动采样。 每次迭代每幅图像仅渲染200个像素。每幅图像被划分为 8×88\times 8 的网格;每个网格的平均损失被归一化为分布 fi[j]=Li[j]/mLi[m]f_{i}[j]=L_{i}[j]/\sum_{m}L_{i}[m],新的采样按此比例分配,从而将计算集中在地图不确定的地方。同样按损失比例的方案也用于在关键帧之间分配采样,每次建图迭代优化一个大小为 W=5W=5 帧的有界窗口(3个按损失采样的关键帧+最新关键帧+实时帧)。

实验结果

对SLAM的意义

iMAP开启了神经隐式SLAM这整条研究路线。这里确立的”跟踪/建图对可微地图的拆分”——姿态优化针对冻结的地图,地图优化针对重放的关键帧——至今仍是基于NeRF和3DGS的SLAM所沿用的模板。它还重新定义了”地图”是什么:不是一个供你插入点的数据结构,而是一个你去拟合的函数,天然具备连续性、紧凑性和空洞填补能力。其单MLP容量的局限性(遗忘、在较大场景中过度平滑)直接推动了NICE-SLAM的分层网格、Co-SLAM的哈希网格,以及后来社区转向显式3D高斯地图。

相关条目