告别GPU依赖的SLAM? 在CPU上实现超速跟踪定位的NGD-SLAM!

作者 | 唐僧洗头用飘柔  编辑 | 深蓝AI

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心SLAM技术交流群

本文只做学术分享,如有侵权,联系删文

论文标题:

NGD-SLAM: Towards Real-Time SLAM for Dynamic Environments without GPU

论文作者:

Yuhao Zhang

项目地址:

https://github.com/yuhaozhang7/NGD-SLAM

编译:唐僧洗头用飘柔

审核:Los

导读:

本研究提出了一种无需GPU的新型视觉SLAM系统——NGD-SLAM,专为动态环境设计,实现了在CPU上的实时性能。通过创新的掩码预测机制,系统允许深度学习识别动态对象与相机跟踪并行运行,显著提升了效率。结合双阶段跟踪策略,NGD-SLAM在保持高定位精度的同时,达到了56fps的跟踪速率。实验结果证明了该系统在动态环境中的有效性,展示了即使在硬件资源受限的情况下,深度学习在SLAM应用中仍然具潜力。

e9bd3baf8af1445e3b0f4de968b0a4d2.png

动态环境下摄像机定位跟踪的精确性和鲁棒性是视觉SLAM 的重大难题。当前解决该问题的一大方向是通过深度学习技术为动态对象生成掩码,这通常需要GPU实时运行(30 fps)。基于此,本文提出了一种新的动态环境下的视觉SLAM系统,该系统通过结合掩模预测机制在CPU上获得实时性能,使深度学习方法和摄像机跟踪在不同频率下完全并行运行,无需等待对方的结果。并且本研究进一步引入了双级光流跟踪方法,将光流和ORB特征混合使用,显著提高了系统的效率和鲁棒性。与目前最先进的方法相比,该系统在动态环境中保持了较高的定位精度,同时在单个笔记本电脑CPU上实现了56 fps的跟踪帧率,无需任何硬件加速,从而证明了深度学习方法在没有GPU支持的情况下仍然可以实现动态SLAM。据现有信息,这是第一个实现这一目标的SLAM系统。

本文的主要贡献如下:

●NGD-SLAM方法:提出了一种名为NGD-SLAM的新型视觉SLAM系统,专为动态环境设计,能够在没有GPU支持的情况下,在CPU上实现实时性能;

●掩码预测机制:开发了一个框架独立的掩码预测机制,允许深度学习模型和相机跟踪并行运行,提高了系统的运行效率;

●双阶段跟踪方法:引入了一种双阶段跟踪方法用于分别跟踪静态与动态关键点;

●混合策略:结合了光流跟踪与ORB特征跟踪的优势,探索其在动态环境下的有效性。

529f1f87bfa1e6b162fd54b46cb1e435.png

■2.1 NGD-SLAM基本框架

7cbc5eb29f75192d8ba691d59bf3ef96.png▲图1|NGD-SLAM流程图©️【深蓝AI】编译

图1展示了NGD-SLAM的运作流程。首先,将第一帧的图像数据转发给语义线程,并将该帧设置为关键帧。图像的ORB特征是通过一个掩码从语义线程中提取出来的,以过滤掉动态特征;并且只有第一帧会等待语义线程给出的掩码;随后系统初始化地图作为关键帧跟踪的一部分。对于后续帧,系统采用双阶段跟踪,跟踪潜在的动态对象,根据掩码预测机制为其生成掩码,跟踪最后一帧剩余的静态点,估计相机姿态。然后决定设置一个新的关键帧。如果需要一个新的关键帧,系统通过过滤掉动态跟踪过程生成的掩码中的特征,从当前帧中提取静态ORB特征,并使用ORB特征继续关键帧跟踪过程。

■2.2 语义线程

NGD-SLAM的语义线程基于YOLO-fastest模型构建,用于检测动态对象。这个线程使用一个输入和输出缓冲区,每个缓冲区保存一个帧,其中一个新的输入或输出帧将替换缓冲区中现有的帧。从跟踪线程传递到输入缓冲区的帧由网络处理,然后移动到输出缓冲区供跟踪线程访问。这种设置确保语义线程处理最近的输入帧,而跟踪线程不必等待语义线程的结果,而是直接从缓冲区中获取最新的输出。虽然两个线程因运行频率不同而存在时间不匹配的问题,既从输出缓冲区中获取的结果对应于以前的一个帧,NGD-SLAM通过使用过去的结果来预测当前帧中动态对象的掩码来补偿这一点。

