点击下方卡片,关注“3D视觉之心”公众号
>>点击进入→3D视觉之心技术交流群
动态环境的挑战何解?
近年来,基于 NeRF(神经辐射场)的体素表示作为一种有前途的地图表示方式得到了关注,它能够实现高精度的场景重建。这些方法捕获了环境中的稠密光度信息,使得从新视点生成高质量的图像成为可能。在这些进展的基础上,高斯点云建图(Gaussian Splatting)作为一种新颖的体素技术脱颖而出。与 NeRF 等射线匹配方法不同,高斯点云建图采用了 3D 基元的微分光栅化技术,大大提高了重建质量和渲染速度。
高斯点云建图支持高效且精确的地图表示,同时降低了计算开销,使其成为 SLAM 应用中的一种有吸引力的选择。然而,尽管具有上述优势,大多数现有方法仍假设环境是静态的,这在动态场景中会导致精度下降和性能退化。因此,克服这一限制对于将高斯点云建图 SLAM 应用于真实场景至关重要。
另一方面,一些传统的 SLAM 方法已经发展出应对复杂动态环境挑战的技术。这些方法利用了语义分割先验、光流和残差优化等技术来滤除运动物体。尽管这些方法在减轻动态元素影响方面取得了一定成功,但它们也存在局限性。例如,依赖语义先验的方法在真实场景中经常受到分割误差和伪影的影响,而残差优化在面对大幅度的物体移动时往往失效。此外,传统的动态 SLAM 系统通常难以生成详细的场景表示。
为了同时解决动态环境的挑战以及传统动态 SLAM 方法的局限性,一种动态高斯点云建图SLAM:DGS-SLAM[1] 被设计旨在将高斯点云建图与稳健的动态过滤过程相结合,从高斯初始化到联合优化,全流程处理动态物体。我们充分利用高斯点云建图的内在特性,确保在动态环境中具备鲁棒性和效率。
在此框架下,额外提出了一种稳健的掩模生成方法,通过确保关键帧之间的光度一致性,提高动态物体移除的准确性。该方法能够可靠地区分场景中的动态和静态元素,减少分割误差和伪影(如阴影)的影响。我们还提出了一种基于高斯点云唯一关键帧 ID 的循环感知窗口选择策略,从而实现跨越先前关键帧的联合优化。这进一步增强了框架在动态环境中回访场景时的定位准确性。
DGS-SLAM 在多个动态 SLAM 基准上,在相机跟踪和新视点合成方面达到了最先进的性能,证明了其在真实动态场景中处理问题的有效性。
具体方法
DGS-SLAM 方法如图 2 所示,与现有的高斯点云建图 SLAM 类似,该系统在高斯地图初始化后包含前端的跟踪过程和后端的建图过程。DGS-SLAM 同时优化相机位姿 ,并在动态元素移除的情况下重建 3D 高斯点云,从一系列 RGB-D 帧输入 中提取信息。
高斯点云建图
系统采用高斯点云作为地图表示。每个各向异性的高斯 由其 RGB 颜色 、均值位置 、协方差矩阵 和不透明度 参数化。我们对高斯进行简化,去除了球谐函数(SHs),每个高斯点的表达式为:
其中 表示 3D 空间中的点。
按照 3D 高斯点云建图,每个 3D 高斯点云通过光栅化为 2D 的斑点,支持场景重建和位姿估计的梯度传递。我们将 个高斯按深度排序,并将其与像素 的颜色混合:
深度渲染采用与颜色渲染类似的公式:
位姿跟踪
在前端的跟踪过程中,我们通过最小化输入帧与渲染结果之间的差异来优化相机位姿 。具体来说,对于每一输入帧 ,通过预测位姿 渲染出对应的颜色和深度结果 。为提高位姿估计的准确性,需要剔除动态元素。
动态元素过滤
语义分割掩模生成:我们使用现成的在线实例视频模块【38】生成动态物体的语义分割掩模 ,标识出场景中的动态区域。 不透明度掩模生成:通过不透明度检查生成 ,用于过滤掉映射过程中未填充的空间。 综合掩模生成:将分割掩模和不透明度掩模结合,生成跟踪掩模 :其中, 是用于确定未映射区域的阈值,设置为 0.95。
位姿优化
通过最小化以下损失函数来优化当前帧 的相机位姿:
其中:
是渲染图像与输入图像之间的光度残差: 是渲染深度与输入深度之间的残差: 是用于平衡光度残差和深度残差的权重。
通过这种方式,DGS-SLAM 能够在过滤动态元素的同时,稳健地优化相机位姿,从而实现高精度的跟踪性能。
循环感知关键帧管理
关键帧选择
在优化输入帧 的相机位姿 后,我们根据以下标准形成一个包含关键帧的优化窗口 ,以便联合优化高斯点云 和相机位姿 ,其中 :
高斯点云共视性:我们通过当前帧 与上一个关键帧 的可见高斯点云的交并比 (Intersection over Union, IoU) 测量高斯点云的共视性。如果可见高斯点云的 IoU 满足以下条件:
则当前帧被注册为关键帧。
**相对位姿 **:如果当前帧与上一个关键帧之间的平移和旋转差异超过预定义阈值,则当前帧被选为关键帧。
唯一关键帧 ID:为维护一致的窗口长度,我们基于类似的标准移除过时的关键帧。
循环感知关键帧插入
当窗口 的管理仅基于共视性和相对位姿时,被移除的关键帧将无法影响全局地图的一致性,从而破坏全局高斯地图的连续性。为解决这一问题,我们提出了循环感知关键帧插入机制:
关键帧 ID 的分配:为每个生成的高斯点云 分配其来源帧的唯一关键帧 ID,记为 。
循环检测与插入:通过当前帧 中可见的高斯点云 ,检测到与过去帧的循环部分。被识别的循环关键帧 将重新加入优化窗口,与当前关键帧联合优化:
这种循环感知关键帧插入策略确保了被移除的关键帧仍然能够通过与当前帧的循环检测,保持全局高斯地图的连续性和一致性。
建图过程
在建图过程中,DGS-SLAM 实现了动态环境下高斯点云的插入、裁剪和优化,从而构建稠密的 3D 地图,同时保证高效性和准确性。
高斯点云插入与初始化
初始高斯插入
在相机跟踪和建图过程开始之前,我们使用第一帧输入数据初始化 3D 高斯点云。具体步骤如下:
利用输入帧的深度图 和颜色图 ,计算初始场景的深度对齐值:其中 是估计深度, 和 为线性调整参数。 使用深度补洞技术,完成初始场景的稠密深度信息填充。 将动态元素剔除后,利用以下公式初始化高斯点云的 3D 坐标 :其中 为语义分割掩模。
初始化优化
初始高斯通过以下损失函数进行优化:
优化完成后,DGS-SLAM 生成了一组基础高斯点云。
增量插入
在后续的关键帧添加过程中,新生成的高斯点云通过公式计算位置,并以更稀疏的方式插入到现有地图中。每个高斯的尺度按照场景的中位深度调整,从而保证内存效率。
高斯点云裁剪
为了提升效率和减少冗余,系统采用高斯点云裁剪策略:
高斯稠密化与裁剪:遵循现有方法,对新增高斯点云进行稠密化,同时移除冗余或无用的高斯点云。
稳健掩模生成
问题:在线分割技术在真实环境中可能存在误差,例如动态元素导致的遮挡或伪影。 解决方案:在窗口优化过程中,生成稳健掩模以剔除异常值。具体步骤如下:
计算光度残差直方图:通过直方图 提取光度残差分布。 设置残差阈值 以区分内点与异常值: 使用归一化核 对掩模进行平滑,生成稳健掩模:
窗口优化
在后端建图中,通过窗口优化对 3D 高斯点云和相机位姿进行联合优化。优化目标函数如下:
其中:
为窗口优化掩模; 是各向同性正则化项,用于减少高斯点云建图过程中的伪影。
通过上述过程,DGS-SLAM 实现了动态环境中高效的稠密场景重建,同时确保了地图的精度与一致性。
实验效果
总结一下
我们提出了 DGS-SLAM,这是首个动态高斯点云建图 SLAM 框架。该方法不仅在跟踪和建图阶段处理动态元素,还贯穿于整个高斯点云建图系统,确保稳健的位姿跟踪和高斯点云重建。此外,为实现精确的定位与建图性能,我们引入了一种基于光度残差的稳健掩模生成方法。进一步地,我们提出的基于回环的关键帧管理策略能够通过与过去帧的回环,确保高斯地图的一致性。我们的方法在两个典型动态数据集上的性能达到了基于辐射场的 SLAM 方法的最先进水平。
参考
[1] DGS-SLAM: Gaussian Splatting SLAM in Dynamic Environment
本文仅做学术分享,论文汇总于『3D视觉之心知识星球』,欢迎加入交流!
扫码添加小助理进群
3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。