点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
论文作者 | 蜘蛛侦探
编辑 | 自动驾驶之心
实时和一致性可以兼得
传统的SLAM系统具有低延迟和高精度跟踪能力,并通过回环检测确保全局一致性。但是只能构建稀疏点地图,缺乏稠密的几何和纹理信息。
基于神经隐式表示的SLAM系统可以实现高保真的场景重建。但是基于神经表示的跟踪缺乏回环检测支持,导致在大场景中由于缺乏全局一致性而表现不佳。如图1所示,即使在系统中集成了回环检测,例如,通过用传统的SLAM系统替代跟踪模块,相对于更新的位姿重新训练整个地图也是非常耗时的。此外,它们的建图网络的慢收敛性进一步阻碍了其满足低延迟映射的要求。
NGEL-SLAM是一个基于神经隐式表示的全局一致低延迟SLAM系统,主要特点是:
精确的跟踪和地图构建:系统通过并行运行传统的基于特征的跟踪模块(ORB-SLAM3[2])和神经隐式场景建图模块实现了精确的性能。
全局一致性:系统集成了回环检测以确保全局一致性。
低延迟:在跟踪和地图构建方面都实现了低延迟。其中地图构建包括对回环检测的快速响应和在新帧到来时的快速收敛
(大拇指往上滑,点击最上方的卡片关注我,整个操作只会花你 1.328 秒,然后带走未来、所有、免费的干货,万一有内容对您有帮助呢~)
系统方法
跟踪和建图模块
系统通过利用两个模块(跟踪和建图)实现了从RGB-D视频输入中同时估计精确的相机姿态和3D场景几何和外观。跟踪模块基于出色的传统SLAM系统ORB-SLAM3,而建图模块使用多个隐式神经地图来表示场景。
该系统包括三个过程:跟踪、动态局部映射和回环关闭。
在跟踪过程中,跟踪模块估计相机姿态 ,并确定输入帧是否为关键帧。
每个关键帧都会被送入动态局部建图过程中,该过程涉及跟踪模块执行BA并选择适当的局部地图进行建图模块的训练。
当检测到回环时,回环关闭过程开始,在此过程中,跟踪模块使用全局BA优化所有关键帧的姿态,建图模块则通过调整子地图迅速响应跟踪姿态的显著变化,随后进行地图微调。
所有三个过程都是并行运行的。高速训练和对回环检测的快速响应使系统满足了实际应用中的低延迟要求。其中,所说的“低延迟”是指在接收到RGB-D流中的新关键帧之前将关键帧的大部分信息集成到地图中的能力,无论是否检测到回环。
动态局部地图
当一个帧被确定为关键帧时,跟踪模块使用局部BA来优化相关的关键帧,并将这些姿态和新的关键帧提供给建图模块。
建图模块首先执行局部地图选择,通过评估共同可见关系来确定新的关键帧是否属于现有的局部地图。这避免了映射模块生成冗余的局部地图,特别是在回环检测之后。如果关键帧不属于任何现有的局部地图,则会初始化一个新的局部地图,并相对于当前关键帧(称为锚点帧)进行定位。在确定了局部地图之后,建图模块使用在局部BA中优化了姿态的关键帧来训练局部地图。地图每14毫秒更新一次,以确保低延迟的要求。
回环检测
当检测到回环时,跟踪模块执行全局BA。然而,全局BA会立即改变先前预测的相机姿态,这通常被称为轨迹跳跃。为了解决这些变化,基于单一体积的隐式神经方法需要重新训练场景表示,并更新大多数先前训练的参数,这非常耗时。
本系统使用多个局部地图来表示整个场景。当全局BA完成后,场景表示经历从粗到细的两阶段优化。
在第一阶段,建图模块执行子地图调整,通过使用锚点关键帧的姿态来更新场景表示。
在第二阶段,建图模块微调先前的局部地图以纠正错误。
第一阶段是实时调整,能够纠正局部地图之间的错误,这一阶段有效地纠正了场景表示中的大部分错误。第二阶段涉及次实时优化,消除局部地图内的小错误,进一步提高场景表示的准确性。
基于不确定性的图像渲染
由于系统包含多个子地图,在从给定视点渲染图像时需要考虑两种情况:
第一种情况是视锥完全与一个子地图相交,使系统能够使用该特定子地图渲染图像。
第二种情况是视锥位于不同子地图的边界上,使得无法从单个子地图生成完整的图像。在这种情况下采用基于最低不确定性的逐像素融合方法来渲染图像。
地图表示和训练
基于八叉树的隐式神经表示
基于体素网格的NeRF架构使用的密集网格结构会浪费内存。为了解决这个问题,借鉴NGLOD[3]的思想,使用稀疏的八叉树网格。八叉树仅在空间被占用的地方生长,从而提高了内存效率。多级特征向量(用表示)存储在八叉树的节点上。如图3所示,当我们查询一个点时,点在第层的特征通过三线性插值获得。然后,类似于NGLOD,将不同活动层(即存储特征的层)的特征求和,得到点的特征。此外,我们将八叉树修改为增量模式,其中维护了一个Morton码表,以提供新添加到八叉树的点的位置。
使用了两个小型MLP解码器,一个用于占用情况,另一个用于颜色。为了计算空间中给定点的占用情况和颜色,使用以下方程:
这里,是点的特征向量,和分别是占用和颜色解码器,σ是Sigmoid函数。
体积渲染
为了优化场景表示框架,使用了NeRF[4]中提出的可微体积渲染。给定相机内参和当前相机姿态,从相机中心通过像素沿其归一化视图方向投射出一条射线。
深度和颜色:沿着一条射线采样个点,用表示,其中,是点的深度,。这些点的预测占用值和颜色值分别表示为和。对于给定的射线,可以计算深度和颜色:这里,α,分别对应于沿射线的传输率和alpha值。
基于体素的采样:为了充分利用八叉树结构,采用了一种基于体素的采样策略。给定一条射线,查询它所交叉的体素,并在这些体素内沿射线采样点。由于八叉树仅在有点被占用的地方生长,因此采样点都接近物体表面或在物体内部。我们在每个体素内采样固定数量的个点。因此,对于一条与个体素相交的射线,沿射线采样个点。
优化:在当前帧中均匀选择个像素,并使用光度损失和几何损失来训练场景表示。光度损失是渲染图像和真实颜色图像之间的均方误差(MSE)损失,而几何损失是渲染深度和真实深度之间的简单损失。定义损失如下:通过最小化以下损失函数来联合优化特征和解码器参数θ:其中,λ是光度损失的权重。
不确定性:由于占用情况遵循伯努利分布,点的占用值表示该点被占用的概率,其方差可以计算为。射线的占用方差可以渲染为:为了考虑未观察区域中的更高不确定性,将这些区域的方差设置为0.25。
实验效果
总结一下
NGEL-SLAM是一个适用于室内场景、基于神经隐式表示的全局一致低延迟SLAM系统。结合传统的跟踪和神经隐式场景表示,该方法在跟踪准确相机姿态的同时生成高精度的网格。与其他基于神经隐式的SLAM系统相比,确保了全局一致性和低延迟,更适合于实际应用。
参考
[1] NGEL-SLAM: Neural Implicit Representation-based Global Consistent Low-Latency SLAM System
[2] Orb-slam3: An accurate open-source library for visual, visual–inertial, and multimap slam
[3] Neural geometric level of detail: Real-time rendering with implicit 3d shapes
[4] Nerf: Representing scenes as neural radiance fields for view synthesis
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!
① 全网独家视频课程
BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
网页端官网:www.zdjszx.com② 国内首个自动驾驶学习社区
国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】全平台矩阵