■2.3 掩码预测

NGD-SLAM的一个重要模块是掩码预测机制,这也是动态跟踪的基础组成部分。与深度神经网络的前向过程相比,该预测方式效率更高、可以直接适应任何可视化SLAM框架,并保持其实时性能。图2显示了掩码预测的流程,它由六大部分组成:检测、分割、抽样、跟踪、聚类及预测,其中检测和分割在语义线程内部进行,跟踪线程利用检测和分割结果预测当前帧中的掩码。

180973fb00f706676efe41a8a9dcdead.png▲图2|掩码预测流程图©️【深蓝AI】编译

◆检测:

在语义线程中使用YOLO-fastest模型检测帧中的多个对象,并根据语义信息识别潜在的动态对象。NGD-SLAM采用此模型以提高效率,但也可以根据需求与其他模型轻松替换以进行对象检测或分割。

◆分割:

使用目标检测模型比分割网络更有效,但它仅为检测到的对象提供边界框。为了改善这一点,NGD-SLAM使用深度信息来分割这些框内的物体。在识别动态对象(如人)之后,然后对每个边界框中的像素深度进行排序,使用中位数作为检测到的对象的估计深度。边界框被展开,所有接近这个深度值的像素被屏蔽。由于计算效率高,这种方法优于聚类方法。随后,使用连通分量标注算法排除深度相似但不属于主对象的对象的掩码,并通过扩展过程进一步细化掩码,然后将其传递到输出缓冲区。

◆抽样:

给定已识别动态对象的掩码,在掩码内提取动态点。图像被分成大小为15 × 15的单元格。在每个单元格内,识别被遮挡且满足FAST关键点标准的像素,并选择阈值最高的像素。如果没有合适的FAST关键点,则在该单元格中选择一个随机像素。这种网格结构允许动态关键点的均匀提取,并且由于关键点的独特性及其与高梯度区域的关联,保证了跟踪的稳定性。

◆跟踪:

该系统采用Lucas-Kanade光流法来跟踪采样的动态点,该方法假设一个关键点的灰度值在不同帧之间保持不变。数学上表示为:

式中为像素在坐标(x, y)处随时间t的灰度强度值。这个方程可以用泰勒级数进一步展开为:

←左右滑动查看完整公式→

随后,假设像素在一个小窗口内均匀移动,可以形成一个优化问题,该问题利用窗口内的像素梯度通过最小化匹配像素的总灰度误差来估计像素运动(dx, dy)。

◆聚类:

对于当前帧中跟踪的动态点,DBSCAN (Density-Based Spatial Clustering of Applications with Noise)算法应用于彼此接近的聚类点,同时将明显远离任何聚类的点区分为噪声。采用这种方法可以有效地区分来自不同动态对象的跟踪点。此外,通过考虑每个跟踪点的二维位置和深度,该算法有效地排除了异常点,例如明显偏离聚类的点或在二维图像中看起来很近但深度差异明显的点。

◆预测:

在得到聚类后,系统意识到动态实体在当前帧内的位置。因此,它最初为每个簇生成一个粗糙的遮罩,通常是一个矩形,以覆盖其中的所有点。然后,利用每个聚类中点的深度信息,将相应的掩模细化为精确的动态目标形状。如图2所示,为当前帧预测的掩码,效果十分精确。

■2.4 双模跟踪

◆动态跟踪:

9064bbf8ea623a8e20f817af866d9982.png▲图3|动态对象跟踪©️【深蓝AI】编译

