【泡泡机器人】也来谈语义SLAM/语义地图

2019 年 3 月 12 日 泡泡机器人SLAM


『本文来自高翔博士在知乎的回答总结整理』


SLAM发展到今天,好些人认为这已经是个Solved Problem了。然而实际去考察,你会发现这个同时『定位』与『建图』,在『定位』这端做了很多工作,但『建图』这端是明显缺乏的。按照理想中的情况,一个SLAM程序的流程应该是这样:

对陌生环境进行一次扫描,建立地图;

保存地图;

以后运行时,打开这张地图进行定位。

这基本上是SLAM的最终目标了。但是当你打开一个SLAM程序,你会发现我们只能做完第1步,往往是建完地图之后,程序退出,所有你建起来的特征点也好,稠密点云也好,surfel也好,tsdf也好,好看是好看,基本没法存下来当作地图来继续使用(顶多做个3D模型打印一下)。所以如果要问『SLAM现在做到什么程度』,我觉得大致上可以这样回答:

关于第1步,现在我们能做到比较好的实时追踪和建图。大部分研究集中在Tracking上面,不过这种方式在无闭环时必定有累计误差,我个人经验是在0.5%-1%这个数量级,也许个别方案在个别数据上看起来好一些,不过视觉肯定比激光要差一些,比仔细标定的轮速计也差一些,也比较容易受干扰,但好在是一个独立的系统,和别的能够互相补充。有回环可以消累积误差,前提是得回来,自动驾驶很多场景是车一直往前开,基本不回去。

关于第2步和第3步,有一些可能的解决方案,但是都不完善。相比来说,激光SLAM在地图这边相对统一,通常都是用2D网格和3D点云来做,与激光数据可以直接比较。视觉地图就没那么直接。很多研究并不奔着『地图复用』的目的去,通常是做完第1步之后就完全不管了,导致我们现在没有特别好的视觉地图可以用。

所以现阶段我们还能难说『视觉SLAM已经解决』这样的话,除非能够拿出一张可以随时定位的视觉地图。这部分的缺失,我认为是语义SLAM的一个很重要的动机。我们不妨想想,现在有哪些可能用来作为视觉地图的东西:

  • 高精地图,点云加人工标。这个一般学校生产不出来,只有公司里有;

  • Grid map/Occupancy map,适合激光。有RGB-D的时候可以用,纯视觉困难;

  • 特征点地图,现在SLAM里主要形式,类似ORB-SLAM2的地图,容易受光照和场景影响。

  • 点云/带标记的点云,很难用,可能有部分带半稠密重建的方法可以和点云地图做ICP。

  • 物体地图,以物体实例作为路标的地图。

  • 拓扑地图,以路径点作为节点的拓扑图,可以端到端地训练图像到路径点的映射。


所以现在看来室内比较有希望的是后面几种,自动驾驶主要是高精地图。


什么是语义SLAM?

语义SLAM的概念很模糊。你会找到许多带着『Semantic』字眼,实际上完全不在说同一件事情的论文。比如从图像到Pose端到端的VO、从分割结果建标记点云、场景识别、CNN提特征、CNN做回环、带语义标记误差的BA,等等,都可以叫语义SLAM。

但是从实用层面考虑,我觉得最关键的一点是:

用神经网络帮助SLAM提路标

提路标这件事实际上是传统SLAM非常不擅长的事情。我们用角点和边缘,是因为现在只有角点和边缘可用。如果现在有个网络,对任意一张图片都能正确找到图片里的路标,一一对应,非常鲁棒,那么后续的SLAM就是件很简单的事情。比如现在人脸关键点能够做的非常准、非常鲁棒,对各种光照下的人脸我们都能找到那几十个点。

如果我们能在道路场景或室内场景也能做到这种程度,那SLAM就完全不一样。然而现在似乎并没有这种做法,至少还没流行开来。

那么就只能退而求其次,用现有的检测和分割来帮忙提路标。如果已经知道图像中某个物体属于一个既定的类别,然后再提角点,就会比针对全图提角点要好很多。当然,如果能直接提到点,那肯定是提点更好用,检测和分割都需要一些额外的后续处理。

举一些上面谈到的地图例子。


带标记的点云是研究最多的,从很早之前就有。它的思路是把分割的结果往RGBD点云里投,然后做一个融合,RGBD+室内的场景多一些,室外也有一部分。18年比如ETH有把Mask RCNN结果投到3D中进行Instance推断然后建图的,可以达到非常细致的结果。


再早一点比如牛津的Semantic Fusion,算是比较经典的工作:



自动驾驶里也有这种类型的高精地图,举例比如说Civil maps的演示视频,点云中有标记车道线和地面箭头。后面也有带物体instance的地图:



