浅谈深度学习如何解决vSLAM落地的困境

2025-11-08 12:02:48

背景

深度学习被广泛应用在计算机视觉的各个领域中,各种网络结构层出不穷。而视觉SLAM作为经典的任务,自然早已有大量的研究人员尝试从各种角度将二者融合。而本文的目标是对深度学习或者说数据驱动的方法如何解决传统vSLAM流程在落地时面临的问题进行一个讨论。在2023年末这个节点上,我们再谈深度学习和vSLAM的结合似乎有些过晚了。但实际上恰恰相反,我认为现在才是最好的时机。理由有如下几点。

嵌入式AI芯片发展

硬件永远是软件算法发展的基石。而借助人工智能火热的东风以及国产半导体产业的火热,在这两年已经有价格低廉的高算力芯片的出现。例如瑞芯微的RK3588s单板价格只要700左右,即可获得6Tops的NPU、最高2.4GHz的八核处理器。在全速跑满的情况下,YOLOv5s 模型可以跑到大约190帧[1]!另一方面,Intel 最新发布的桌面级酷睿Ultra处理器中也包含一颗NPU, 这意味着在轻量级的AI算力将在大量的设备中具备。对于开发者来说,在NPU极易获得的情况下,纯CPU的实现将是低效的。

行业应用的发展

标杆企业的突破将会带动上下游的发展。国外sevensense公司,采用多相机融合的方式,纯视觉满足了清洁机器人和AGV机器人在室内和室外的导航定位需求[2]。国内INDEMIND公司,采用双目视觉传感器为主导的视觉导航算法,据宣传文稿已经达到了匹配激光雷达的精度[3]。紫川科技也推出了多款视觉SLAM应用的模块。总所周知,视觉SLAM落地难,但是目前已经有领头的企业表明了视觉SLAM的可行性。这证明了传统的方法的可靠性、成熟度,并且可能正处于落地应用的早期。

在当下,一方面AI算力的高速发展,使得轻量级深度学习网络的应用成为可能,另一方面传统方法逐步开始落地。那么我们能做些什么呢?如果在自己的设备上运行过现有的开源SLAM算法,如经典的ORB-SLAM3, DM-VIO, VINS等等。它们的鲁棒性、精度等方面依旧难以满足直接的落地需求。工程开发者采用工程的方式解决它们的鲁棒性问题、精度问题。

例如,某个方向的光照急剧变化对SLAM系统引入了扰动,典型场景是穿越隧道、室内外穿越运动等,可以采用多个相机解决,只要保证有一个方向的相机跟踪不丢失即可。

而作为科研人员则希望提出一个光照鲁棒的跟踪算法,从更根本的角度去改善这一问题。因此,我认为针对实际的工程落地中面临的鲁棒性问题,我们能做的是:提出能够在嵌入式NPU或GPU的运行的轻量级网络,将视觉SLAM中难以用手工方法表达的、难以建立精确模型的模块用数据驱动的方法替换掉,而将传统SLAM中精确的建模和求解过程保留。 这样既保留了传统方法的优势,又能有效利用深度学习的强大表达能力,使得整体算法在鲁棒性、精度等方面上一个台阶。

现有的深度学习和vSLAM结合的方案

现有的综述文章已经将深度学习vSLAM相结合的各种方案进行了详细的描述,这里我们通过文章 A Survey on Deep Learning for Localization and Mapping: Towards the Age of Spatial Machine Intelligence 对现有方法进行回顾。

里程计

端到端的里程计

端到端的里程计被分为两类,即有监督的VO和无监督的VO。

有监督的VO输入序列图片并通过网络得到相对位姿,并利用位姿的真值对算法进行监督学习。

无监督的方案则通过同时网络估计t1t_1t1​时刻的场景深度和t0t_0t0​到t1t_1t1​时刻的相对位姿,通过深度估计值和相对位姿估计值将t1t_1t1​时刻的图像warp到t0t_0t0​时刻,用实际的图像和warp图像之间的相似度作为训练损失。当深度和相对位姿估计的越准,两张图片就会越相似。

端到端的里程计的优势和劣势都是非常明显的,现有的方法大多还处于在KITTI数据集中训练、KITTI中数据验证的阶段。因此泛化性依旧不足,计算量也比较大。而优势在于鲁棒性非常好,即使大角度旋转的场景中也不会丢失。值得注意的是,现有端到端的里程计在部分的很好的场景中精度已经超过了传统的方法,当然泛化性就是另一个问题了。

混合里程计

所谓的混合里程计是指采用深度学习的方法辅助传统的SLAM的里程计。

典型的如:

单目深度估计得到绝对尺度信息用于添加尺度约束,使得大规模单目VO具备尺度信息。

单目深度估计作为深度滤波器的初始值,加快地图点的深度估计收敛。

单目深度估计用于前端特征点提取和匹配的先验信息,更有效的选择特征点并匹配。

深度学习的光流法结果用于VO前端。

混合法的优势在于传统的SLAM过程被保留,精度、性能、泛化性等都要好很多。然而现有的混合里程计方法大多数是拿深度学习的县城的一个模块来用给SLAM提供而外的信息。这种组合式的、可分离的方法性能提升有限,且不够优雅。因此,如何针对SLAM问题,将二者融合的更紧密是一个难题。

