点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

本文由知乎作者robot L授权转载,不得擅自二次转载。原文链接:https://zhuanlan.zhihu.com/p/122373061

主要内容

基于语义的3D LiDAR SLAM。利用每帧点云中逐点的语义标号,建立全局语义地图。特别地,主要创新点在于利用语义信息滤除动态物体并改变ICP的残差权重,从而提高定位和建图的精度及地图的整洁性(去除了动态残影)。

主要贡献

  • 单帧点云逐点的精修语义标号

  • 通过检查当前帧观测点的语义标号和地图中关联面元的语义标号的一致性,滤除地图中的动态面元

  • 未通过上述一致性的关联,在点面ICP中减少该残差的权重。

X. Chen, A. Milioto, E. Palazzolo, P. Giguere, J. Behley, C. Stachniss. SuMa++: Efficient LiDAR-based Semantic SLAM. IEEE/RSJ International Conference on Intelligent Robots and Systems, 2019.

摘要

可靠和准确的定位和建图对于大多数自动系统非常关键。除了建图环境的几何信息,语义扮演着重要的角色来使得智能导航行为变得可能。在大多数实际环境中,这项任务非常复杂,由于运动物体导致的动态性,可能破坏建图步骤或者破坏定位。Chen等人提出了一种最近发表的基于面元建图方法的拓展,利用三维激光结合语义信息来提高建图过程。语义信息通过一个全卷积网络高效提取,并且进行球形投影。这个语义分割能够计算整个扫描帧具有点标号的结果,允许作者建立面元标号的语义地图。这个语义地图允许可靠地去除动态物体,同时通过语义约束提高投影扫描匹配。我们在KITTI数据集中具有挑战性的具有很少静态结构的高速公路序列上的实验评估展示了语义SLAM方法的优势,与纯几何,SOTA方法相比。

1. 介绍

位置环境中准确的定位和可靠的建图对于大多数自动驾驶来说是基本任务。这种系统一般在高度动态的环境中操作,其使得一致地图的生成变得很困难。此外,关于建图区域的语义信息是需要的为了完成智能导航行为。例如,一个自动驾驶汽车必须能够可靠地寻找一个位置来停车,或者停泊在一个乘客能够安全出去的地方——甚至之前没有看到过的地点,因此之前没有准确的地图。

在本工作中,我们提出了一种新的SLAM方法能够生成这种语义地图通过使用3D激光扫描仪。我们的方法利用一个流行 LiDAR SLAM框架[2],并组合了一个来自全卷积神经网络(FCN)[21]生成的语义分割的语义信息。这允许我们生成高质量语义地图,同时提高地图的几何和里程计的质量。

FCN对激光帧的每个点提供一个类别编号。我们执行点云的高效处理通过使用一个球面投影。在二维球面投影中的分类结果然后被反投影到3D点云中。但是,反投影引入了虚假信息,我们通过腐蚀和基于深度的语义标签的种子填充的两步骤过程来减少该虚假信息。该语义标号然后被整合到基于面元的地图表示中,并被用于更好地配准新的观测到已经构建好的地图中。我们进一步利用语义来滤除动态物体通过在更新地图时检测新观测和世界模型的语义一致性。这样,我们减少了整合动态物体到地图中的风险。图1展示了一个我们语义地图表示的例子。该语义编号被生成通过Milioto等人的FCN[21],其被训练使用Behley等人的SemanticKITTI数据集[1]。

图1.  只使用LiDAR扫描使用我们的方法生成的KITTI数据集的语义地图。地图使用面元表示,对应颜色表示一个类别标号。总之,我们的语义SLAM流程能够提供高质量的语义地图,与非语义地图相比,具有更高的度量准确性。