虽然掩模预测机制已经是一种动态跟踪,但它对YOLO的依赖有时会导致动态目标跟踪失败。例如,当相机旋转时,YOLO可能很难检测到物体。因此,当语义线程无法提供用于跟踪的掩码时,NGDSLAM提供了一个直接的解决方案:它使用前一帧的预测掩码来预测当前帧的掩码。这种方法允许对动态点进行连续跟踪,直到动态对象在相机中不再可见,在深度神经网络遇到问题的下情况下也能保持跟踪。该方法通过不断地从前一个掩模中采样新的点进行跟踪,而不是跨多个帧跟踪相同的点,确保了关键点保持最新并增强了跟踪的鲁棒性,具体实现效果如图3所示(在深度学习模型失效时,系统也能在30帧内持续追踪动态对象)。而替代方法涉及从相机姿态旋转部分的四元数表达式(w,x,y,z)中导出滚动值,使用:

←左右滑动查看完整公式→

并使用该值旋转图像进行检测,操作示意如图4所示,动态跟踪的目的是在一般情况下提供鲁棒跟踪,因为相机旋转并不是导致检测失败的唯一因素。

13e1b6acc58151fe961bfad0e4bf6ea7.png

▲图4|旋转图像©️【深蓝AI】编译

◆静态跟踪:

与原始ORB-SLAM3依赖于每个输入帧的ORB特征匹配不同,NGD-SLAM使用光流方法从最后一帧开始跟踪静态关键点。将上一帧的三维地图点与当前帧中跟踪的二维关键点链接形成几何约束,并根据以下运动模型计算当前帧的初始位姿:

其中是上一帧的位姿。基于这些信息,应用RANSAC(Random Sample Consensus)算法迭代估计实际姿态并滤除异常值。这种设计基于两个考虑因素:首先,当当前帧中出现一个动态物体但在用于预测的帧中没有出现时,掩码预测机制通常会失败。因此,提取新的ORB特征并基于每帧的描述符值差异进行匹配可能会导致动态点之间的不匹配或匹配。

(具体演示可见图5,在这些帧中,由于动态对象新出现,掩码预测失败。第一行提取和匹配每一帧的ORB特征,得到与动态点的匹配;第二行利用光流法跨多帧跟踪相同的静态点)

相比之下,静态跟踪过程往往更具鲁棒性,该过程基于图像梯度和滤除异常值来跨多帧跟踪相同的静态点。尽管将为关键帧跟踪提取新的ORB特性,但当没有足够的跟踪静态点时,就会发生这种情况,这表明动态对象在多个帧中出现了一段时间。其次,静态跟踪过程跳过了计算代价高昂的非关键帧ORB特征提取,使跟踪过程更加高效。

89d6fca36ae049c0c75b6073f0d2bd64.png▲图5|静态点跟踪©️【深蓝AI】编译

■2.5 关键帧跟踪

关键帧保留ORB特性以建立它们之间的连接。它允许维护基本的ORB-SLAM3组件,如共同可见的图形和本地地图,这对于稳健的跟踪和有效的数据检索至关重要。当静态跟踪表现不佳时,它也可以作为备用跟踪方法,因为它对照明变化和运动模糊更健壮。关键帧跟踪是利用静态跟踪阶段估计的姿态,将最后一个关键帧的地图点投影到当前帧中,得到匹配并进行优化。与原来的ORB-SLAM3类似,添加新的地图点,并将帧传递给本地映射线程进行进一步优化。

fd2348a46fb80f73f64161ceb1ff0a74.png

本文选择了动态环境下最先进的SLAM算法和其他几种基线方法进行比较,包括DynaSLAM、DS-SLAM、CFPSLAM、RDS-SLAM和TeteSLAM。无双模跟踪(仅保留掩膜预测)的NGD-SLAM也用于消融实验。本研究利用了TUM数据集中的四个序列,这些序列捕捉了两个个体在桌子周围移动的场景,其中一个人穿着丰富纹理的格子衬衫。这些序列展示了多种相机运动,包括沿xyz轴的平移运动、旋转运动(显著的横滚、俯仰、偏航变化)、类似半球的轨迹,以及几乎静止的轨迹。为了保证准确性,选择了ATE(绝对轨迹误差)和RPE(相对轨迹误差)作为评估指标,其中RPE测量的间隔设置为1秒(30帧)。为了评估效率,测量了处理给定函数所需的时间(以毫秒为单位)。

■3.1 准确性分析

