社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【深度学习】语义视觉SLAM综述

机器学习初学者 • 2 年前 • 395 次点击  

背景

作者:流川峰 vSLAM在计算机视觉和机器人领域取得了长足的进步,并已成功应用于自主机器人导航、AR/VR等多个领域。


然而,vSLAM 无法在动态复杂的环境中实现良好的定位通过将语义信息与 vSLAM 相结合,语义 vSLAM具有解决上述问题的能力。


本文探讨了语义vSLAM的三个主要问题:语义信息的提取与关联、语义信息的应用以及语义vSLAM的优势。


然后,我们收集并分析了当前最先进的语义vSLAM系统Semantic vSLAM 不仅可以在建图过程中获取环境中的几何结构信息,还可以识别环境中的物体并获取语义信息,以适应复杂的环境,执行更智能的任务。


传统的 vSLAM 方法通常基于静态环境的假设,而语义 vSLAM 可以预测动态环境中对象的可移动属性。


此外,Semantic vSLAM可应用于智能路径规划和导航,例如服务器机器人选择最佳路径来运送物资。语义vSLAM的框架大致可以分为语义信息提取模块和vSLAM模块,如图1所示。


关键是准确识别环境中的对象。对于语义提取的过程,可以把这个过程看作是识别图像中感兴趣的对象并获取对象信息的过程。深度学习技术是最有前途的语义提取方法,如CNN和R-CNN。


它们的语义提取准确率和实时性可以满足SLAM的要求。语义vSLAM提取语义信息的常用方法有三种,分别是对象检测、语义分割和实例分割。此外,语义对象关联的处理也很关键。


图1语义SLAM框架


语义信息提取


(1)目标检测


语义vSLAM中的对象检测模块可以构建对象级语义图并提高环境理解。目前语义vSLAM中使用的目标检测方法主要分为两类:一阶段法和二阶段法。语义vSLAM通常采用SDD或YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4)作为一阶段目标检测方法。


SSD是第一个基于 DNN的实时目标检测器,也是一种单级物体检测检测器,可以很好地平衡速度和准确度。因此,一些语义vSLAM工作利用 SSD 检测静态对象,不考虑动态对象。除了实时性能,检测精度也会影响语义的性能。


因此,一些方案采用两阶段检测器进行目标检测,例如 R-CNN、Fast R-CNN、Faster R-CNN。与一级检测器不同,二级检测器需要获得区域提议,对结果进行分类并调整候选边界框位置。


由于二级探测器的设计思想,二级探测器的实时性通常比一级探测器略差,但其探测精度高于一级探测器。Faster R-CNN 在检测小物体方面表现良好。


(2)语义分割


语义分割是图像理解的基石技术,它可以给出每类对象对应的准确像素,但不能区分同一类型的不同个体。它在自动驾驶、UAVs和可穿戴设备应用中至关重要。目前在语义vSLAM中使用的语义分割方法基本上都是基于深度学习的方法,例如U-Net、贝叶斯SegNet、PSPNet。 


U-Net是最常用的分割模型之一,它简单、高效、易于构建,并且只需要很小的数据集进行训练。UNet 模型将图像像素分类为不同的类别,例如车道、停车线、减速带和障碍物。因为这些类别的对象具有清晰稳定的特征,所以它们被用来提高定位精度。


此外,停车线也用于车位检测,障碍物用于路径规划。SegNet优点是图像边缘信息保存更好,运行速度更快。与 U-Net 和 SegNet 相比,PSPNet 考虑了上下文关系匹配问题,即使在复杂的环境中也表现出良好的分割效果。


与输出粗检测边界框的对象检测方法相比,语义分割方法可以在像素级别识别对象,这极大地有助于语义vSLAM理解环境。然而,语义分割无法区分对象实例与同一类别,限制了应用范围。


(3)实例分割


为了检测动态对象实例,语义 vSLAM 开始使用实例分割方法,获得图像的像素级语义分割。实例分割是对象检测的进一步细化,以实现像素级对象分离。但是,它无法达到与目标检测相同的实时性能。


目前在语义vSLAM中使用的常见实例分割方法是 Mask-RCNN [33],这是一种强大的基于图像的实例级分割算法,可以分割 80 个语义对象类标签。