视觉惯性里程计

视觉惯性里程计和纯视觉里程计区别在于对IMU数据的处理,端到端的视觉惯性里程计方法将IMU的数据同时融合到网络中。

目前端到端的视觉惯性里程计,依旧无法达到传统方法的精度,其优势在于对测量噪声、错误的时间同步等问题更加鲁棒。

惯性里程计

最近得益于深度学习的能力,单IMU也能估计位姿了。这一点确实非常不符合直觉,毕竟低端MSMS的漂移是非常大的。

IMU预积分得到预测的位姿

然后通过网络得到用于观测位姿

采用EKF将二者融合得到最终估计的位姿

存疑:从理论上来说,这种方法得到的位姿的泛化性究竟如何呢?

建图

深度学习用于建图模块的工作则更为多见,主要用于:

利用卷积网络估计图像深度、构建稠密地图

利用语义分割,构建各种各样的语义地图

利用实例分割,构建物体地图

目前深度学习和建图结合的问题有几点:

是否需要稠密地图,在目前重感知、轻地图的背景下,稠密地图这一点有点鸡肋

语义地图一方面依赖于稠密地图构建,另一方面是否需要稠密的语义地图也是值得商榷的。

物体地图通才采用简单的几何体表达物体,或者采用事先给定了几何模型的物体构建物体地图。一个是如何让算法能识别的物体更为通用,另一个是需要面临的问题是: Objects (物体)是一个强语义弱几何的概念,因此精度肯定不高,怎么进行二者的平衡呢?

对于NeRF等新型地图构建方法,具有强大的创新性,但是是否能实际落地应用在SLAM中尚未可知。需要科研人员继续攻克难题,努力推进。这不是本文的重点。

SLAM中其他模块

学习求解局部BA问题

虽然局部BA问题已经非常成熟,但是人们在估计相对位姿时大量的时候是凭借感觉,而非精确的数学求解。因此提出用网络估计一个相对位姿。

例如将LM算法的迭代过程看成是一串相同网络对结果不断进行卷积求解[5]。

回环检测

用学习的方法做回环检测基本是大家的共识,效果肯定比词袋模型这类的好,这里便不再赘述了。

一些批判性思考

(包含强烈的个人观点)

完全摒弃传统方法的端到端方案是不被认可的,这一观点在许多会议上多位大佬都曾提及。

局部粗分辨率的稠密地图用于导航是有必要的,而精细稠密地图和全局稠密地图对实际的应用来说是伪需求。

简单的融合深度学习实现 A+B 的效果方案往往是低效的。

对于深度学习和SLAM的结合,有以下几点个人的体会(这些判断均基于实际落地的需求和当前设备的算力):

传统方法中具有明确物理意义的部分,应该继续继承,而不是一味的端到端

深度学习是为了解决SLAM中难以人工描述的部分,而不取代原有方案

在学习方法的设计中融入传统的方法思想是提升性能的有效手段

A+B式的融合应该被替换为充分考虑SLAM中的特征的方法,是专为SLAM设计的专用算法,而非拿来主义。

深度学习和SLAM结合的方向

数据驱动的方法打破vSLAM中对环境的简单假设

计算机视觉算法中往往首先对数据的特征进行假设,然后基于该假设推导得到结论。但是这样的做法的鲁棒性完全取决于假设的合理性、普适性,如果假设很强则在某些不满足的环境中精度和鲁棒性快速下降。例如光流法中的图像灰度不变就是一个很强的假设,因此光照鲁棒性较差。而通过数据驱动的方法对现实世界中难以手工表达的部分建模,得到一个更加合理、更加准确的假设,这一思路将极大的提高算法的鲁棒性和精度。这里以我们之前的工作举例,即提出的混合光流法[5]。

混合光流法

光流法中的灰度假设问题是一个很强的假设,若是通过手工设计得到图像中的不变量,那便是描述子。从另一个角度去理解光流法和描述子匹配方法的话,光流法的描述子是当前灰度值,而在局部窗口内搜索相似的描述子也是一种光流法。因此,从图像中提取比灰度更高级一些的光照不变量特征,并用于原始的光流法将极大的提高光流法的光照鲁棒性。而如何定义图像中的光照不变量,人工描述是很困难的。因此,数据驱动的方法呼之欲出。在我们的工作中证明,只需要非常浅层的三四次卷积,即可获得图像中的光照不变特征。因此光流法中的灰度不变假设变为网络提取的特征不变,实现所谓的混合光流法。这一方法在光照剧烈变化的场景下,使得VINS的估计精度得到了显著的提高。

这样的假设在SLAM中存在很多,这里简单提几个典型的假设。

手工描述子基于对图像数据的认识,假设描述子在视角和光照变化下具有不变性。目前基于学习的描述子已经做的很多v了,但是都是类似SIFT的类型,在3D重建中表现优异,但是SLAM中所需要的下一个ORB特征点还没出现。对SLAM来说,效率才是更为关键的。