表1给出了NGD-SLAM与不同基线方法关于ATE均方根误差的比较。最小误差值被突出显示,并在旁边显示相应的等级(除了没有DST的NGD-SLAM,它表示与基本实现相比误差是增加还是减少)。很明显,DynaSLAM、CFP-SLAM和NGD-SLAM在所有序列中都具有很高的精度。然而,DynaSLAM通常给出稍高的误差,而CFP-SLAM在f3/w_rpy序列中的表现不那么令人印象深刻,因为它们采用的极极约束在旋转场景中不太有效。此外,表2和表3显示了RPE RMSE比较,其中NGD-SLAM继续保持最先进的结果。

9eae1612a6011b81b45c352dae3e95f0.png▲表1|绝对轨迹均方根误差比较(单位m)©️【深蓝 AI】编译

996346bc43cf532b8c8a296f9c155d95.png▲表2|平移相对位姿均方根误差比较(单位m/s)©️【深蓝AI】编译

a2b81b19d0de769e9fdc259e390c5534.png▲表3|旋转相对位姿均方根误差比较(单位°/s)©️【深蓝AI】编译

在上述结果中还可见双级跟踪在这里起着至关重要的作用,因为当双级跟踪被禁用时,系统的ATE和RPE通常都会增加。该现象在f3/w_rpy和f3/w_half等更具挑战性的序列中尤为明显。

■3.2 效率分析

表4给出了这些动态序列中每帧平均处理时间的比较。由于一些算法不是开源的,并且在各种设备上进行了测试,因此通过显示算法的每帧平均处理时间与原始ORB-SLAM2/3的平均处理时间的比率来确保公平的比较。ORB-SLAM2/3的平均跟踪时间约为20毫秒;因此,在1.65以内的值可以认为是实时性能。虽然DynaSLAM和CFP-SLAM显示出高精度,但即使在GPU支持下也无法实现实时性能。RDS-SLAM和TeteSLAM是实时运行的,但由于它们仅将深度学习模型应用于关键帧而降低了准确性。相比之下,NGD-SLAM和没有DST(只保持掩码预测)的NGD-SLAM都实现了实时性能,且无需使用GPU。

ab3c3f196404b6fa8a427a4942db82a5.png▲表4|每帧平均跟踪时间比较©️【深蓝AI】编译

■3.3 实时性分析

系统每帧的平均处理时间为17.88毫秒(56 fps),这归功于非关键帧的光流跟踪效率。由于只有关键帧的跟踪涉及到NGD-SLAM的所有组件,因此该研究还进一步对实验进行分段,以评估使用静态、动态和关键帧跟踪方法跟踪关键帧所需的平均时间,如表5所示。可见,采用光流的静态跟踪十分高效,尽管动态跟踪所需时间稍长,但合并后的跟踪过程在33.3毫秒(30 fps)以内,仍然满足实时性的要求。值得注意的是,虽然YOLO检测每帧大约需要30到40毫秒,但由于跟踪线程和语义线程以不同的频率并发操作,因此没有将其考虑到跟踪时间中。

96b0e2df5c9bdcca1402a5835978b2e3.png▲表5|NGD-SLAM每关键帧平均跟踪时间(单位ms)©️【深蓝AI】编译

1615e5a3465fb3d62121a51053ca997e.png

本研究介绍了一种基于CPU的动态环境下的实时可视化SLAM系统。它结合了一个框架独立的掩码预测机制,以减轻由于使用深度学习模型而导致的低效率,同时保持其在动态对象识别中的高精度。此外,为了弥补掩模预测机制的局限性,进一步提高系统的效率,提出了一种双级跟踪方法。在动态环境数据集上的实验评估以及与基线方法的比较表明,NGD-SLAM可以达到与顶级算法相当的精度,并且无需任何硬件加速即可在单个笔记本电脑CPU上获得实时跟踪。这一进展强调了基于深度学习的方法在动态环境中提高SLAM系统有效性的潜力,即使没有GPU的支持。

① 全网独家视频课程

BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署大模型与自动驾驶Nerf语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

3e2ebc482eb24f59f0634b457307d70e.png

网页端官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

5f2c5e7b698f8028f16f6ba1661080e3.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

4f891f077450fe20c68f419e41ca8e20.jpeg

④【自动驾驶之心】全平台矩阵

6ea087cc7cdd2db9f6cd9e2822219482.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值