这些作品适用于动态环境,因为它们将几何信息与Mask-RCNN融合以分割动态和静态对象,获得逐像素语义分割和实例标签信息。但是,实时性能受到很大影响。


虽然现阶段三种语义提取方法都可以满足语义vSLAM的基本要求,但语义提取方法在识别准确率和运算速度上还有很大的提升空间,以便有效地融入语义vSLAM系统中。在许多复杂的环境中,存在动态或被遮挡的对象会影响对象检测的性能。


为了解决这些挑战,未来 vSLAM 和语义提取方法需要相互补充,帮助机器人执行更智能的任务。


语义对象关联


SLAM 系统创建关键帧以减少重复计算。假设当前场景中有一些可检测的物体,每个关键帧可以通过物体检测方法检测个物体测量值。


通常,一个关键帧有多个对象测量值,可以表示为一个集合 ,并且

其中表示关键帧中第i个对象的测量信息,通常由对象类别、检测置信度和对象检测边界框组成。


环境中地标的数量远小于物体测量的数量。原因是可以在连续的关键帧中观察到相同的地标,并且在每个关键帧中检测到多个对象测量值。因此,引入了对象关联S的概念,它指定跨关键帧的对象测量与相同的地标相关联。


可以理解为,每个物体测量值都被分配了一个唯一的地标,即。在 t 时间有个关键帧。当前时间t的对象关联可以表示为:


随着机器人随时间移动,物体测量的数量会累积。因此,对象关联是一个动态过程,随着连续获取的对象测量值而变化。在 t 时间,估计对象关联:


其中 X、L、Z 分别是通过 SLAM 算法从所有相机位姿 X 、物体测量值 L 和传感器测量值 Z 中选择的子集。一旦实现了对象关联,就需要使用对象和相机优化的结果来更新相机和对象位姿:


上述方程描述了基本的语义vSLAM 问题。综上所述,语义vSLAM 的对象关联的作用是将语义对象测量与对象界标准确关联。


对象关联的难点在于,当前图像中存在多个具有相同类别、相似外观和邻近位置的对象时,将新对象测量值与地图中现有的 3D 地标正确关联。一些研究人员从概率的角度考虑语义对象关联。


例如,鲍曼等人的概率对象关联模型,他们提出了一种概率方法来对对象关联过程进行建模,并采用EM算法来查找对象测量值和地标之间的对应关系。此外,他们充分考虑了对象关联的模糊性,这为语义 vSLAM 的后续工作奠定了数学基础。


然而,现实环境中存在大量不确定因素,如大量具有相同类别和位置的物体,大大降低了物体关联的准确性。后来,分层对象关联策略大大减少了位置和外观相似的对象之间的错误关联,包括短期对象关联和全局对象关联。


在处理连续关键帧之间的对象关联时,使用非参数统计方法,该方法提取图像中对象测量值和地标的区域,并比较这些区域的深度相似性以确定它们是否可以相互关联。大多数概率对象关联工作都集中在静态对象上,但这些方法在动态环境中变得无效。


语义信息的应用


语义和SLAM技术是相互促进的两个部分。语义信息与定位和映射相结合可以提高定位和场景理解的准确性。


语义定位


定位的目的是让机器人在未知环境中获取其方位,即确定其在该环境的世界坐标系中的位置。传vSLAM易受环境因素影响,导致定位失败。


尽管如此,可以在vSLAM中提取丰富的语义信息,帮助车辆和机器人感知环境中的高级信息。此外,语义信息中存在几何约束,可以有效提高系统的定位精度。长期的户外视觉导航必须面临长时间运行、跨天气、光照变化明显等挑战。


在这些挑战下,图像和地图之间的特征很难可靠地匹配,最终导致定位精度差甚至定位算法完全失败。


为了解决这些问题,一些研究人员尝试基于语义分割图像和语义点特征图的定位算法,解决了长期视觉定位的问题。面对剧烈的视点变化,研究人语义图描述符匹配进行全局定位,以实现多视点下的定位。