直接法中的假设和光流类似,其中包含了对相机成像的建模过程,即考虑了相机采集时的曝光和增益等参数。但是这依旧是对现实世界的简单假设。如何利用数据驱动的方法,弥补这一假设,类似光流法中提取的光照不变量。得到光照鲁棒的直接法。

IMU的噪声模型通常被建模为随机游走过程,这一假设依旧是对世界的简单假设。区别于端到端的通过IMU估计位姿,保留IMU预积分过程并通过数据驱动的方法,预测噪声的变化。这样既保留了泛化性又能有效的提高性能,例如 Deep IMU Bias Inference for Robust Visual-Inertial Odometry with Factor Graphs

深度滤波器中对深度估计指建模为高斯分布+均匀分布的形式,这一假设理论上也能够被数据驱动的方式所替换。

相机模型也是对镜头光学成像过程的假设,在一些鱼眼镜头中则精度较低。

周围环境是静态的假设,简单的采用深度学习分割出一些易于移动的物体并剔除点一直被我认为是杀鸡用牛刀,大材小用。因此期待一种更为优雅的形式的出现。

数据驱动的方程求解

最典型的例子是人在估计相对位姿时并比如局部BA问题,没有去计算复杂的方程组。而是有一种感觉,就应当是这样的。通过神经网络的方法求解几何代数问题,是随着2022年CVPR的最佳论文的出现而被人们关注。从底层来说,基于深度学习的方程求解更像是记住了大量的情况下的求解结果,然后基于所记住的求解结果变换到新的数据中。这一方法优势在于非常的快,比传统的方法快非常多。当然Learning To Solve Hard Minimal Problems 这篇论文的工作开源的代码并没有很好用,这一领域依旧处于发展的早期。

稠密局部地图的构建

稠密的局部地图被用于机器人的局部导航,目前常用的方法是单目深度估计或者双目深度估计结果作为输入,实现局部占用栅格地图的构建。这是典型的A+B式的创新,即前几个人好发论文后面的人再去做则显得创新性不足。这样的结合实在是低效,深度估计和SLAM过程完全分离。最简单的场景中,如摄像头固定不动,它的深度也将不断的估计,计算量一点也不会降低。因此如何把深度估计和SLAM结果结合,去除其中的冗余计算,实现更高效的局部稠密地图构建呢?这便是深度学习和传统的采用何种方式进行深度结合的开放性问题了。注意这里的稠密局部地图更像是重感知中的障碍物感知,即通过局部的图像序列感知周围障碍物信息用于导航。

长期地图的构建

视觉长期地图的表达形式依旧在探索过程中。对于激光SLAM,点云毋庸置疑是一个很好的表达形式。而对于视觉则目前并没有定论,语义地图,特征点点云地图,半稠密地图,物体SLAM地图,NeRF等等地图形式非常多。长期地图中面临春夏秋冬的季节更替,昼夜交替,动态物体,雨雪天气变换等多方面的挑战。个人的观点是室外场景的长期定位的解决可能只能依赖于视觉大模型的发展,实现更高级的智能,而在此之前将会是重感知轻全局地图的形式。对于室内场景,这一问题则会简单很多,只有单纯的光照变化和动态物体的问题。因此,深度学习如何解决室内动态物体和提高地图的光照、视角不变性则是目前更为可行的研究内容。

总结

本文简单的从落地应用的角度出发,讨论了目前vSLAM算法到真正落地至机器人场景中,作为科研人员的我们在深度学习方法上还能做出什么贡献。其中包含了大量的个人主观见解与看法,并且所提出的一些研究方向也并非那么热门。个人在参加厦门的SLAM2023论坛时有一个特别明显的感受,即学术界关注的和工业界关注的点出现了较大gap。NeRF、具身智能等概念领域在学术界打得火热,而工业界则基于传统的SLAM做着corner case的问题。作为一个相对独立的科研人员,我希望做出弥补二者gap的工作。充分利用个人对深度学习的理解以及对传统SLAM算法的熟悉,将二者有机的融合起来,互相发挥彼此的优势。最后,希望本文对正在寻找自己方向的研究生同学在寻找自己课题和方向上有所启发,即结合自身基础和课题组优势思考自己在这个领域中能解决什么样的真问题。

[1] RK3588运行YOLOv5s模型 https://www.bilibili.com/video/BV1Hp4y1u7ex/?spm_id_from=333.337.search-card.all.click&vd_source=4dd69fa6d40221a0fa0733def5c4708a

[2] INDEMIND视觉导航方案 https://mp.weixin.qq.com/s/BW1KrnoI-pq28JjaSutiOg

[3] Sevensense 视觉导航方案 https://www.youtube.com/watch?v=NJCoFKI2xj0 https://www.sevensense.ai/

[4] 混合光流法 https://www.bilibili.com/video/BV1gz4y1V77M/?spm_id_from=333.999.0.0

[5] 学习BA求解 https://www.youtube.com/watch?v=5bZbMm8UqbA

什么叫上课摸鱼 上课摸鱼可以干什么
杏子常溫下可以放多久 放冰箱能保存多久-健康飲食