社区所有版块导航
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 年前 • 211 次点击  

作者:陶博士,复睿微剑桥研究所 ADS算法科学家

定位技术:自动驾驶的基础(一)

定位技术:自动驾驶里程计技术对比(二)

定位技术的关键:基于环境特征的地图匹配(三)
在前三篇的讨论中,我们介绍了深度学习在基于航迹推算和基于环境特征匹配估算中的应用:航迹推算持续跟踪汽车的⾃我运动并估算相对姿势,在给定初始状态的情况下,通过整合一系列的相对姿势来构建全局轨迹,实现定位;环境特征匹配则根据车辆相对于当地地标的相对位置,估算车辆的定位。下一步,我们需要对不同估算方法提供的定位结果进行一个系统的集成,才能最终输出一个较为精准的定位。
这一篇,我们将讨论一个很受业界关注的定位集成技术,同步定位及地图构建(SLAM)以及深度学习在 SLAM 上的应用。本篇主要关注有助于 SLAM 系统集成的两个关键模块,基于图的一致性优化以及关键帧闭环检测


01


SLAM 简介


从核心来说,实现 SLAM 需要两类关键技术。一类是前端处理,包括各种传感器信号的预处理,特征提取,特征融合和(深度学习)定位估算,这类技术在很大程度上取决于所用的传感器,之前两篇我们讨论过的基于航迹推算和基于环境特征匹配估算都属于前端处理另一类是后端优化,这类技术与传感器无关,是本篇讨论的重点。典型的 SLAM 后端优化负责在接收到前端处理输出的姿态和定位估算信息之后,触发基于图的一致性算法优化节点与边缘的结构,并可以在重复经过同一场景时,通过关键帧闭环检测进行历史轨迹的优化,降低不确定性,以消除累积轨迹误差和地图错误。
值得一提的是,并非所有 SLAM 解决方案都具有前端和后端这两个组件,一些解决方案仅使用前端感知处理来估算车辆定位和构建环境地图。虽然感知方面的研究近年取得了显著的成果,然而,在复杂的自动驾驶场景中,姿态和定位估算的漂移不可避免,提高后端优化的性能和效率,以进一步降低不确定性的研究应得到更多的重视。

图一:SLAM 处理流程 


02


深度学习在 SLAM 后端优化的应用


基于图的一致性:

航迹推算和环境特征匹配估算方法在长期运行过程中,当系统误差在没有有效约束的情况下,会受到累积误差漂移的影响。为了解决这个问题,一致性算法通常会采用基于图的思路。基于图的 SLAM 算法(Graph-SLAM)根据前端估算的输出构建一个图,节点表示车辆定位或环境特征,连接两个节点之间的边缘代表节点间的空间约束,约束包含在两个节点之间变换的概率分布之中。因为估算总是受到噪音的影响并带有误差,在连续的定位估算中,空间约束可以变得相互矛盾。基于图的优化会通过迭代线性化的方法,不断在约束空间中试图找到一个满足最大一致的节点配置,以确保图节点和边缘结构的稳定性,减轻估算产生的误差和固有的传感器测量噪声,例如基于 Gauss-Newton 或 Levenberg-Marquardt 的非线性最小二乘法。

图二:基于图的结构
与经典 SLAM 中各种经过充分研究的解决方案相比,对基于图结构一致性深度学习优化的探索远远不足。原因是神经网络擅长提取特征,更适合构建姿势观察和场景表达的函数,于是现有的工作更多探索如何将特征学习模块组合到不同层次的经典 SLAM 系统中,然后,将深度学习预测的结果结合到经典的非深度学习的后端方法进行优化和细化,例如 CNN-SLAM 基于 LSD-SLAM, DeepTAM 基于 DTAM 系统。近年来,随着图神经网络(GNN)的发展,业界开始探讨神经网络在基于图的一致性优化方面的应用。其中值得一提的是基于 GNN 的 PoGO-Net 。作为一个端对端的解决方案, PoGO-Net 将噪声图结构作为输入,并输出优化的全局姿势图。它通过初始化具有最高度数的节点(即连接大多数节点)开始,将初始值传播到各个节点并借助一个去噪层主动去除异常边缘。网络由多层前馈架构,去噪层和 GNN 层组成 。在每次迭代中,去噪层通过执行“边缘丢弃”方案,减少异常边缘,最终在 GNN 层实现聚合。PoGO-Net 是完全可微分,并且可以通过端到端训练的,联合优化去噪层和 GNN 层。
图三:PoGO-Net 结构

关键帧闭环检测优化:

