KKHouse Blog

LO-Net:Deep Real-time Lidar Odometry

LO-Net: Deep Real-time Lidar Odometry

用图像信息做位姿估计的深度学习方法近两年工作开始出现并且在一定的条件下取得了不错的效果,如《UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning》(2017)是一种名叫UnDeepVO的新型单目视觉里程计系统,它可以可以估计单目相机的6自由度位姿以及使用深度神经网络估计单目视角的深度;

《PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization》(ICCV 2015)是首次将deep learning和SLAM进行结合的文章,该方法使用 GoogleNet 做了 6自由度相机pose 的regression

preview

《VINet: Visual-Inertial Odometry as a Sequence-to-Sequence Learning Problem》(2017)结合了惯导信息,做序列到序列的位姿学习,加入惯导信息可以整合惯导的优势帮助视觉估计出位姿;

《Sfm-Learner: Unsupervised learning of depth and ego-motion》是google在2017年提出的利用连续几帧的序列作为输入,即用到了连续帧之间的对应点变换关系去估计出里程计的位姿变换和得到深度图,文章的核心思想是利用photometric consistency原理来估计每一帧的depth和pose。photometric consistency就是对于同一个物体的点,在不同两帧图像上投影点,图像灰度应该是一样的。

img

后续google基于sfm-learner提出了它的改进版《Sfm-Net:Learning of structure and motion from video》能做到从视频中学习运动估计,论文的核心思想也是利用photometric constancy来计算pose,depth。除此之外,作者还计算了光流,scene flow,3D point cloud等。

preview

另外一篇和SfM-Net,SfM-Learner比较相似的文章:《DeMoN: Depth and Motion Network for Learning Monocular Stereo》(CVPR2017),使用pose, depth作为监督信息,来估计pose和depth。

img

对于图像和激光融合的方法,目前有使用部分激光观测的单目深度估计《Parse Geometry from a Line: Monocular Depth Estimation with Partial Laser Observation》,这里的激光是单线的2D激光数据,激光在这里主要是为单目视觉信息补充深度所用

1560583224080

目前对于纯激光信息结合深度学习做位姿估计的工作还很少,在这里介绍一篇19年发表在CVPR上的文章LO-Net。

现在大多数现有的激光雷达位姿估计的方法都是通过单独设计特征选择、特征匹配和位姿估计的框架,然后分步将他们结合起来,并没有实现端到端的打通,本文章的一个工作是提出了一种端到端的lidar odometry estimation的框架,并且它的的思想借鉴了sfm-learner,利用了前后两帧的sequence去做LO估计。

先介绍一下文章的框架

1561036342589

这个网络包含法向量估计、Mask预测子网络和位姿回归三个部分。网络用相邻两帧的点云作为输入,记为($S_{t-1}$;$S_{t}$),输出为激光雷达的Odometry pose,这里的位姿并不是相对于全局坐标系(初始点坐标系)的,只是前一时刻相对于后一时刻来说的,对此文章后续还提出了利用lidar mapping对LO-Net的输出进行refne,最终得到关于世界坐标系下pose。另一部分输出还有Mask,这里的Mask($\in [0,1]$)指的是该帧中具有空间一致性的概率,主要目的是区分出动态物体(如车辆和行人等)和静态场景。在某一个场景中,动态物体越多,代表其空间一致性越弱,因为这些动态物体会影响特征的提取。接下来分块具体解释这个网络:

对于enlargement+weighing层,思路和maxpooling+weighing是一样的,只是enlargement采用空洞卷积层来扩大感受野而不是池化

1561179195797

通过上面的操作得到了predicted mask $\mathcal{M}(X_t^{\alpha \beta})\in [0,1]$,这个说明此点附近区域是否有空间一致性(可以理解为是否为动态物体),也代表了特征的可靠程度(reliability of the feature),将$\mathcal{M}(X_t^{\alpha \beta})$加到式(5)中得到 因为这个过程没有标签和监督信息,所以网络有可能会通过把$\mathcal{M}$设为0以最小化$\mathcal{L}_n$,所以为了避免这个情况,加入一个互信息loss作为正则项: 最终,整个odometry regression部分的loss为 这里$\lambda_n$和$\lambda_r$为权重系数,是预先设置的超参。

最后是实验展示部分,作者在实验的时候选取的input sequence是3。$\lambda_n$和$\lambda_r$分别取的0.15和0.05,学习率取得0.001, batch_size = 8,$n_c = 0.01 H\cdot W$,$n_m = 100$,$n_{iter} = 15$。比较的方法为ICP-point2point, ICP-point2plane, GIP, CLS, LOAM and Velas