【泡泡机器人原创专栏】语义SLAM论文阅读精华提炼

2018 年 10 月 8 日 泡泡机器人SLAM

        从六月份开始实习,到九月找完工作,这段时间基本没有怎么在碰过语义SLAM这个课题了,国庆放假趁着这个时间把语义SLAM做了一个简单的梳理,看了一些论文,做了一些简单的总结。今年明显语义SLAM方向的论文多了起来,去年的时候,刚刚开始入坑语义SLAM发现论文很少,自己也没有形成一个系统的思路,搞了一段时间的深度学习,再搞一段时间的SLAM,弄的自己很尴尬,SLAM的基础在搞完深度学习之后也忘得差不多了,找工作的时候,深度学习的offer好几个,SLAM就一个,关于语义SLAM个人觉得目前离应用还很远,语义SLAM的坑很少,而且语义SLAM的精度目前并没有对传统的SLAM的精度有一个质的飞跃,所以企业可能还没有关注到这一块,或者说没有打算用这一块,但是学术界的研究明显越来越多了,这是一个趋势。对于以工作为主的同学,我觉得还是做做VIO吧,这个目前需求很大。后续我还会继续分享一些语义SLAM的文章,欢迎关注我的知乎专栏slam学习之旅!



语义SLAM应当是语义信息和几何信息的一个融合,这与语义地图的概念不一样,有很多论文都是用的SLAM估计位姿,然后将语义信息通过位姿形成递归贝叶斯的映射,这与其是有了一个很强的假设,就是SLAM的位姿估计是绝对准确的,而语义SLAM我个人认为应当是一种两者交互融合的过程,思路我个人觉得其实可以借鉴多传感器融合的思路,因为语义信息本身就是一个新的信息来源,借鉴多传感器融合的思路的话就会存在一个问题,如何去设计光度误差或者重投影误差,或者说重新去定义一个新的误差函数。



除了这种多传感器的思路之外,语义信息用来辅助定位个人觉得也是语义SLAM的另外一种思路,因为SLAM里面传统的定位方式主要是依靠描述子来实现的,但是这些描述子往往对光照变化不太鲁棒,所以这也是一种思路。那么对于定位问题而言,其实就不一定是非要将整个语义信息做一个耦合。基于优化的SLAM方法需要耦合(因为需要去设计使得损失函数最小),但是基于滤波的SLAM方法,并不需要耦合,这个相对来说难度会低一些。



Object-Centric Photometric Bundle Adjustment with Deep Shape Prior

本文发表在WACV2018会议上,是CMU的一个工作,这篇文章不能算是SLAM的一个工作,属于SFM,但是其思路值得借鉴。传统的·SFM是纯几何的误差,不考虑几何形状先验,深度学习则是完全抛弃了集合误差。(对于语义SLAM而言,其实也是一样啊).传统的SFM主要是通过特征对应(重投影误差)、光度一致性(光度误差)、轮廓约束,虽然这些都是能达到较为先进的水平,但是目前在低纹理区域、镜面反射区域等还是存在一定缺陷,本文其实就是探索一种方法。



在最小化光度误差的时候,由于逆深度和相机位姿赋予了整个系统较为强烈的几何约束,但是这种约束通常在图像梯度较强的边缘比较有效果,对于弱纹理区域仍然存在较大的缺陷,而基于深度学习的重建方法,能够较好的克服这种缺陷。



本文的主要贡献:1.点与点之间的关联是有深度学习网络输出构成2.与传统的深度学习相比,在推理是必须保证其几何一致性3.证明了形状变化相对于相机位姿和几何位置是可微的(其实这个就是一个比较关键的问题,如果通过多传感器融合的思路来实现,就必须要证明误差项相对于相机位姿和几何位置是可微的)



论文中根据深度学习生成的几何轮廓通过伪渲染的方式(就是将3D投影到2D)能够得到将几何形状转换为二维表示,形成一个可微方程。同时由于引入了这样的一个可微过程,所以他在做BA的时候,用的就不再是高斯牛顿法,因为雅克比无法求(深度学习黑箱有点麻烦),而是选择SGD、LBFGS这一类基于梯度的优化算法。



作者在论文中探讨了形状的先验在优化过程中所扮演的角色:在逆投影回去的时候,其实只有三维形状的一部分点是可见的,但是有了形状先验,就可以去更新所有点的位置(包括可见点和不可见点)。



论文中提到基于光度误差损失在所有点都不再当前帧的条件下,给出了一个0损失,这是不合理的,因此引入了倒角距离损失作为一个补充约束。


优化算法如下:


与这篇论文相关的文章如下,它是介绍伪渲染函数的,应该算是本篇论文的一个基础工作。

Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction


Long-term Visual Localization using Semantically Segmented Images

