语义SLAM和多传感器融合是自动驾驶建图和定位部分比较热门的两种技术。语义SLAM中,语义信息的数据关联相较于特征点的数据关联有所不同。我们一般用特征描述子的相似性来匹配和关联不同图像中的特征点。特征点的描述子会受到光照、视角和传感器的影响,不太适用于大尺度长周期的任务,比如自动驾驶的高精度地图。得益于深度学习的快速发展,这些影响因素对于目标识别、语义分割来说已经不是最本质的困难,因此语义信息在高精度地图中越来越受重视。

语义SLAM数据关联的基本考虑

在SLAM中,语义信息的数据关仍然是一个值得研究的问题。这个问题的关键在于,一幅图像中可能检测出数个相同类别的目标物体,如何能够正确地将其对应于地图数据中已有的该类别的3D物体。

在语义SLAM中,虽然语义目标同样可以产生某种描述子(比如深度网络中的某些层),但对于相同类别且距离较近的目标,我们可能无法确定合理的对应关系。考虑到图像中的目标(10个左右)并不如特征点那样丰富(1000个左右),错误的匹配并不方便通过RANSAC算法来排除(样本不足)。

下面列出几种有用的因素。

  • 较为准确的先验估计(姿态),比如通过IMU、GPS、里程计等。
  • 能够得到VO和目标的准确位置,比如双目、深度摄像头、结合激光等。
  • 地图中有很多(局部)唯一确定的路标物体。
  • 考虑所有可能的数据关联。

利用第一点,我们能够使用一些简单的方法建立数据关联,但此时仍需考虑错误关联的影响。

利用第二点,我们能够准确地重建出语义目标的几何特性(空间位置、朝向等)。X-View: Graph-Based Semantic Multi-View Localization这篇文章将多帧的语义目标位置组合成图,利用图匹配算法求解相机在全局地图中的位置(只定位不建图)。

利用第三点,我们能够方便地确定关联关系。比如,行车道上的交通指示牌结合文字OCR识别,能够唯一确定该路牌的位置,相当于一个全局观测。比如,考虑到交通指示牌相互之间的间距很大,在局部唯一,因此结合GPS和指示牌即可唯一确定该指示牌的位置。根据Mobileye的REM的专利描述,它们可能利用了该类信息。

第四点即是本文想讲解的一种方法。

文章的出发点和创新点

本文主要想介绍一篇基于概率模型的语义定位方法。文章名字是Semantic Localization Via the Matrix Permanent,是 University of Pennsylvania 的GRASP实验室。还有一篇类似的文章,名字是Localization from semantic observations via the matrix permanent。他们组后续一篇文章Probabilistic Data Association for Semantic SLAM得了ICRA2018最佳论文奖。

本篇文章的出发点是用概率模型建模数据关联过程,通过求解后验概率\(p(Z|Y,X)\),利用粒子滤波的框架求解姿态\(X\)。其中,\(Z\)是观测,\(Y\)是地图中的路标点(landmark),\(X\)是姿态(pose)。这里假设地图已经建立,其中路标点的位置、类别等信息已经包含在地图中。文章的模型基于很少的先验假设,只需要语义信息和一些识别算法的先验概率,因此有很广的适用范围。

这篇文章的创新点个人总结有以下几点。

  • 尝试去建立路标点和观测之间的所有可能的概率关联,而不是一对一的数据关联。这样的好处是避免一对一关联中错误关联的影响。因为在语义SLAM中,语义信息的数量相比于特征点而言是稀少的,因此不当的数据关联的个数应当尽可能的少,否则可能导致姿态估计很快出现漂移。
  • 考虑了目标识别中的错误率和漏检率。
  • 优化了后验概率的计算方法。建立整个概率分布是一个\(N!\)复杂度的问题,作者将其转化为一个多项式复杂度的问题。

作者在文章中只用了语义信息,还没有应用传统SLAM和多传感器融合的方法。如果要应用到实际中,可能可以融合一些其它的想法。另外,这篇文章并没有开源代码能够参考,运行速度上肯定也需要优化。

先写这些吧,下次再介绍一些具体的内容。