室内机器人定位问题的挑战性不亚于室外问题。vSLAM系统仍然依赖肤浅的图像信息来感知环境,缺乏认知层面的能力。当进入具有动态或显着照明变化的复杂室内环境时,SLAM 的鲁棒性和可靠性尚未达到实用性。


在提高机器人在环境中的认知能力方面。对象级语义vSLAM,首次采用双二次曲面表示3D地标,包含地标的大小、位置和方向。


同时,他们推导出了因子图的公式,该公式在解决对象关联的假设下联合估计对偶二次曲线和相机位姿参数。研究人员注意到语义信息可以帮助区分静态和动态对象,提高机器人在动态环境中的定位精度和鲁棒性。采用语义信息来分割移动对象并过滤掉与移动对象相关的特征点是经常实现的方法之一。


可见,融合语义信息是提高机器人定位性能的根本途径。在改进定位方面,语义工作通常用于 SLAM 系统初始化、后端优化、重新定位和闭环阶段。因此,有效地处理和利用语义信息对于提高定位精度至关重要。


语义建图


建图是SLAM的另一个目标。通常,我们希望机器人保存地图,这样机器人在接下来的工作中就不需要重复构建地图,节省大量的计算资源。


在应用中,vSLAM构建的地图包括稀疏地图、半密集地图和密集地图。与稀疏地图相比,密集地图包含许多3D空间点来描述地图,更适合定位、导航、避障和重建。然而,传统的vSLAM地图缺乏人机交互的高级环境语义信息,使得机器人无法执行智能避障、识别、交互等复杂任务。


为了更好地解决地图问题,建立准确可靠的3D语义地图越来越重要。早期的语义地图常使用先验对象CAD模型数据库构建3D语义地图,可以还原真实场景,节省大量存储密集点云地图的空间。


然而,CAD 模型仅限于预定义数据库中的对象。研究人员构建静态密集语义图,将密集vSLAM与语义分割标签集成在一起。对于动态环境重建,采用实例感知语义分割将对象分类为背景、移动对象或潜在移动对象。


但是,他们未能实现系统的实时性能。考虑到语义vSLAM在建图中的实时性问题,一些研究人员尝试构建稀疏语义图。这些方法基于ORB-SLAM2框架,将语义对象与实际构建稀疏的3D语义对象图相结合。


需要注意的是,语义地图在智能场景中的应用比传统的视觉地图更为广泛。但是,它需要面对繁重的计算、不同类型物体的识别、地图存储等挑战。


语义VSLAM 评测


SLAM社区在过去的三年里取得了巨大的进步,我们见证了 SLAM 技术在行业中的过渡阶段。并讨论了 SLAM 正在进入一个新时代,即鲁棒感知时代。


与之前的纯几何vSLAM相比,新阶段的感知SLAM具有更鲁棒的性能和更高水平的环境理解,这归功于将图像语义信息应用于SLAM 进行姿态估计、闭环和建图。


因此,本节将回顾 vSLAM 的发展历史,并介绍近年来语义 vSLAM 的发展。

图2. (a)(b) 不同视角的场景图像。(c) 基于传统 vSLAM 点云表示的 3D 地图。(d)利用语义信息重建环境


语义vSLAM的早期工作意识到传统的vSLAM系统在需要严格处理的低级原语上运行。它为语义vSLAM的后续发展提供了必要的基础。


近年来,基于特征点的vSLAM系统在定位方面表现出了突出的准确性和鲁棒性,因此研究人员尝试构建基于ORB-SLAM2算法框架的语义vSLAM系统。为了更形象地比较语义vSLAM,我们收集了2017年至2022年的30个语义 vSLAM系统,如表1所示。


对于每个语义vSLAM 系统,从九个基本维度对其进行描述,可以揭示系统的优缺点。从 2017 年到 2022 年的语义vSLAM工作来看,语义vSLAM系统的输入数据类型越来越多模态,这些工作越来越重视对象重建。


此外,这些作品的应用场景也逐渐向大规模、动态的环境发展。

参考

Chen, Kaiqi, et al. "Semantic Visual Simultaneous Localization and Mapping: A Survey." arXiv preprint arXiv:2209.06428 (2022).


往期精彩回顾




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/147788
 
395 次点击