对于某些场景,例如在停车场或住宅区,会常常经过曾到达过的场景,形成环路闭合。通常,SLAM 系统会添加一个闭环处理(Loop Closure)模块,通过添加或删除关键帧(Key frame)来组织关键帧池以避免冗余,然后执行一个全局的基于图的一致性优化,优化定位结果。

图四:关键帧闭环检测优化流程

关键帧的选择有助于 SLAM 系统更高效。在基于关键帧的 SLAM 系统中,姿势和场景估计仅在检测到关键帧时才会被细化。传感输入是否是关键帧,是通过与已有关键帧的特征相似度比较来判断的(即如果相似度低于阈值,新的输入将被视为新的关键帧)。传统的闭环检测使用基于词袋(BoW)来存储和使用来自手工检测器的视觉特征。然而,现实世界场景中光照、天气、视点和运动物体的变化使这个问题变得复杂。为了解决这个问题,相关研究引入自动编码器,利用大规模图像处理数据集上的预训练模型,提取更为精炼的表示特征,检测关键帧,并进行自我运动跟踪和深度估计。

图五:.深度预测器、相机运动估计器的网络结构和关键帧选择器流程
在局部图像特征匹配的研究中,值得一提的是商汤推出的新方法 LoFTR 。LoFTR 先在粗略级别建立像素级密集匹配,然后在精细级别细化良好匹配,而不是顺序执行图像特征检测、描述和匹配。与使用成本量来搜索对应关系的密集方法不同, LoFTR 使用 Transformers 中自我和交叉注意力层来获得以两幅图像为条件的特征描述符,提供的全局感能够在低纹理区域产生密集匹配。根据商汤的报告,LoFTR 在很大程度上优于最先进的方法,在已发布的方法中的视觉定位公共基准测试中也排名第一。

图六:LoFTR 结构


03


小结


尽管深度学习在 SLAM 方面的研究,包括前两篇讨论的前端处理以及本篇讨论的后端优化部分,已经取得很大的进步,现有的模型还不能够彻底解决当前的问题,尤其是面临实际工程落地时带来的各种极端场景挑战;同时,各项研究的发展也常常处于各自为战的状态,无法形成合力,突破现有的瓶颈。 令人振奋的是,近年来国内外的厂商,包括特斯拉,地平线,毫末智行等,都投入庞大的资源开始整合并快速迭代端对端、基于最新深度学习成果的定位和地图构建方案。他们的努力给今后的研究提供了很多方向和灵感,本系列的下一篇,也是最后一篇,将总结介绍工业界现存的典型端对端全局定位及构建地图解决方案。

  • 参考文献

Xinyi Li ,Haibin Ling, “PoGO-Net: Pose Graph Optimization with Graph Neural Networks”, IEEE/CVF International Conference on Computer Vision (ICCV), 2021.

Jiaming Sun, Zehong Shen, Yuang Wang, Hujun Bao, Xiaowei Zhou, “LoFTR: Detector-Free Local Feature Matching with Transformers”, Arxiv, 2021.

Changhao Chen, Bing Wang, Chris Xiaoxuan Lu, Niki Trigoni and Andrew Markham, “A Survey on Deep Learning for Localization and Mapping: Towards the Age of Spatial Machine Intelligence” in Arxiv, 2020.

Lu Sheng, Dan Xu, Wanli Ouyang, Xiaogang Wang, “Unsupervised Collaborative Learning of Keyframe Detection and Visual Odometry Towards Monocular Deep SLAM”, Arxiv, 2017.

S. Wang, R. Clark, H. Wen, and N. Trigoni, “End-to-end, sequenceto-sequence probabilistic visual odometry through deep neural networks” The International Journal of Robotics Research, 2018.

Giorgio Grisetti, Rainer Kümmerle, Wolfram Burgard, “A tutorial on graph-based SLAM”,Arxiv, 2010.


  • 关于复睿微

复睿微电子是世界500强企业复星集团出资设立的先进技术型企业。公司目标成为世界领先的智能出行时代的大算力方案提供商,致力于为汽车电子、人工智能、通用计算等领域提供以高性能芯片为基础的解决方案。目前主要从事汽车智能座舱、ADS/ADAS芯片研发,以领先的芯片设计能力和人工智能算法,通过底层技术赋能。

复睿微是复星智能出⾏⽣态的通⽤⼤算⼒和⼈⼯智能⼤算⼒的基础平台。复睿微电子以提升客户体验为使命,在后摩尔定律时代持续通过先进封装、先进制程和解决⽅案提升算⼒,与合作伙伴共同⾯对汽⻋智能化的新时代。


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