跳转至

iMAP

969 个字 预计阅读时间 3 分钟

Idea

Intrdocution

  • 第一个基于 RGB-D 相机,用 MLP 做场景表征实时SLAM 系统
  • 相比于传统的 TSDF 场景表征方法,iMAP 可以重建出未被观察到的地方
  • 隐式场景表征可以用来做相机位姿估计,但都是离线形式,计算量大,iMAP 使用深度图像能达到实时效果
  • 持续学习会遇到灾难性遗忘iMAP 采用 replay-based approach,将先前的结果缓存

Implicit Scene Neural Network

  • 借鉴 NeRF,用 MLP 3D 坐标点转换成颜色和体积密度值:\(\bold{p}=(x,y,z),F_\theta(\bold{p})=(\bold{c}, \rho)\)
  • 不考虑视角方向(不需要对镜面反射建模)

Depth and Colour Rendering

  • 通过 scene network 来从指定视角得到深度和颜色图像
  • 输入是相机位姿 \(T_{WC}\) 和像素坐标 \([u,v]\),先反投影到世界坐标系 :
\[\bold{r}=T_{WC}K^{-1}[u,v]\]
  • 然后在视角射线上采样:
\[\bold{p}_i=d_i \bold{r} \ \ \ \ \ d_i \in \{d_1, ..., d_N\}\]
  • 查询场景网络之前得到的颜色和体积密度:
\[(\bold{c}_i, \rho_i) = F_\theta(\bold{p}_i)\]
  • 将体积密度转换为占据概率 occupancy probability:
\[ \delta_i = d_{i+1} - d_i \\ o_i = 1 - \exp(-\rho_i \delta_i) \\ w_i = o_i \prod_{j=1}^{i-1}(1-o_j) \]
  • 得到深度和颜色:
\[ \hat{D}[u,v] = \sum_{i=1}^{N}w_i d_i \\ \hat{I}[u,v] = \sum_{i=1}^{N}w_i \bold{c}_i \]
  • 计算深度的方差:
\[ \hat{D}_{var}[u,v] = \sum_{i=1}^{N}w_i (d_i - \hat{D}[u,v])^2 \]

Joint optimisation

  • 用关键帧集合,针对网络参数相机位姿做联合优化。Adam 优化器,loss 光度误差几何误差的加权

  • 光度误差 photometric error

\[ e_i^p[u, v]=\left | I_i[u,v] - \hat{I}_i[u,v] \right | \\ \\ L_p = \frac{1}{M} \sum_{i=1}^{W} \sum_{(u,v) \in s_i} e_i^p[u, v] \]
  • 几何误差 geometric error(使用到深度方差
\[ L_g = \frac{1}{M} \sum_{i=1}^{W} \sum_{(u,v) \in s_i} \frac{e_i^g[u,v]}{\sqrt{\hat{D}_{var}[u,v]}} \]
  • Adam 优化器,对光度误差添加一个权重 \(\lambda\)
\[ \min_{\theta,\{T_i\}}(L_g + \lambda_p L_p) \]
  • 上面都是 Mapping 阶段,Tracking 阶段与 Mapping 并行,但是频率更高,针对 latest frame,固定场景网络,使用之前的 loss 和优化器优化位姿

Keyframe Selection

  • 考虑计算复杂度和图像冗余度,基于 information gain 选取关键帧
  • 第一帧 一定被选取,用作网络初始化和世界坐标系的固定
  • 每新增一个关键帧,保存一次 network 作为 snapshot,用于 replay(防止 catastrophic forgetting 的缓存机制)
  • 后续关键帧的选取方法是,与 snapshot 做比较,是否观察到了新区域

    • snapshot frame 随机选取 s 个像素点
    • 比较深度值差一,计算如下分数,然后与阈值做比较,小于就加入关键帧
    \[ P=\frac{1}{\left | s \right | } \sum_{(u,v) \in s} (\frac{\left | D[u,v] - \hat{D}[u,v] \right | }{D[u,v]} < t_D) \]

Active Sampling

  • 为了减少计算复杂度,iMAP 分别对像素点、关键帧都做了 Active Sampling

    • image active sampling:对图像随机选点,选取方法是先分块,先均匀采样,分块求 loss,计算每一块的权重,然后根据权重采样

    • keyframe active sampling:为了限制联合优化的计算复杂度,每次迭代只选三个关键帧。同上,也是计算 loss 在分配权重

Experiments

我们对模拟序列和真实序列进行实验。对于重建评估,我们使用副本数据集 [29],对真实房间规模的环境进行高质量 3D 重建,包括 5 个办公室和 3 个公寓。对于每个副本场景,我们渲染 2000 RGB-D 帧的随机轨迹。对于原始相机录制,我们使用手持 Microsoft Azure Kinect 在各种环境中捕获 RGB-D 视频,并在 TUM RGB-D 数据集 [30] 上进行测试以评估相机跟踪。

  • 对于重建评估,数据集是 Replica 5 offices 3 apartments
  • 对于原始相机录制,使用手持 Microsoft Azure Kinect 在各种环境中捕获 RGB-D 视频,并在 TUM RGB-D 上进行测试以评估相机跟踪。

最后更新: 2024年8月3日 16:38:09
创建日期: 2024年8月3日 16:38:09
回到页面顶部