这篇论文是发表在ICRA2018上的一篇论文,主要是用来解决无人车在跨度时间较长的情况下的一个定位问题。传统的描述子对于这种光照变化会比较的敏感,所以在时间跨度较大的场景下并不能适用。本文提出了基于语义的定位方法,用语义分割去替代了特征描述子,用基于粒子滤波的方式实现了定位。

在长期定位过程中定位失败的主要原因其实是在于无法找到一个不变的特征,因为基于描述子的特征如SIFT,ORB等随着时间的变化(跨季节)会发生改变。本文设计了一种依赖于语义label和3D位置的定位算法。这个问题就变成了:给定观测的情况下如何递归的就算相对于地图,车辆的姿态的后验概率。

本文基于滤波的思路实现了定位,这里的定位特征用了SIFT和语义分割后的特征。





这里面我觉得比较有意义的就是基于语义特征的观测模型,对于SIFT和语义的观测模型都可以写成如下定义:


定义说明:λ_t是数据关联表示向量,x_t表示状态,M表示地图,f_t表示观测,由两部分组成,一部分是标准化的图像坐标,一部分是相关的描述符向量。



对于SIFT的观测模型就比较常规,也没什么可说的,这里主要是介绍基于语义的观测模型。这里有一个假设是像素的语义类别和他的坐标相互独立(这个假设其实有些不太合理,做过深度学习的应该都知道,但是作者为了简化只能这样假设,当然作者后面做了一些约束的,公式13):


然后进一步发现第一项是通过网络输出的,所以是一个常量,暂时无法优化它(深度学习黑箱),所以它正比于第二项:



对于右边的公式,存在两种情况:地图中是否已知类别信息,如果没有,则假设像素分布是类别的边缘分布,则有:



如果地图中有了类别信息,那么还存在两种情况,物体是否被遮挡,所以这里引入了一个中间变量:



最终就将这个语义定位的后验概率写出来了:



这篇论文有的地方我细节理解的还不是很透彻,欢迎大家一起讨论。作者在最后也说了,如何将几何特征与语义特征结合起来,将是他们下一步的work。

与此相关的论文还有一篇:

Long-term 3D Localization and Pose from Semantic Labellings(ICCV2017)



VSO: Visual Semantic Odometry

这篇论文是发表在ECCV2018上面的,这篇论文的思路其实并不复杂,核心问题还是在于如何去设计损失函数,以及如何对损失函数求最小化。


数据关联是视觉里程计的一个核心问题,对于短期的数据关键通常采用帧对帧的跟踪,长期的数据关联采用的是回环检测,作者用语义信息实现了一个中期的数据关联,并取得了一个不错的效果。由于语义信息是一种相对高层次的抽象信息,因此在较长一段时间内语义信息都不会发生改变,而几何信息则很容易跟丢,因此本文基于这个思考提出了一种融合语义信息的视觉里程计,并且将语义信息约束融合到了位姿和路标位置的优化当中。


本文的主要贡献:1.提出了一个语义重投影误差,并且通过EM算法能够优化该误差,并且该误差与所使用的语义分割方法无关;2.本文的方法可以显著降低自动驾驶环境下的平移误差,并且能够很容易的嵌入到现有的SLAM方法当中;3.对我们的方法进行了分析,指明了适用条件。本文使用距离变换将物体分割边缘作为一个约束,利用最小化重投影误差的方式将整个问题进行了求解。


这里主要介绍一下语义误差项,论文中是如何定义的,其他的详细过程请看原论文。作者的语义误差项思路也很直接,因为每一帧分割出来之后都是稠密的点,所以就直接点与点对应:



论文中一个非常重要的创新就是在于定义了一个距离变换,同一类物体在不同帧下观测到的类别应该是一样的,这个概率会随着离物体的距离的增加而降低,因此定义了一个距离变换。


这是一步很关键,它直接将距离变换为了概率,这样才能加入计算。这个关系的推导在文章的附录里面有,感兴趣的可以仔细去看看。有了这个之后,其实就很好定义损失函数了,很直观的想法就是让这个似然最大,那么损失函数就可以写为:



这里有一个比较重要的参数w_i,它表示的是三维点的各个label的概率向量,注意它这里是指三维点的,不是二维分割之后的(其实可以理解为先验,我还没有分割这一帧之前,我已经通过之前的分割已知的,分割完了就可以更新一下)。它的计算更新规则如下:



把问题解释清楚了,接下来就是如何去求解这个问题,这里用的是EM的方法去去求解的。


对于语义损失项首先优化权重(E步),随后优化相机位姿和3D点(M步),这里M步可以通过g2o或者Ceres用LM优化方法求解。作者在论文中提到了如果仅用一个点来进行约束,存在多个解,用多个点的语义来约束则不会出现这种情况。



在优化的时候,作者提出了4点:1.语义信息与基本的视觉里程计信息一起执行;2.多点语义信息优化单个位姿信息;3.这优化相机位姿而没有优化点的位置;4.通过不间断的语义优化,可以降低三维点的错误投影。


