美文网首页
CodeSLAM解读

CodeSLAM解读

作者: hi_lan | 来源:发表于2018-08-20 16:38 被阅读0次

    CodeSLAM是帝国理工2018年发表在CVPR上的论文,并获得最佳论文提名。(所有图片均来自论文)

    本文主要贡献是利用神经网络框架,并结合图像几何信息实现了单目相机的Dense SLAM。对于一张rgb图像,利用一个U-net去提取feature及估计深度的不确定性,并利用另外一个autoencoder以decode一个初始的深度值,然后联合两帧图像的相关信息来优化相机位姿及进一步估计深度。

    我们先来看一下它的网络结构

    图一

    上面是一个U-net, 它估计4个不同scale下的每个pixel关于深度的不确定性,并提取intensity feature, 这些intensity feature被下层的深度估计网络VAE利用,这也就是论文所说的conditioned autoencoder. 论文为什么要用两个网络,而不是一个网络直接预测深度:

    1)直接从rgb intensity去估计深度信息, 可以只能得到一个非常blurred的深度图。所以论文提出,我们不需要用网络去恢复精确的深度,只需要能够恢复major trait of the depth image,就是说我只需要利用网络得到一个initial depth.

    2)然后进一步的利用intensity去优化深度信息。因为论文是做slam,所以还需要优化位姿。

    3 ) 上面的U-net估计的是不确定性,下面VAE估计的是深度, 这样就同时估计了深度的accuracy和practicality(uncertainty) ,论文利用了一个类高斯的分布Laplace分布来计算网络训练的loss. 下面给出了论文用的Laplace 分布及其loss

    图二

    其实我么可以想一想,可不可以用一个网络来实现这个过程,输出层有两个通道,一个accuracy,一个uncertainty?

    下面我们在看一下论文后续优化深度和位姿的loss function 部分。深度图由下层网络VAE生成的,所以去优化中间的latent variable就能达到优化深度图的效果,也就是我们可以把深度看成是关于code和intensity的函数,即D (I,c). 论文可以直接初始化latent variable c (论文命名为code, 后面我也用从code)为零向量,因为训练的时候的假设就是服从0,1分布的高斯分布。(这里不要和前面的Laplace 分布高混淆,那个是关于深度的,这个是关于autoencoder中间隐变量的)。

    1)rgb A, 经过第一个U-net,得到深度的uncertainty和intensity feature; 并初始化code ca, 得到一个非常blurred的深度图D1;(稍后结合图B进行优化)(结合上面的图一来看)

    2)rgb B,同样操作,得到深度B的uncertainty和intensity feature;  并初始化code cb, 得到一个非常blurred的深度图D2;(注意图B的uncertainty, intensity feature,cb,以及D2会结合图C进行优化,论文是两两关键帧进行优化,只是在中间加全局优化。)

    3)有了两张图片A,B, 先给定pose,将第二章图片的pixel利用pose对应上他在第一张图片上的位置,计算photometrical error(也就是intensity的error), 同理计算gemetrical error,也就是深度的error

    图三

    上面就是整体的框架,需要更多细节信息的话,需要自己去细读。

    相关文章

      网友评论

          本文标题:CodeSLAM解读

          本文链接:https://www.haomeiwen.com/subject/zuqliftx.html