CodeSLAM论文学习

CodeSLAM - Learning a Compact, Optimisable Representation for Dense Visual SLAM

该文是帝国理工学院戴森机器人实验室在2018年在CVPR上发表的论文,并且是一篇Best Paper。

主要贡献

  1. 通过对灰度图的自动编码器进行调节,推导出地图的紧凑表示。
  2. 实现了一个实时的单目SLAM系统,可以实现相机运动和地图的同时优化。

本文主要是在自动编码器上下功夫,并结合图像几何信息实现了单目相机的密集SLAM。对于一张rgb图像,利用一个U-net去提取特征及估计深度的不确定性,并利用另外一个变分自动编码器以编码和解码一个初始的深度值,然后联合两帧图像的相关信息来优化相机位姿及进一步估计深度。

算法流程

1、网络架构

基于图像强度的深度变分自动编码器的网络体系结构。
上半部分使用U-Net,左边是一个下采样的过程,将灰度图拆分为高维度的特征表示,得到的是一个抽象的特征,接着是一个带有跳层的上采样部分,负责将抽象的特征进行细化,还原到原来的尺寸,跳层的作用是联系输入图像的信息,有助于还原抽象的特征。本文的U-Net估计了4个不同尺寸的关于深度的不确定性,并提取了图像强度特征。

然后使用这些图像强度特征对深度进行编码和解码。下半部分是一个变分自动编码器结构(VAE),下采样通过改变卷积步长来实现,而上采样则使用双线性插值,自动编码器的瓶颈部分包括两个全连接层。然后计算平均值和方差,采用KL散度来优化这个VAE,最终输出四个等级的预测平均值μ和深度的不确定度b。

本文利用了一个类高斯的分布Laplace分布来计算网络训练的loss,为什么要用这个Laplace分布呢?因为他的尾部比高斯分布更重,可以看下图。

p ( d ~ ∣ μ , b ) ) = 1 2 b exp ⁡ ( − ∣ d ~ − μ ∣ b ) p(\tilde{d} | \mu, b))=\frac{1}{2 b} \exp \left(-\frac{|\tilde{d}-\mu|}{b}\right) p(d~μ,b))=2b1exp(bd~μ)
蓝为Laplace分布,绿为高斯分布
对Laplace分布求一个对数,并取负,这里将常数忽略了。

− log ⁡ ( p ( d ~ ∣ μ , b ) ) = ∣ d ~ − μ ∣ b + log ⁡ ( b ) -\log (p(\tilde{d} | \mu, b))=\frac{|\tilde{d}-\mu|}{b}+\log (b) log(p(d~μ,b))=bd~μ+log(b)

论文将数据集的深度值转换为范围[0,1]。为此,采用了混合深度参数化,称之为接近度,如下式,给定一个平均深度值a,它将[0,a]中的深度映射到[0.5,1.0](类似于常规深度),并将[a,∞]的深度映射到[0,0.5](类似于逆深度)。

p = a d + a p=\frac{a}{d+a} p=d+aa

2、仿射变换