本文的主要贡献是一种整合语义到基于面元的地图表示的方法以及一种利用语义标号滤除动态物体的方法。总之,我们生成我们能够(i)准确地建图环境特别是环境中存在大量运动物体时(ii)在一般的环境中,包括市区,城镇和高速场景,达到更好的表现与只简单移除可能运动的物体的建图系统相比。我们实验性的验证了我们的方法在KITTI具有挑战性的数据上[11],并且展示了我们语义面元建图方法的优越表现,称为SuMa++,与纯几何面元建图和基于类别标号移除潜在运动的物体进行了比较。源代码:https://github.com/PRBonn/semantic_suma/。

2. 相关工作

里程计估计和SLAM是经典的话题在机器人领域,具有大量研究工作,被几个综述文章所概括[6][7][28]。这里,我们主要关注基于学习和动态场景的语义SLAM的相关工作。

受深度学习和卷积神经网络对于场景理解方面进步的启发,已经有大量利用相机[5][31],相机+IMU[4],双目相机[10][15][18][33][38]或者RGB-D传感器[3][19][20[26][30][39]的语义SLAM技术出现。大多数方法被用于室内并使用目标检测器或者相机图片的语义分割。相反地,我们只利用激光范围数据,并利用从LiDAR帧生成的深度图片中得到的语义分割的信息。

存在大量文献解决定位和建图在具有挑战性的环境中,例如通过滤除动态物体[14],在匹配中考虑残差[22],或者利用序列信息[34]。为了达到室外大尺度语义SLAM,我们能够组合3D LiDAR传感器和RGB相机。Yan等人[37]关联2D图片和3D点来提高分割用于检测运动物体。Wang和Kim[35]使用来自KITTI数据集[11]的图片和3D点云来联合估计道路结构并语义地分割市区场景通过应用相对位置先验。Jeong等人[12][13]也提出一种基于多模态传感器的语义3D建图系统来提高相对交并比(IoU)度量下的分割结果,在大尺度环境以及具有很少特征的环境中。Liang等人[17]提出一种新的3D物体检测器,能够同时利用LiDAR和相机数据来执行准确的物体定位。所有这些方法专注于组合3D LiDAR和相机来提高物体检测,语义分割或者3D重建。

最近Parkison等人的工作[23]发展一种点云配准方法通过直接组合基于图片的语义信息到两个点云的相对变换估计中。接下来Zaganidis等人的工作[40]实现了LiDAR和图片的组合和纯LiDAR的3D点云配准。这两种方法都使用语义信息来提高位姿估计,但是它们不能够被用于在线操作由于较长的处理时间。

与我们最相似的工作是Sun等人[29]和Dube等人[9],其实现了SLAM仅使用单个LiDAR传感器。Sun等人[29]提供了一个语义建图方法,其被构架为一个序列到序列编码-解码问题。Dube等人[9]提出了一种称为SegMap的方法,其基于从点云中提取的分割,并分配语义标号给它们。他们主要致力于提取有意义的特征用于全局检索和多机器人协作SLAM,具有非常有限的语义类别。与他们不同,我们专注于生成一个具有大量语义类别的语义地图,并使用这些语义来滤除由动态物体导致的外点,例如运动车辆或者人,来同时提高建图和里程计准确度。

3. 我们的方法

我们语义SLAM方法的基础是我们的基于面元的建图(SuMa)[2]流程,我们扩展它通过整合FCN RangeNet++[21]提供的语义分割。逐点编号被RangeNet++使用点云的球面投影提供。该信息然后被用于滤除动态物体并添加语义约束到扫描匹配中,其提高了SuMa的位姿估计的鲁棒性和准确性。

图2.  我们提出方法的流程综述。我们整合语义投影到SuMa框架中。

A. 记号

我们表示一个在坐标系 中的点 到坐标系 中的点 的变换为 ,使得 。令 表示变换 对应的旋转和平移部分。

我们称 时刻的坐标系为 。每个坐标系 中的变量都和世界坐标系关联起来通过一个位姿 ,其将观测点云变换到世界坐标系中。

B. 基于面元的建图

我们的方法依赖SuMa,但是我们这里只总结和我们方法相关的主要步骤,更多细节参考原始文章[2]。SuMa首先生成一个 时刻点云 的球形投影,称之为顶点地图 ,其然后被用于生成一个对应的法向量地图 。给定该信息,SuMa通过在 时刻的地图视角 的投影ICP确定了位姿更新 并因此通过串联所有位姿增量得到

地图使用面元被表示,其中每个面元被定义通过一个位置 ,一个法向量 和一个半径 。每个面元额外地携带两个时间戳:创建时间戳 和最后一次被测量更新的时间戳 。进一步地,稳定对数几率 被维护使用一个二值贝叶斯滤波器[32]来确定是否一个面元被考虑为稳定或者不稳定。SuMa也执行了回环检测及位姿图优化来获得全局一致的地图。

C. 语义分割

对于每帧,我们使用RangeNet++[21]来预测一个语义编号对于每个点,并生成一个语义地图 。RangeNet++语义分割每帧的球形投影生成的范围图片。简单来说,该网络基于Wu等人提出的SqeezeSeg结构[36]并使用Redmon等人提出的DarkNet53骨架[25]来提高结果通过使用更多的参数,同时维持了该方法的实时性。对于更多语义分割的细节,我们参考Milioto等人的文章[21]。传感器视角下逐点编号的可用性使得整合语义信息到地图也是可行的。为此,我们对于每个面元增加它的推理语义编号 和对应的来自语义分割的编号概率。

D. 精修的语义地图

由于投影的输入和作为RangeNet++下采样的内网络的副产品得到的块状输出,我们不得不处理语义编号的误差,当编号被重投影到地图中时。为了减少该误差,我们使用种子填充算法,总结在算法1中。它在预处理步骤的内部,其使用来自顶点地图 的深度信息来精修语义掩膜

种子填充的输入是由RangeNet++生成的原始语义掩膜 和对应顶点地图 。在掩膜 中每个像素的值是一个语义编号。在顶点地图中对应的像素包含最近3D点在LiDAR坐标系中的的3D坐标。方法的输出是精修的语义掩膜

考虑物体边界的投影不确定性高于物体中心的不确定性[16],我么在种子填充中使用如下两步。第一步是一个腐蚀,移除在范围 内的邻居中存在至少一个不同语义编号的像素,得到一个腐蚀的掩码 。组合该掩码和顶点地图 生成的深度信息,我们然后填充腐蚀的掩码。为此,我们设置空白边界像素为邻居带有标号的像素,如果对应点的距离是一致的,即小于某阈值

图3展示了该算法的中间步骤。注意到滤波后的语义地图包含很少的虚假信息,与原始预测相比。例如,在墙面上大部分错误的信息都被修正了,如图3(e)所示。

图3.  提出的种子填充算法处理步骤的可视化。给定(a) 原始语义地图,我们首先使用腐蚀来移除边界标号,和一些错误标号的区域,从而得到了(b)中的腐蚀掩膜。(c)我们最终通过邻居标号填充腐蚀的标号来得到一个更一致的结果。黑点表示空白像素,具有编号0。(d)展示了深度(e)展示了虚线框的内部区域。

E. 使用语义滤除动态

大多数现存SLAM系统依赖几何信息来表示环境并关联观测到地图中。他们在环境大部分动态的假设下工作良好。但是,世界一般是动态的,特别是当考虑驾驶环境时,并且一些传统方法不能考虑由动态物体导致的动态场景变化。因此,运动物体可能在某些情况下导致观测和地图之间的错误关联,其必须被小心地对待。一般地,SLAM方法使用一些外点拒绝策略,或者直接滤除观测或者通过建立滤除由动态物体导致变化的地图表示。

在我们的方法中,我们利用语义分割提供的编号来处理运动物体。更具体地,我们滤除动态通过检查新观测 和世界模型 的语义一致性,在我们更新地图时。如果编号是不一致的,我们假设那些面元属于移动物体。因此,我们增加一个惩罚项到稳定性项中。在一些观测后,我们可以移除不稳定的面元。这样,我们达到了动态的检测和最终的移除。

更准确地,我们惩罚面元通过给定一个惩罚项 到它的稳定性对数几率 中,其可以被如下更新:

(1)

其中 是稳定面元的概率给定相容性测量和先验概率。该项 用于补偿噪声测量,其中 是面元法向量 和测量法向量的夹角, 是测量相对面元的距离。测量法向量被取自 ,对应来自帧-模型ICP,更多细节见[2]。

没有使用语义信息,Pomerleau等人[24]提出了一种方法来推理地图中的主运动模式通过存储速度的时间历史。与我们方法不同,他们的方法需要一个给定的全局地图来估计当前帧中点的速度。进一步地,他们的机器人位姿估计被假设是相对准确的。

在图4中,我们阐述了我们滤波方法的效果与简单移除所有可能是移动物体类别的面元相比。当使用简单方法时,停车场中的车辆也被移除了,即使这些可能对于增量位姿估计是有用的。有了提出的滤波,我们可以有效地移除动态外点并获得一个更整洁的语义世界模型,同时保持面元都来自于静态物体,例如,停车长的汽车。这些静态物体对于ICP扫描配准是有价值的信息,并且仅仅移除它们可能导致扫描配准的失败由于丢失对应关系。

图4.  提出的动态滤除的效果。对于所有图,我们展示了对应编号的颜色,但是注意SuMa没有使用语义信息。(a)由SuMa生成的面元。(b)我们的方法(c)移除所有潜在的动态物体。

F. 语义ICP

为了进一步提高位姿估计使用帧-模型ICP,我们也增加了语义约束到优化问题中,其帮助我们减少了外点的影响。我们最小化ICP的误差函数给定如下:

(2)

其中每个顶点 被投影关联到参考顶点 和它的法向量 通过

(3)

(4)

分别是对应的残差和权重。

对于最小值,我们使用高斯牛顿确定增量 通过迭代地求解:

(5)

其中 是包含每个残差项 的权重 的对角矩阵, 是堆叠的残差, 的相对增量 的雅克比。除了硬关联和Huber模的加权,我们增加了来自高层的语义理解来加权残差。以这种方式,我们可以组合语义到几何信息中来使得ICP过程对外点更鲁棒。

在ICP内部,我们计算残差 在第 轮的权重 如下所示:

(6)

其中 对应Huber模,给定如下:

(7)

对于语义兼容性 ,该项被定义为:

(8)

其使用预测的编号来加权残差。通过 ,我们表示指示函数为 如果论断 是正确的,否则为

图5展示了对于高速场景两个车在帧中可见时的加权结果,见图5(a)。注意到我们使用语义的动态滤除,第3节-E中描述的那样,从地图中移除了车辆。因此,我们也可以看到图5(c)中对应低密度的低权重,因为观测的类别和地图类别不同。

图5.  语义ICP的可视化。(a) 当前帧的语义地图。(b)对应的语义地图。(c)ICP中的加权地图。像素越黑,权重越小。

上述内容,如有侵犯版权,请联系作者,会自行删文。

推荐阅读:

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-知识星球和学术交流群已成立

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导,830+的星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加群或投稿

SuMa++: LiDAR-based Semantic SLAM相关推荐

  1. SuMa++:Efficient LiDAR-based Semantic SLAM

    SuMa++:Efficient LiDAR-based Semantic SLAM 摘要 提出了一种扩展的基于表面建图的方法,利用三维激光集成语义信息来促进制图过程. 利用FCNN提取语义信息,并在 ...

  2. SuMa++: Efficient LiDAR-based Semantic SLAM

    摘要 可靠准确的定位和建图是大多数自主系统的关键组成部分.除了地图环境的几何信息外,语义对智能导航行为的实现也起着重要作用.在大多数现实环境中,由于移动对象引起的动态会导致这个任务特别复杂.在本文中, ...

  3. 【论文精读】Hybrid Bird‘s-Eye Edge Based Semantic Visual SLAM for Automated Valet Parking

    [论文精读]Hybrid Bird's-Eye Edge Based Semantic Visual SLAM for Automated Valet Parking 论文出处 ICRA2021 摘要 ...

  4. VPS-SLAM: Visual Planar Semantic SLAM for Aerial Robotic Systems

    VPS-SLAM: Visual Planar Semantic SLAM for Aerial Robotic Systems ABSTRACT:室内环境中存在大量的高级语义信息,这些信息可以为机器 ...

  5. Semantic SLAM with Autonomous Object-Level Data Association 论文笔记

    Semantic SLAM with Autonomous Object-Level Data Association 系列文章 摘要&介绍 系统框架 目标检测和追踪 目标检测 物体级数据关联 ...

  6. 【视觉SLAM】Visual-Based Semantic SLAM with Landmarks for Large-Scale Outdoor Environment

    Z. Zhao, Y. Mao, Y. Ding, P. Ren and N. Zheng, "Visual-Based Semantic SLAM with Landmarks for L ...

  7. RS-SLAM A Robust Semantic SLAM in Dynamic Environments Based on RGB-D Sensor

    摘要: 大多数最先进的V-SLAM算法在结构化环境中表现良好.然而,静态世界的假设限制了进一步的实际应用.在本文中,我们提出了RS-SLAM,一个鲁棒的语义RGB-D SLAM系统.RS-SLAM能够 ...

  8. A Point-Line Feature based Visual SLAM Method in Dynamic Indoor Scene

    一.特征的提取和匹配 A.特征点的提取与跟踪 这篇论文中使用FAST和ORB作为特征点,同时利用二进制描述子去进行暴力的匹配,匹配结果作为初步的匹配结果,但是其中存在不少的误匹配,解决方法是首先使用R ...

  9. Semantic SLAM源码解析

    这个语义SLAM建图是基于ROS的 下面上源码解析: 首先从semantic_cloud.py出发,这里接收相机读入的topic, 会得到RGB图和深度图, 同时会起orb_slam2计算位姿,我们这 ...

最新文章

  1. 4701年新年快乐!
  2. github 项目绑定自己的域名
  3. 【C#】详解使用Enumerable.Distinct方法去重
  4. AutoML Challenge 历史回顾
  5. good food to buy when at the train station
  6. mysql开启查看慢查询日志[转]
  7. 前端学习(1370):错误处理中间件
  8. mybatis获取表名_mybatis plus 的动态表名的配置详解
  9. matlab运动前无轨迹线,matlab 前轮前驱运动模型公式 和 轨迹仿真
  10. Netty工作笔记0041---Netty入门--服务端2
  11. git untracked working tree files would be overwritten by merge
  12. Python自动登录QQ
  13. PC端微信自动发送机器人
  14. 利用Md2all的自定义CSS,给Markdown一个漂亮的排版
  15. 愿天下有情人都是失散多年的兄妹(25分)
  16. hive两拼接字段对比,涉及到的拼接字段拼接顺序问题
  17. MarkDown表格合并
  18. 一个人的时候,学会坦然。
  19. 【Qt】QtIFW 安装包制作总结 -如何创建多组件的安装器
  20. 工作室培训第一周总结

热门文章

  1. SVN详解-linux+windows
  2. 服务器测速,php在线测速
  3. struts2学习 - action -3 动态方法调用 DMI
  4. 顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)
  5. 极客新闻——12、错误和失败的区别是什么?
  6. 打工人到什么状态,就可以离职了?
  7. 工作10年,创业5年后,关于人生,我的5点思考
  8. 阿里程序员回老家被哥们问工作,回答在阿里,哥们却吐槽:破IT就破IT,还阿里巴巴!网友:京东就是送快递的,美团就是送外卖的!...
  9. 最牛逼的阿里巴巴内部Java调优方案,没有之一!
  10. GitHub年度报告:JS第一,Python第二,Java第三