单纯的给点云上标记的事情其实并没有太多用途。给激光用,激光ICP通常不考虑标记信息;给视觉用,视觉也没法直接和点云去匹配。所以这种五颜六色的点云来说,物体级别的地图会更加有用:

这种图的好处在于物体实际充当了SLAM中的路标的功能,它们的提取和匹配会比传统的角点更加鲁棒。你可以期待不同天气下都能提到同一个红绿灯,但你不能期待对于各种天气下同样的建筑物能提到同样的角点。

细分下去,这种基于物体的地图也可以有不同做法。比如室内环境,你可以准备一个3D模型库,只检测模型库内的物体。这种做法在早期的SLAM++和现在的一些论文中都能看到,比如这个就是存了椅子模型的:


观看本视频(video4)请到文末获取链接


这个模型更多一些,除了椅子还有很多小物体,能用地图信息修正检测结果,并且他们用的是检测而不是分割:



观看本视频(video5)请到文末获取链接


所以『把物体建出来当地图路标』其实是一个不错的思路。剩下的就是看物体有多少类,能不能支持到大多数常见的物体。就自动驾驶来说,有了车道线,你至少就能知道自己在第几根车道线之间。有了车道线地图,就能知道自己在地图上哪两根车道线之间。类别再丰富一些,能用来定位的东西就更多,覆盖范围也就更宽。

这个算是语义SLAM和传统SLAM中最不同的地方了。

以上视频来自YouTube,论文题目在视频开头处,读者可自行搜索


video4:   

https://v.qq.com/x/page/u0848a98m7f.html?pcsharecode=CdrLQDmn&sf=uri

video5:   

https://v.qq.com/x/page/p0848kefne5.html?pcsharecode=GsG7cVSL&sf=uri


登录查看更多
20

相关内容

即时定位与地图构建(SLAM或Simultaneouslocalizationandmapping)是这样一种技术:使得机器人和自动驾驶汽车等设备能在未知环境(没有先验知识的前提下)建立地图,或者在已知环境(已给出该地图的先验知识)中能更新地图,并保证这些设备能在同时追踪它们的当前位置。
【开放书】SLAM 中的几何与学习方法,62页pdf
专知会员服务
107+阅读 · 2020年6月5日
一份循环神经网络RNNs简明教程,37页ppt
专知会员服务
168+阅读 · 2020年5月6日
专知会员服务
84+阅读 · 2019年12月13日
【泡泡一分钟】变化环境下激光地图辅助视觉惯性定位
泡泡机器人SLAM
15+阅读 · 2019年5月22日
SLAM的动态地图和语义问题
计算机视觉life
23+阅读 · 2019年4月27日
语义信息与SLAM有哪些结合点?
计算机视觉life
5+阅读 · 2019年4月23日
高翔:谈谈语义SLAM/地图
计算机视觉life
32+阅读 · 2019年3月26日
【泡泡一分钟】DS-SLAM: 动态环境下的语义视觉SLAM
泡泡机器人SLAM
23+阅读 · 2019年1月18日
【泡泡机器人原创专栏】语义SLAM论文阅读精华提炼
泡泡机器人SLAM
6+阅读 · 2018年10月8日
【泡泡机器人】一文带你入门语义SLAM
泡泡机器人SLAM
29+阅读 · 2017年11月29日
推荐|视觉SLAM漫淡:机器人即时定位与地图构建!
全球人工智能
8+阅读 · 2017年9月30日
专栏|语义SLAM的重要性,你造吗?
智东西
7+阅读 · 2017年9月5日
Real-time Scalable Dense Surfel Mapping
Arxiv
5+阅读 · 2019年9月10日
Structure Aware SLAM using Quadrics and Planes
Arxiv
4+阅读 · 2018年8月13日
VIP会员
相关资讯
【泡泡一分钟】变化环境下激光地图辅助视觉惯性定位
泡泡机器人SLAM
15+阅读 · 2019年5月22日
SLAM的动态地图和语义问题
计算机视觉life
23+阅读 · 2019年4月27日
语义信息与SLAM有哪些结合点?
计算机视觉life
5+阅读 · 2019年4月23日
高翔:谈谈语义SLAM/地图
计算机视觉life
32+阅读 · 2019年3月26日
【泡泡一分钟】DS-SLAM: 动态环境下的语义视觉SLAM
泡泡机器人SLAM
23+阅读 · 2019年1月18日
【泡泡机器人原创专栏】语义SLAM论文阅读精华提炼
泡泡机器人SLAM
6+阅读 · 2018年10月8日
【泡泡机器人】一文带你入门语义SLAM
泡泡机器人SLAM
29+阅读 · 2017年11月29日
推荐|视觉SLAM漫淡:机器人即时定位与地图构建!
全球人工智能
8+阅读 · 2017年9月30日
专栏|语义SLAM的重要性,你造吗?
智东西
7+阅读 · 2017年9月5日
Top
微信扫码咨询专知VIP会员