对于每一张图像 I A I_{A} IA存在一个对应的代码 c A \boldsymbol{c}_{A} cA,视角A和视角B间的变换关系为 w ( u , c A , T A B ) = π ( R A B π − 1 ( u , D A [ u ] ) + B t A B ) w\left(\boldsymbol{u}, \boldsymbol{c}_{A}, \boldsymbol{T}_{A}^{B}\right)=\pi\left(\boldsymbol{R}_{A}^{B} \pi^{-1}\left(\boldsymbol{u}, D_{A}[\boldsymbol{u}]\right)+_{B} \boldsymbol{t}_{A}^{B}\right) w(u,cA,TAB)=π(RABπ1(u,DA[u])+BtAB),可以参照下图进行理解,其中 π \pi π是投影, π − 1 \pi^{-1} π1是反投影, R A B \boldsymbol{R}_{A}^{B} RAB可以理解为视角A转换为视角B的方向旋转矩阵, B t A B _{B} \boldsymbol{t}_{A}^{B} BtAB可以理解为视角A到视角B的位置平移矩阵。
视角转换
对于的雅克比矩阵为
∂ I B [ v ] ∂ B t A B = ∂ I B [ v ] ∂ v ∂ π ( x ) ∂ x ∂ I B [ v ] ∂ R A B = ∂ I B [ v ] ∂ v ∂ π ( x ) ∂ x ( − R A B π − 1 ( u , d ) ) × ∂ I B [ v ] ∂ c a = ∂ I B [ v ] ∂ v ∂ π ( x ) ∂ x R A B ∂ π − 1 ( u , d ) ∂ d ∂ D A [ u ] ∂ c A \begin{array}{l}{\frac{\partial I_{B}[\boldsymbol{v}]}{\partial_{B} \boldsymbol{t}_{A}^{B}}=\frac{\partial I_{B}[\boldsymbol{v}]}{\partial \boldsymbol{v}} \frac{\partial \pi(\boldsymbol{x})}{\partial \boldsymbol{x}}} \\ {\frac{\partial I_{B}[\boldsymbol{v}]}{\partial \boldsymbol{R}_{A}^{B}}=\frac{\partial I_{B}[\boldsymbol{v}]}{\partial \boldsymbol{v}} \frac{\partial \pi(\boldsymbol{x})}{\partial \boldsymbol{x}}\left(-\boldsymbol{R}_{A}^{B} \pi^{-1}(\boldsymbol{u}, d)\right)^{\times}} \\ {\frac{\partial I_{B}[\boldsymbol{v}]}{\partial \boldsymbol{c}_{a}}=\frac{\partial I_{B}[\boldsymbol{v}]}{\partial \boldsymbol{v}} \frac{\partial \pi(\boldsymbol{x})}{\partial \boldsymbol{x}} \boldsymbol{R}_{A}^{B} \frac{\partial \pi^{-1}(\boldsymbol{u}, d)}{\partial d} \frac{\partial D_{A}[\boldsymbol{u}]}{\partial \boldsymbol{c}_{A}}}\end{array} BtABIB[v]=vIB[v]xπ(x)RABIB[v]=vIB[v]xπ(x)(RABπ1(u,d))×caIB[v]=vIB[v]xπ(x)RABdπ1(u,d)cADA[u]
其中 × \times ×对应下列等式
v = w ( u , c A , T A B ) x = R A B π − 1 ( u , D A [ u ] ) + B t A B d = D ( I A , c A ) [ u ] \begin{aligned} \boldsymbol{v} &=w\left(\boldsymbol{u}, \boldsymbol{c}_{A}, \boldsymbol{T}_{A}^{B}\right) \\ \boldsymbol{x} &=\boldsymbol{R}_{A}^{B} \pi^{-1}\left(\boldsymbol{u}, D_{A}[\boldsymbol{u}]\right)+_{B} \boldsymbol{t}_{A}^{B} \\ d &=D\left(I_{A}, \boldsymbol{c}_{A}\right)[\boldsymbol{u}] \end{aligned} vxd=w(u,cA,TAB)=RABπ1(u,DA[u])+BtAB=D(IA,cA)[u]

3、逐帧优化

在这里插入图片描述
每帧图像都有 I i I_{i} Ii都有对应的编码 c i \boldsymbol{c}_{i} ci和深度 D i D_{i} Di,结合估计出的位姿 T i \boldsymbol{T}_{i} Ti可以推导出光度误差和几何误差,如下面两个公式所示,通过高斯牛顿法来对其进行联合优化。
E pho  = L p ( I A [ u ] − I B [ w ( u , c A , T A B ) ] ) E geo  = L g ( D A [ u ] − D B [ w ( u , c A , T A B ) ] ) \begin{array}{l}{E_{\text {pho }}=L_{p}\left(I_{A}[\boldsymbol{u}]-I_{B}\left[w\left(\boldsymbol{u}, \boldsymbol{c}_{A}, \boldsymbol{T}_{A}^{B}\right)\right]\right)} \\ {E_{\text {geo }}=L_{g}\left(D_{A}[\boldsymbol{u}]-D_{B}\left[w\left(\boldsymbol{u}, \boldsymbol{c}_{A}, \boldsymbol{T}_{A}^{B}\right)\right]\right)}\end{array} Epho =Lp(IA[u]IB[w(u,cA,TAB)])Egeo =Lg(DA[u]DB[w(u,cA,TAB)])

  1. 图像A经过U-net,得到深度的不确定性和图像强度特征;,并初始化得到代码 c A \boldsymbol{c}_{A} cA ,得到一个非常模糊的深度图 D A \boldsymbol D_{A} DA,注意,图像A的不确定性、深度、代码 c A \boldsymbol{c}_{A} cA将结合下一帧B进行优化;
  2. 图像B进行同样操作,得到深度的不确定性和图像强度特征,并初始化代码 c B \boldsymbol{c}_{B} cB,得到一个非常模糊的深度图 D B \boldsymbol D_{B} DB,注意图B的不确定性、深度、代码 c B \boldsymbol{c}_{B} cB将结合下一帧C进行优化;
  3. 有了两张图片A,B的深度等信息, 先给定位置,利用图A的像素 u \boldsymbol{u} u在图B上找到对应的像素 v \boldsymbol{v} v,计算光度误差和几何误差。
  4. 根据光度误差和几何误差对代码 c A \boldsymbol{c}_{A} cA进行优化。

