时间:2019.07 作者:干磊
背景:本文统计的是2018年及以前的相关论,未涉及2019年的论文。
1,深度学习+SLAM的可行性
2,深度学习+SLAM的 5 个主要研究方向
3,单目SLAM学习尺度/深度
特点:
示例1:
示例2:
示例3:单目深度估计和视觉里程计无监督学习
本文工作的目标是解决无监督学习的尺度不确定问题,采用双目数据联合训练深度估计和视觉里程计网络,应用时只需单目图像输入即可,即可得到深度估计值和单目相机的转移矩阵(可实现视觉里程计的功能)。作者设计了基于帧到帧的视觉里程计,性能显著优于同类无监督学习方法,且与基于几何的方法相当。
参考文章:
[1] CNN-SLAM: Real-time dense monocular SLAM with learned depth prediction(2017)
[2] GEN-SLAM: Generative Modeling for Monocular Simultaneous Localization and Mapping(2019)
[3] Unsupervised Learning of Monocular Depth Estimation and Visual Odometry with Deep Feature Reconstruction(2018),https://github.com/Huangying-Zhan/ Depth-VO-Feat
4,相机重定位 / 闭环检测
特点:
示例1:
评价:
参考文章:
[1] PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization(2015),https://github.com/alexgkendall/caffe-posenet
[2] 基于深度学习的视觉SLAM闭环检测的性能评估,本文主要的贡献是对目前主流深度神经网络,比如PCANet,CaffeNet,AlexNet,GoogleNet和传统的词带模型(BoW)和全局特征信息(GIST)在闭环检测中的性能表现做了比较分析。
5,前端提取特征和匹配
特点:
示例1:
Magic Leap 17年放出的文章 Toward Geometric Deep SLAM 提出了一种基于CNN的提取特征点及匹配方法,包含两个网络,第一个用于提取二维特征点,第二个用于输出二维特征点的单应矩阵。无需描述子,无需繁杂的图像预处理,可以准确的定位到了物体的每个角点,高速轻量,在单核CPU上可达30fps,但代码未开源。
示例2:
发表于ECCV16的 LIFT 提出了一种新型的深度网络,实现了完整的特征处理pipeline:包括检测,方向估计和特征描述。能提取出相比SIFT更加稠密的特征点,且给予了其端到端架构较好的解释性。从实验结果看来在几个数据集上的表现吊打目前所有传统的及基于DL的特征方案(包括SIFT),但未给出运行时间数据,估计其速度应该比较堪忧。
示例3:
这篇文章提出了一种基于深度学习的关键字和描述符生成网络GCNv2,它基于为三维投影几何而训练的GCN而来。GCNv2设计了一个二进制描述符向量作为ORB特征,以便在诸如ORB-slam等系统中方便的替换ORB。代码可以在GitHub上找到。
参考文章:
[1] Toward Geometric Deep SLAM(2017)
[2] LIFT: Learned Invariant Feature Transform(2016),http://t.cn/RiepX4E
[3] GCNv2: Efficient Correspondence Prediction for Real-Time SLAM(2019),https://github.com/jiexiong2016/GCNv2_SLAM
6,端到端学习相机位姿
特点:
示例1:
示例2:
示例3:
CVPR17的DeMoN: Depth and Motion Network for Learning Monocular Stereo,和前面的SfM-Learner较为相似,使用pose,depth作为监督信息,来估计pose和depth。
示例4:
ICRA18的UnDeepVO,利用双目图像信息进行无监督训练网络得到尺度,并用于单目SLAM,可以估计单目相机的6自由度位姿以及使用深度神经网络估计单目视角的深度。UnDeepVO有两个显著的特性:一个是无监督深度学习方法,另一个是绝对尺度恢复。在KITTI数据集上的效果高于前面的SfM-Learner和不开闭环的ORB-SLAM。
评价:
参考文献:
[1] SfM-Learner:Unsupervised Learning of Depth and Ego-Motion from Video(2017),https://github.com/tinghuiz/SfMLearner
[2] SfM-Net: Learning of Structure and Motion from Video(2017),非官方的TensorFlow代码:https://github.com/waxz/sfm_net,https://github.com/augustelalande/sfm
[3] DeMoN: Depth and Motion Network for Learning Monocular Stereo(2017),https://github.com/lmb-freiburg/demon
[4] UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning(2018)
7,语义SLAM
特点:
示例1:构建语义地图
前面提过的 CNN-SLAM 除了用CNN估计深度外,还用了CNN做图像语义分割,然后将geometry和semantic融合起来,生成具有语义信息的地图。
示例2:构建语义地图
2016年的工作 Semi-Dense 3D Semantic Mapping from Monocular SLAM,利用 LSD-SLAM 作为框架,引入DL进行语义地图构建,选择关键帧进行做深度学习实现语义分割,之后选择相邻的几帧做增强。本质上是做了二维语义分割,然后利用SLAM投影到三维空间中去。可在室内外环境工作。
示例3:
Meaningful Maps With Object-Oriented Semantic Mapping,输入RGB-D图像 -> ORB-SLAM2应用于每一帧,SSD(Single Shot MultiBox Detector)用于每一个关键帧进行目标检测,3D无监督分割方法对于每一个检测结果生成一个3D点云分割 -> 使用类似ICP的匹配值方法进行数据关联,以决定是否在地图中创建新的对象或者跟已有对象建立检测上的关联 -> 地图对象的3D模型(3D点云分割,指向ORB-SLAM2中位姿图的指针,对每个类别的累计置信度)。
示例4:
ICRA17 best paper 的 Probabilistic data association for semantic SLAM 在数学上很有条理很严谨地解答了SLAM几何上的状态(sensor states)和语义的地标(semantic landmark)一起构成的优化问题,在ORB-SLAM2的基础上引入DL来进行语义SLAM中的数据关联,语义识别物体,并将目标检测的结果作为SLAM前端的输入,与传统特征互补提高定位鲁棒性。难点在于detection结果的data association最好能和定位联合优化,即构建紧耦合优化,但前者是个离散问题。文章利用EM算法首次针对融合了语义信息的SLAM问题给出了求解思路。作者通篇是公式,没有给出网络框架,没有找到源代码。
示例5:语义视觉里程计
示例6: 3D目标检测与跟踪,定位
SLAM 是一个多传感器融合的框架,RGB、激光、语义、IMU、码盘等等都是不同的观测,所以只要是解决关于定位的问题,SLAM 的框架都是一样适用的。在这篇文章中,他们将不同物体看成不同的 Map,一边重建一边跟踪。使用的跟踪方法仍然是传统的 Local Feature,而 VIO 作为世界坐标系的运动估计。语义融合方面,他们构造了4个优化项,最终取得了很好的效果。
示例7:自动驾驶中基于语义分割的定位
《Long-term Visual Localization using Semantically Segmented Images》,这篇论文讲得比较有意思,它不是一个完整的SLAM系统,不能解决Mapping的问题。它解决的问题是,当我已经有了一个很好的3D地图后,我用这个地图怎么来定位。在传统方法中,我们的定位也是基于特征匹配的,要么匹配 Local Feature 要么匹配线、边等等几何特征。而我们看人在定位时的思维,其实人看不到这么细节的特征的,通常人是从物体级别去定位,比如我的位置东边是某某大楼,西边有个学校,前边有个公交车,我自己在公交站牌的旁边这种方式。当你把你的位置这样描述出来的时候,如果我自己知道你说的这些东西在地图上的位置,我就可以基本确定你在什么地方了。这篇文章就有一点这种意思在里边,不过它用的观测结果是分割,用的定位方法是粒子滤波。它的地图是三维点云和点云上每个点的物体分类。利用这样语义级别的约束,它仍然达到了很好的定位效果。可想而知这样的方法有一定的优点,比如语义比局部特征稳定等;当然也有缺点,你的观测中的语义信息要比较丰富,如果场景中你只能偶尔分割出一两个物体,那是没有办法work的。
参考文献:
[1] Semi-Dense 3D Semantic Mapping from Monocular SLAM(2016)
[2] Meaningful Maps With Object-Oriented Semantic Mapping(2017)
[2] Probabilistic data association for semantic SLAM(2017)
[3] VSO: Visual Semantic Odometry(2018)
[6] Long-term Visual Localization using Semantically Segmented Images(2018)