与这篇文章同样用EM方法解决数据关联的论文还有ICRA2017的视觉领域的best paper:

Probabilistic Data Association for Semantic SLAM



DL-SLAM: A Semantic Visual SLAM toward Dynamic Environment

这篇论文是清华大学的,发表在IROS2018上面,等IROS论文集出了,估计会有不少语义SLAM的工作,研究者针对动态环境提出了基于语义信息的鲁棒SLAM系统,包括了五个线程:跟踪,语义分割,局部建图,回环检测和稠密语义映射。作者在TMU数据集上相比ORB-SLAM绝对轨迹精度提升了一个数量级。


本文中作者将光流(用于运动一致性检验)与分割网络(语义信息抽取)相结合,主要贡献如下:

1.     基于ORB-SLAM2 提出了动态环境(DS-SLAM)中的完整语义SLAM系统,可以减少动态对象对姿态估计的影响。

2.     将语义分割与运动一致性检验结合,滤除了动态环境的干扰,提升了定位和建图的精度。

3.     DS-SLAM有一个单独的稠密建图线程,能滤除掉了语义不确定的体素,并且更新语义信息。

本文的整体框架是基于ORB-SLAM2来展开的,其实就是在ORBSLAM2的基础上增加了一些线程和操作,具体框架如下图所示:


首先提取ORB特征,并且对特征点的移动进行粗略筛选(估计就是RANSAC,此处并没有剔除异常值),等到分割后的结果出来之后,位于移动物体上的外点(异常点)将会被剔除,然后再匹配其余点进行位姿估计,这里的语义分割网络用的SegNet。


在论文中提到了一个运动一致性检验,作者这里使用的是光流金字塔。首先,计算光流金字塔得到特征匹配点;然后,如果匹配点对太靠近图像的边缘或者3*3的·图像块差异过大则匹配无效;随后,通过RANSAC求解矩阵;最后,确定从匹配点到其对应的极线的距离是否小于某个阈值,若大于则匹配点移动。

由于运动一致性检验难以提取物体的轮廓,所以作者这里用了语义分割来提取轮廓,如果通过移动一致性检查产生一定数量的动态点落在分割对象的轮廓中,则确定该对象正在移动。如果确定分割的对象正在移动,则移除位于对象轮廓中的所有特征点。


最后作者用八叉树建立了语义地图,同时滤除了动态场景的影响。从这篇论文来看,可能思路上面并不是很复杂,用深度学习来滤除运动物体也是一个非常直观的想法,之前我一直就想做,可惜没做出来,工程上需要处理的东西应该不少。


参考资料:

https://mp.weixin.qq.com/s/rsOQ1cIm_etCQtiX-j6otw

https://zhuanlan.zhihu.com/p/45689132

http://www.liuxiao.org/2018/08/semantic-slam-文章收集/

登录查看更多
6

相关内容

即时定位与地图构建(SLAM或Simultaneouslocalizationandmapping)是这样一种技术:使得机器人和自动驾驶汽车等设备能在未知环境(没有先验知识的前提下)建立地图,或者在已知环境(已给出该地图的先验知识)中能更新地图,并保证这些设备能在同时追踪它们的当前位置。
【开放书】SLAM 中的几何与学习方法,62页pdf
专知会员服务
107+阅读 · 2020年6月5日
专知会员服务
109+阅读 · 2020年3月20日
专知会员服务
84+阅读 · 2019年12月13日
【斯坦福&Google】面向机器人的机器学习,63页PPT
专知会员服务
23+阅读 · 2019年11月19日
【开源书】PyTorch深度学习起步,零基础入门(附pdf下载)
专知会员服务
107+阅读 · 2019年10月26日
【泡泡机器人】也来谈语义SLAM/语义地图
泡泡机器人SLAM
20+阅读 · 2019年3月12日
最近一年语义SLAM有哪些代表性工作?
计算机视觉life
6+阅读 · 2019年1月7日
【泡泡机器人】一文带你入门语义SLAM
泡泡机器人SLAM
29+阅读 · 2017年11月29日
专栏|语义SLAM的重要性,你造吗?
智东西
7+阅读 · 2017年9月5日
Neural Approaches to Conversational AI
Arxiv
8+阅读 · 2018年12月13日
Structure Aware SLAM using Quadrics and Planes
Arxiv
4+阅读 · 2018年8月13日
VIP会员
相关VIP内容
相关资讯
【泡泡机器人】也来谈语义SLAM/语义地图
泡泡机器人SLAM
20+阅读 · 2019年3月12日
最近一年语义SLAM有哪些代表性工作?
计算机视觉life
6+阅读 · 2019年1月7日
【泡泡机器人】一文带你入门语义SLAM
泡泡机器人SLAM
29+阅读 · 2017年11月29日
专栏|语义SLAM的重要性,你造吗?
智东西
7+阅读 · 2017年9月5日
Top
微信扫码咨询专知VIP会员