语义SLAM的数据关联和语义定位(一)的更多相关文章

  1. 语义SLAM的数据关联和语义定位(三)

    与现有方法的异同 特征点SLAM中的数据关联 先回忆一下特征点SLAM中,我们是如何处理数据关联的.下面以ORBSLAM为例. 在初始化部分,我们通过特征描述子的相似性,建立两帧之间的特征点关联,然后 ...

  2. 语义SLAM的数据关联和语义定位(四)多目标测量概率模型

    多目标模型 这部分想讲一下Semantic Localization Via the Matrix Permanent这篇文章的多目标测量概率模型.考虑到实际情况中,目标检测算法从单张图像中可能检测出 ...

  3. 语义SLAM的数据关联和语义定位(二)Semantic Localization Via the Matrix Permanent

    论文假设和单目标模型 这部分想讲一下Semantic Localization Via the Matrix Permanent这篇文章的一些假设. 待求解的问题可以描述为 假设从姿态\(x\)看到的 ...

  4. 语义slam用于高精地图和高精定位的一些想法

    最近一直在考虑语义slam在自动驾驶和辅助驾驶中的用法,研究了一下视觉为主的高精度地图+高精定位的模式,特别是mobileye的REM. 秉承先建图再定位的思路,在服务器端(云端)建图,在车端定位. ...

  5. 分享| 语义SLAM的未来与思考(泡泡机器人)

    相比典型的点云地图,语义地图能够很好的表示出机器人到的地方是什么,机器人“看”到的东西是什么.比如进入到一个房间,点云地图中,机器人并不能识别显示出来的一块块的点云到底是什么,但是语义地图的构建可以分 ...

  6. 从5个经典工作开始看语义SLAM

    本文试图概括Semantic SLAM的主要思路和近年工作,⻓期更新.但因水平有限,若有错漏,感谢指正. (更好的公式显示效果,可关注文章底部的公众号) Semantic SLAM 简介 至今为止,主 ...

  7. 最近一年语义SLAM有哪些代表性工作?

    点击"计算机视觉life"关注,置顶更快接收消息! 本文由作者刘骁授权发布,转载请联系原作者,个人主页http://www.liuxiao.org 目前 Semantic SLAM ...

  8. 语义SLAM研究现状总结

    博客转载自:https://blog.csdn.net/xiaoxiaowenqiang/article/details/81051010 原文标题:深度学习结合SLAM 语义slam 语义分割 端到 ...

  9. 三维重建5:场景中语义分析/语义SLAM/DCNN-大尺度SLAM

    前言: 在实时/非实时大规模三维场景重建中,引入了语义SLAM这个概念,参考三维重建:SLAM的尺度和方法论问题和三维重建:SLAM的粒度和工程化问题 .大规模三维场景重建的尺度增大,因此相对于整个重 ...

随机推荐

  1. spring boot 中使用swagger 来自动生成接口文档

    1.依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swa ...

  2. MapReduce中的partitioner

    1.日志源文件: 1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 ...

  3. centos 7 hadoop的安装和使用

    准备工作 安装jdk 用户免密登录 安装参考文章: http://blog.csdn.net/circyo/article/details/46724335 http://www.linuxidc.c ...

  4. android开发学习——day6

    关于UI的几个插件学习 button和textview,以及点击button利用Toast提醒,editText private EditText editText; @Override protec ...

  5. springMVC容器和Spring容器

    前段时间有人问我,为什么一定要在web.xml中配置spring的listener呢? <listener> <description>spring监听器</descri ...

  6. Linux下自动清理超过指定大小文件的方法

    由于线上业务用的squid,根据经验值如果长时间运行则缓存目录下的swap.state会慢慢变大,一旦超过60M,squid的性能就会急剧下降,因此需要定时去清理大于60M的swap.state文件. ...

  7. Spring AOP切面变成——创建增强类

    说明 Spring使用增强类定义横向逻辑,同时Spring只支持方法连接点,增量类还包含在方法的哪一点添加横切代码的方位信息.所以增强既包含横向逻辑,又包含部分连接点的信息. 类型 按着增强在目标类方 ...

  8. Python爬虫框架Scrapy

    Scrapy是一个流行的Python爬虫框架, 用途广泛. 使用pip安装scrapy: pip install scrapy scrapy由一下几个主要组件组成: scheduler: 调度器, 决 ...

  9. V8源码边缘试探-黑魔法指针偏移

    这博客是越来越难写了,参考资料少,难度又高,看到什么写什么吧! 众多周知,在JavaScript中有几个基本类型,包括字符串.数字.布尔.null.undefined.Symbol,其中大部分都可以在 ...

  10. Mac 自带的Apache php 狼神的

    开启服务:sudo /usr/sbin/apachectl start 停止服务:sudo /usr/sbin/apachectl stop 重启服务:sudo /usr/sbin/apachectl ...