[论文阅读-NeRF+SLAM] iMAP:首个隐式场景表征的实时SLAM

img
Motivation

首个基于RGB-D相机,用MLP做场景表征实时SLAM系统

传统的稠密建图SLAM使用占用栅格图 occupancy map 或者 signed distance function 做场景表征,占用的内存空间很大;

相比于传统的TSDF场景表征方法,iMAP能重建出未被观察到的地方

隐式场景表征 implicit scene representation 可以用来做相机位姿估计,但是都是离线形式,计算需求量大,本文使用深度图像能达到实时效果;

持续学习 continual learning 往往会遇到灾难性遗忘 catastrophic forgetting 的问题,本文采用 replay-based approach,将先前的结果缓存。

Method

分为两个线程,Tracking 固定网络(场景表征),优化当前帧对应的相机位姿;Mapping 对网络和选定的关键帧做联合优化。

  • implicit scene neural network

    借鉴NeRF,用一个MLP将3D坐标点转换成颜色和体积密度值:
    p = ( x , y , z ) F θ ( p ) = ( c , ρ ) \bold p=(x,y,z)\\ F_\theta(\bold p)=(\bold c,\rho) p=(x,y,z)Fθ(p)=(c,ρ)
    但是与NeRF有区别,没有考虑视角方向(因为不需要对镜面反射建模)

    论文中还提到了 Gaussian positional embedding 将输入的3D坐标转换到n维空间(?)

  • Depth and Color rendering

    通过 query 得到的 scene network 来从指定视角得到深度和颜色图像

    输入是相机位姿 T W C T_{WC} TWC和像素坐标 [ u , v ] [u,v] [u,v],先反投影到世界坐标系:
    r = T W C K − 1 [ u , v ] \bold r=T_{WC}K^{-1}[u,v] r=TWCK1[u,v]
    然后在视角射线上采样:
    p i = d i r d i ∈ { d 1 , … , d N } \bold p_i=d_i\bold r\qquad d_i\in\{d_1,\dots,d_N\} pi=dirdi{d1,,dN}
    Query 之前得到的场景网络得到颜色和体积密度:
    ( c i , ρ i ) = F θ ( p i ) (\bold c_i,\rho_i)=F_\theta(\bold p_i) (ci,ρi)=Fθ(pi)
    将体积密度转换为占据概率 occupancy probability
    δ i = d i + 1 − d i o i = 1 − exp ⁡ ( − ρ i δ i ) w i = o i ∏ j = 1 i − 1 ( 1 − o j ) \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) δi=di+1dioi=1exp(ρiδi)wi=oij=1i1(1oj)
    得到深度和颜色:
    D ^ [ u , v ] = ∑ i = 1 N w i d i I ^ [ u , v ] = ∑ i = 1 N w i c i \hat{D}[u,v]=\sum^N_{i=1}w_id_i\\ \hat{I}[u,v]=\sum^N_{i=1}w_i\bold c_i D^[u,v]=i=1NwidiI^[u,v]=i=1Nwici
    计算深度的方差:
    D ^ v a r [ u , v ] = ∑ i = 1 N w i ( D ^ [ u , v ] − d i ) 2 \hat{D}_{var}[u,v]=\sum^N_{i=1}w_i(\hat{D}[u,v]-d_i)^2 D^var[u,v]=i=1Nwi(D^[u,v]di)2

  • joint optimisation

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

    光度误差 photometric error :

    image-20221005203536327 image-20221005203547885

    几何误差 geometric error,使用到了深度的方差 :

    image-20221005203632744

    上面提到的都是 Mapping 阶段

    Tracking 阶段,与Mapping并行但是频率更高,针对 latest frame ,固定场景网络,使用之前提到的loss和优化器优化位姿

  • Keyframe selection

    考虑到计算的复杂度和图像的冗余性(redundancy),基于 information gain 选取关键帧。

    第一帧一定会被选取,用来做网络初始化和世界坐标系的固定;

    每新增一个关键帧,保存一次network作为snapshot(之前提到的防止 catastrophic forgetting 的缓存机制);

    后续关键帧的选取方法是,与snapshot做比较,看是否观察到了新区域

    具体做法

    • 在 snapshot 和 frame 上随机选取 s 个像素点

    • 比较深度值差异,计算如下一个分数,然后与阈值做比较,小于就加入关键帧:

      image-20221005204534234
  • Active sampling

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

    • image active sampling

      这一步要对图像随机选点,但是要针对性地选择,更有价值(细节多、重建不够precise)的图像块要取更多的点。

      选取方法是先分块,先均匀采样,分块求loss,计算每一块的权重,然后再根据权重采样。

      image-20221005204937905
    • keyframe active sampling

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

      image-20221005205314858
Conclusion

MLP的结构收敛速度不够快,考虑结合instant-NGP

instant-NGP-repo

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯半开水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值