4、结果

结果图我就不放了,说实话,他这个结果图我是真的看不下去,就零代码重建和编码后的有明显的区别,编码后的与优化后的,恕本人眼拙,实在看不出来,你好歹给个数值吧,这我也能知道优化后有变化啊。

5、论文地址

本人对这篇文章只是浅薄的理解,想要更深层次的理解,请去看原文
CodeSLAM原文地址
有条件的人可以去Youtube上面看一下原视频,有助于理解该文
CodeSLAM视频

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
http://www.iri.upc.edu/people/jsola/JoanSola/eng/toolbox.html EKF-SLAM TOOLBOX FOR MATLAB NEWS Upgrade 2012/04/22: Added support for Omni-directional cameras for ahmPnt and eucPnt points. From 2011/09/03 to 2011/09/08: a bug in the package released between these 5 days caused the toolbox to completely fail. Download the current version below. 2010/09/04: BUG FIX: Corrected bug in code for IDP. If you just want the bug fix, click here. Toolbox versions after 2011/09/08 are already fixed. INTRODUCTION This toolbox performs 6DOF SLAM using the classical EKF implementation. It is conceived as an "active-search" SLAM. It is provided for free under the GPL license (please read the file COPYING and make sure you agree in the terms and conditions before using it). Users employing the toolbox for scientific research should cite in their scientific communications one of the papers of the authors (especially SOLA-ETAL-IJCV-11, SOLA-ETAL-TRO-08) appearing in the References section of the documentation, and also acknowledging the use of this toolbox. • Download the 6DOF SLAM toolbox for Matlab. • Please email me with feedback, I will appreciate. • Read the pdf doc to have an idea. • Features: o Full 6DOF. o Points and lines, with many different parametrizations. Consult the IJCV'11 paper on landmark parametrization. o 3D graphics. o Works with any number of robots and sensors. o Monocular and stereo systems are treated alike. o Supports extrinsic self-calibration of multi-camera rigs as in our TRO'08 paper. • The toolbox supports undelayed initialization of the following landmark types: o ahmPnt : Anchored homogeneous points. See video. This parametrization performs equivalently to Inverse-depth points in filter consistency. o idpPnt : Inverse-Depth points, with conversion to Euclidean points (eucPnt) after confirming linearity. This follows Civera's TRO-08 paper on Inverse-depth parametrization. Seevideo. Also called Anchored Modified-polar points (AMPP) in SOLA-IJCV'11. o hmgPnt : Homogeneous points. See video. o fhmPnt : Framed Homogeneous points. We follow a work by Simone Ceriani et. al., 2011. o plkLin : Plucker lines as explained in our IROS-09 paper. See video. o aplLin : Anchored Plucker lines. See video. o idpLin : Inverse-depth points lines. See video. Also called Anchored Modified-polar points lines (AMPPL) in SOLA-IJCV'11. o hmgLin : Homogeneous-points lines. See video. o ahmLin : Anchored homogeneous-points lines. See video. o See this video that compares idpPnt against ahmPnt and hmgPnt points, showing the superior consistency of idpPnt and ahmPnt because of over-estimation of the covariance in hmgPnt.(note: in the video, hmgPnt is labeled HP, ahmPnt is AHP, and idpPnt is AMPP.) o See this video with all line parametrizations running in parallel. BUG FIXES BUG (fixed in toolbox releases after 2011/09/08): The Jacobians of the idpPnt initialization function were incorrect. This derived in a poor performance of idpPnt points. Now, idpPnt andahmPnt show equivalent performance. FIX: follow these simple steps: 1. Download this file. Unzip it. 2. Copy files idp2ahp.m and ahp2idp.m to toolbox folder %SLAMTB/Points/ 3. Copy file retroProjIdpPntFromPinHoleOnRob.m to toolbox folder %SLAMTB/Observations/ 4. Delete the obsolete bugged file %SLAMTB/Points/idpS2idpW.m from the toolbox.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值