【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(上)

目录

1 Abstract

 2 Related Work

2.1 单一智能体视觉SLAM(Single-agent Visual SLAM)

2.2 协同视觉SLAM(Collaborative Visual SLAM)

2.3 神经隐式表示(Neural Implicit Representation)

3 Method

3.1 神经点云里程计(Neural Point based Odometry )

3.2 循环检测和子图对齐 (Loop Detection and Sub-Map Alignment)

 3.3 分布式到集中式学习(Distributed-to-Centralized Learning)

3.4 位姿图优化和全局地图细化(Pose Graph Optimization and Global Map Refinement) 

4 实验

5 结论


论文:CP-SLAM: Collaborative Neural Point-based SLAM System | OpenReview

Thirty-seventh Conference on Neural Information Processing Systems

代码: 尚未公布

aaa0559fff0b404cbfc8f307ec3aa905.png

1 Abstract

        这篇论文介绍了一种基于协同隐式神经网络同步定位与地图构建(SLAM)系统,输为入RGB-D图像序列,系统包括完整的前端和后端模块,包括里程计、循环检测、子地图融合和全局优化。

        为了在一个统一的框架中实现所有这些模块,文章提出了一种新颖的基于神经网络的三维场景表示方法,其中每个点维护一个可学习的神经特征用于场景编码,并与特定的关键帧相关联。

        此外,我们提出了一种分布式到集中式的学习策略,用于协同隐式SLAM,以提高一致性和合作。 还提出了一种新颖的全局优化框架,类似于传统的捆绑调整,以提高系统的准确性。

        在各种数据集上的实验证明了所提方法在相机跟踪和地图构建方面的优越性。

 2 Related Work

2.1 单一智能体视觉SLAM(Single-agent Visual SLAM

        随着无人智能的发展,视觉SLAM在过去几十年中成为一个活跃的领域。Klein等人提出了一个视觉SLAM框架[15],将跟踪和地图制作分为不同的线程。这个框架被大多数当前方法所采用。      

       传统的单一智能体视觉SLAM使用过滤或非线性优化来估计摄像机的姿态。

       基于过滤的方法[27, 3, 23]更具实时性,但全局一致性较差。相比之下,基于优化的方法[28, 29, 31, 4, 8, 19]可以充分利用过去的信息。同时,多源信息被广泛整合到SLAM系统中,以改善特定模块,例如轻量级深度估计[48, 42]。

2.2 协同视觉SLAM(Collaborative Visual SLAM

        协同SLAM可以分为两类:集中式和分布式。

        CVI-SLAM[14]是一个集中式视觉惯性框架,可以在中央服务器上共享所有信息,每个代理外包计算密集型任务。

        在集中式SLAM中,服务器管理所有子地图,执行地图融合和全局捆绑调整,并将处理后的信息反馈给每个代理。这个流程在CCM-SLAM[33]中得以重现,其中每个代理配备一个简单的视觉测距,并将定位和三维点云发送到中央服务器。

        在分布式系统方面,Lajoie等人开发了一个完全分布式的SLAM[18],它基于点对点通信,可以拒绝异常值以提高鲁棒性。NetVLAD[1]在[18]中用于检测环路闭合。此外,[10]提出了专门用于多智能体系统的紧凑二进制描述符。

        与传统的协同系统相比,我们的系统可以使用更少的神经点执行密集映射。

2.3 神经隐式表示(Neural Implicit Representation

        神经隐式场在许多计算机视觉任务中表现出色,如新视角合成[24, 25, 38, 2]、场景完成[5, 11, 30]和对象建模[6, 22, 40, 45, 46]。

        在最近的研究中,一些工作[47, 41]试图从建立的神经隐式场中反向推断相机外部参数。受到神经场不同表示方式的启发,包括体素网格[21]和点云[43],NICE-SLAM[50]和Vox-Fusion[44]选择使用体素网格进行跟踪和制图,而不是使用受表达能力和遗忘问题限制的单一神经网络。它们都是与我们最相关的工作。

        此外,vMAP[16]可以在缺乏3D先验条件下有效地建模密封的对象模型。ESLAM[13]通过三面和截断有符号距离场(TSDF)来解决RGB-D SLAM。除了纯神经网络方法外,一些混合系统,如NeRF-SLAM[32]和Orbeez-SLAM[7],构建了神经地图,但使用传统方法来估计姿态。

3 Method

        我们的协同SLAM系统概述下图所示。给定一组RGB-D序列,系统基于每个代理的神经点云表示,逐步进行跟踪和地图制作。

        我们整合了一个基于学习的循环检测模块,该模块提取2D帧的唯一描述符,并通过高质量的循环约束拼接子地图。

        我们设计了一个两阶段(分布式到集中式)的MLP训练策略,以提高一致性并加强协作。

        为了减少制图和跟踪中的累积误差,我们利用子地图之间的共可见性进行全局位姿图优化作为后端处理,然后进行基于帧的地图精炼。

aaa0559fff0b404cbfc8f307ec3aa905.png

        图1:系统概览。我们的系统以单个或多个RGB-D流作为输入,执行如下的跟踪和地图制作。

        从左到右,我们在神经点场中进行可微分的射线体积渲染,以预测深度和颜色。为了获取沿射线的样本点的特征嵌入,我们在半径为r的球内插值邻居特征。

        MLPs将这些特征嵌入解码为用于体素渲染的有意义的密度和辐射度。通过计算渲染差异损失,可以优化相机运动和神经场。

        在跟踪和地图制作过程中,单一代理不断地将由NetVLAD编码的关键帧描述符发送到描述符池。中央服务器将融合子地图,并根据匹配对执行全局位姿图优化(PGO)以加深协作。

        最后,我们的系统以关键帧为中心进行地图精炼,结束整个工作流程。

3.1 神经点云里程计(Neural Point based Odometry )

        我们的系统从一个前端视觉测距模块开始,其中我们结合了位姿反传递更新和基于点的神经场,以执行顺序跟踪和制图。

        基于点的神经场。我们将图像分为4 × 4的块,并逐步投影每个块的中心像素到其对应的3D位置eq?p%20%5Cin%20%5Cmathbb%7BR%7D%5E3。为了获取锚定在 eq?p 上的特征嵌入eq?f%20%5Cin%20%5Cmathbb%7BR%7D%5E%7B32%7D ,将2D图像输入到一个未经训练的单层卷积神经网络。我们定义我们的神经点云为: 

eq?P%20%3D%20%5C%7Bp_j%2C%20f_j%20%5Cmid%20j%20%3D%201%2C%20%5Cldots%5C%7D%20%5Cquad%20%281%29

        体素渲染。我们模拟 NeRF [26] 中的可微分体素渲染策略,其中辐射度和占用度沿着射线积分,以渲染颜色和深度图。给定一个 6DoF 姿势 eq?%5C%7BR_c%2C%20O_c%5C%7D和一帧的内参,我们可以从随机选择的像素发射射线并采样eq?N_%7Btotal%7D 点。任意采样点被定义为:

eq?x_i%20%3D%20O_c%20+%20t_i%20%5Ccdot%20d%20%5Cquad%20i%20%5Cin%201%20%5Cldots%20N_%7B%5Ctext%7Btotal%7D%7D%20%5Cquad%20%282%29

其中eq?t_i%20%5Cin%20%5Cmathbb%7BR%7D 是点的深度,eq?d%20%5Cin%20%5Cmathbb%7BR%7D%5E3是单位射线方向。

        在深度信息的指导下,我们可以在真实表面附近分布我们的样本。具体而言,我们在每条射线上采样eq?N_%7B%5Ctext%7Btotal%7D%7D%20%3D%20N_%7B%5Ctext%7Bnear%7D%7D%20+%20N_%7B%5Ctext%7Buni%7D%7D个点。

        对于具有有效深度 D的任何像素,eq?t_i在间隔eq?%5B0.95D%2C%201.05D%5Deq?%5B0.95D_%7B%5Ctext%7Bmin%7D%7D%2C%201.05D_%7B%5Ctext%7Bmax%7D%7D%5D内均匀采样,分别生成eq?N_%7B%5Ctext%7Bnear%7D%7Deq?N_%7B%5Ctext%7Buni%7D%7D个样本点,其中eq?D_%7B%5Ctext%7Bmin%7D%7D 和 eq?D_%7B%5Ctext%7Bmax%7D%7D是当前深度图的最小和最大深度值。对于没有有效深度值的任何像素,eq?t_i在间隔 eq?%5BD_l%2C%201.05D_%7B%5Ctext%7Bmax%7D%7D%5D内均匀采样,生成 eq?N_%7B%5Ctext%7Btotal%7D%7D​ 个点。对于每个点eq?x_i​,我们首先在查询半径 r内查询 K 个邻居eq?%5C%7Bp_k%20%5Cmid%20k%20%3D%201%2C%20%5Cldots%2C%20K%5C%7D,然后使用一个 MLP eq?C将原始邻居特征eq?f_k转换为eq?f_%7Bk%2C%20x_i%7D,其中包含相对距离信息,即

eq?f_%7Bk%2Cxi%7D%20%3D%20C%28f_k%2C%20x_i%20-%20p_k%29%20%5Cquad%20%283%29

然后,一个辐射度 MLP eq?U使用插值特征eq?f_%7Bxi%7D​ 解码位置 eq?x_i​ 处的 RGB 辐射度 eq?c,该特征是根据反向距离权重和邻域特征进行加权插值得到的:

eq?f_%7Bx_i%7D%20%3D%20%5Csum%5Climits_%7Bk%7D%5Cfrac%7Bw_k%7D%7B%5Csum%20w_k%7D%7Bf_%7Bk%2Cx_i%7D%7Deq?w_k%20%3D%20%5Cfrac%7B1%7D%7B%5C%7Cp_k%20-%20x_i%5C%7C%7D%20%5Cquad%20%284%29

eq?c%20%3D%20U%28f_%7Bxi%7D%29%20%5Cquad%20%285%29

        如果在 eq?x_i处找不到邻居,那么eq?x_i处的占用度eq?%5Csigma 被设为零。否则,我们使用位于eq?x_i处的占用度 MLP eq?G 进行回归。我们采用类似于辐射度的基于反向距离的加权插值,但这里是在占用度水平进行插值。我们解码每个邻居的 eq?%5Csigma_i并最终进行插值:

eq?%5Csigma_k%20%3D%20G%28f_%7Bk%2Cxi%7D%29%20%5Cquad%20%286%29

eq?%5Csigma%20%3D%20%5Csum%5Climits_%7Bk%7D%20%5Cfrac%20%7Bw_k%7D%20%7B%5Csum_k%20w_k%7D%20%7B%5Csigma_k%7D%20%5Cquad%20%287%29

接下来,我们使用从 MLP 中回归得到的eq?c_%7Bx_i%7D​、eq?%5Csigma_%7Bx_i%7D​ 来估计每个点的权重eq?%5Calpha_%7Bx_i%7D​。eq?%5Calpha_%7Bx_i%7D 被视为eq?x_i处的不透明度,或者说射线在该点终止的概率,eq?z_%7Bx_i%7D是点eq?x_i 的深度。

通过沿着射线计算深度和辐射度期望值,可以渲染深度图和颜色图,如下所示:

eq?%5Chat%7BD%7D%20%3D%20%5Csum%5Climits_%7Bi%3D1%7D%5E%7BN_%7B%5Ctext%7Btotal%7D%7D%7D%20%5Calpha_%7Bxi%7D%20z_%7Bxi%7D%20%5Cquad%2C%20%5Chat%7BI%7D%20%3D%20%5Csum%5Climits_%7Bi%3D1%7D%5E%7BN_%7B%5Ctext%7Btotal%7D%7D%7D%20%5Calpha_%7Bxi%7D%20c_%7Bxi%7D%20%5Cquad%20%288%29

        映射和跟踪。我们在映射过程中使用如下所述的渲染差异损失(Eq. 9),其中包含了几何损失和在映射过程中的光度损失。对于新来的帧,我们采样 M1 个像素来优化点锚定特征eq?f_i​ 以及 MLP eq?C%2C%20U%2C%20G的参数。对于第一帧,我们需要以较高的代价对 M3 个像素进行良好的初始化,并进行约 3000∼5000 步的优化以确保后续处理的平滑进行。对于后续的映射,我们从当前帧和 5 个共视的关键帧中均匀选择像素。我们发现联合映射可以有效稳定跟踪过程。

映射损失(Lmapping)如下:

eq?%5Cmathcal%7BL%7D_%7B%5Ctext%7Bmapping%7D%7D%20%3D%20%5Cfrac%7B1%7D%7BM1%7D%20%5Csum%5Climits_%7Bm%3D1%7D%5E%7BM1%7D%20%5Cleft%7CD_m%20-%20%5Chat%7BD%7D_m%5Cright%7C%20+%20%5Clambda_1%20%5Cleft%7CI_m%20-%20%5Chat%7BI%7D_m%5Cright%7C%20%5Cquad%20%289%29

其中,eq?D_meq?I_m 表示地面真实深度和颜色图,eq?%5Chat%7BD%7D_m​、eq?%5Chat%7BI%7D_m 分别是对应的渲染结果,eq?%5Clambda_1是损失平衡权重。在跟踪过程中,我们通过反向传播进一步优化相机外参eq?%5C%7Bq%2C%20t%5C%7D,同时保持特征和 MLP 不变,其中 eq?q是四元数旋转,eq?t是平移向量。我们在新来的帧上采样 M2 个像素,并假设零运动模型,其中新帧的初始姿势与上一帧相同。考虑到颜色图的强烈非凸性,跟踪损失仅包含几何部分:

eq?%5Cmathcal%7BL%7D_%7B%5Ctext%7Btracking%7D%7D%20%3D%20%5Cfrac%7B1%7D%7BM2%7D%20%5Csum%5Climits_%7Bm%3D1%7D%5E%7BM2%7D%20%5Cleft%7CD_m%20-%20%5Chat%7BD%7D_m%5Cright%7C%20%5Cquad%20%2810%29

3.2 循环检测和子图对齐 (Loop Detection and Sub-Map Alignment)

        为了对齐子图并减小累积的位姿漂移,我们执行循环检测并计算不同子图之间的相对位姿。对于子图中的每个关键帧,我们将其与由预训练的NetVLAD [1]模型生成的描述符相关联。

        我们使用描述符之间的余弦相似度作为循环检测的判断标准。

        当摄像机在帧之间移动太多时,位姿优化容易陷入局部最优解,因此我们使用两个相似性阈值 eq?%5Clambda_%7B%5Ctext%7Bfine%7D%7Deq?%5Clambda_%7B%5Ctext%7Bcoarse%7D%7D来找到具有足够重叠并确保正确的循环相对位姿的匹配对。给定两个子图 M1 和 M2,我们找到具有最大重叠的循环帧集合eq?%5C%7BI%5E%7Bl1%7D%2C%20I%5E%7Bl2%7D%5C%7D,其相似度大于eq?%5Clambda_%7B%5Ctext%7Bfine%7D%7D,并且找到小重叠的循环帧集合eq?%7B%28I_1%5E%7Bs1%7D%2CI_2%5E%7Bs2%7D%29%2C%20...%2C%28I_n%5E%7Bs1%7D%2CI_n%5E%7Bs2%7D%29%7D,其相似度大于 eq?%5Clambda_%7B%5Ctext%7Bcoarse%7D%7D 但小于 eq?%5Clambda_%7B%5Ctext%7Bfine%7D%7D。对于eq?%5C%7BI%5E%7Bl1%7D%2C%20I%5E%7Bl2%7D%5C%7D 这样的匹配对,我们将eq?I%5E%7Bl1%7D的位姿视为初始位姿,将eq?I%5E%7Bl2%7D视为参考帧。可以使用第3.1节描述的跟踪方法获取 {M1, M2} 之间的相对位姿测量。我们可以使用这个相对位姿对子图执行三维刚体变换,使得所有子图都设置在相同的全局坐标系中,实现子图对齐的目的,如下面图2所示:

738e25a781394f2abcb297750dd3d371.png

图2:体素网格限制

(a) 如果初始坐标系统不是均匀的,那么现有的神经SLAM(例如体素网格)在子图融合期间可能会因为不对齐而受到影响。

(b) 神经点云不受3D几何形状的限制,可以自由融合。在子图融合后,我们可以从Agent1(绿色点云)和Agent2(紫色点云)的观测中查询点eq?x_i的邻居。

循环损失eq?%5Cmathcal%7BL%7D_%7B%5Ctext%7Bloop%7D%7D%28T_r%29如下:

eq?%5Cmathcal%7BL%7D_%7B%5Ctext%7Bloop%7D%7D%28T_r%29%20%3D%20%5Cfrac%7B1%7D%7BM_2%7D%20%5Csum%5Climits_%7B%5C%7BI_%7B%5Ctext%7Bl1%7D%7D%2C%20I_%7B%5Ctext%7Bl2%7D%7D%5C%7D%7D%20%5E%7BM_2%7D%20%7CD_m%28T_r%29%20-%20%5Chat%7BD%7D_m%7C%20%5Cquad%20%2811%29

        其中,eq?T_req?M_1​ 和eq?M_2之间的相对位姿,eq?Deq?%5Chat%7BD%7D分别是渲染的深度和地面真实深度。对于小重叠的循环帧集合eq?%5C%7BI_i%5E%7Bs1%7D%2C%20I_i%5E%7Bs2%7D%5C%7D,我们仅使用它们执行位姿图优化(参见3.4)。

        子图融合会导致特定区域的神经点冗余,给计算和内存带来负担。由于神经点云的稀疏性,我们采用基于网格的过滤策略,即根据神经点到 ρ³ 立方体中心的距离执行非极大值抑制。

 3.3 分布式到集中式学习(Distributed-to-Centralized Learning)

       为了增强一致性和协作性能,在协作SLAM中,我们采用了一个两阶段的MLP训练策略。在第一阶段(分布式阶段),每个图像序列被视为一个独立的个体,具有用于顺序跟踪制图的唯一组MLPs  eq?%7BC_j%2C%20U_j%2C%20G_j%7D。在循环检测和子图融合之后,我们希望在所有序列之间共享通用的MLPs(集中式阶段)。

        为此,我们引入了联邦学习机制,该机制以协作共享的方式训练单个网络。同时进行子图融合时,我们对每组MLPs进行平均,并在所有关键帧上微调平均的MLPs以统一离散的领域。随后,我们迭代地将共享的MLPs传递给每个代理进行本地训练,并将本地权重平均作为共享MLPs的最终优化结果,如下面图3所示。

441cec3355a74657b0da4863da53468c.png

  

联邦学习(Federated Learning)是一种机器学习的分布式学习方法,其中模型的训练在本地设备上进行,而不是在集中式服务器上。这种方法允许设备在本地训练模型,然后将更新的权重参数传输回中央服务器,从而使全局模型在所有设备上得以改进。 

联邦学习被用于协作性SLAM系统的两个阶段的训练过程中。在分布式阶段,每个图像序列被视为一个独立的个体,具有本地的MLPs(C,U,G)。在集中式阶段,为了提高一致性和合作,通过联邦学习机制,每个代理将其本地模型参数传输到中央服务器,中央服务器根据所有代理的权重更新来进行全局模型的训练。

这种方法的优势在于它允许在不共享原始数据的情况下进行模型训练,从而保护了用户的隐私。同时,它也有助于全局模型更好地适应整个系统的特性,提高一致性和协作水平。

3.4 位姿图优化和全局地图细化(Pose Graph Optimization and Global Map Refinement) 

        在所有序列的前端处理中,包括跟踪、制图、循环检测和子图融合,我们建立了一个全局位姿图模型,其中每帧的位姿作为节点,顺序相对位姿循环相对位姿(sequential relative pose, and loop relative pose are edges作为边。

        位姿图模型如图4所示。我们在整个位姿图上进行全局位姿图优化,参考传统视觉SLAM,将估计的轨迹强制拉近到地面真实轨迹。

d13bf4a2e7fa4622ba8fc450dc05bb7e.png

        全局位姿图优化有效地减轻了累积误差,并提高了跟踪精度。我们使用Levenberg-Marquardt算法来解决由方程12描述的这个非线性全局位姿图优化问题,其中eq?v是节点的集合,eq?E_s是顺序边的集合,eq?E_l是循环边的集合,eq?%5CLambda_i表示相应边的不确定性。

eq?v%5E*%20%3D%20%5Ctext%7Bargmin%7D_v%20%5Cfrac%7B1%7D%7B2%7D%20%5Csum%5Climits_%7Be_i%20%5Cin%20E_s%2C%20E_l%7D%20e_i%5ET%20%5CLambda_i%5E%7B-1%7D%20e_i%20%5Cquad%20%2812%29

        显然,预期神经点云的布局应该在全局位姿图优化后重新排列。然而,一个以世界为中心的点云显然不能允许这样的调整。

        为了解决这个限制,我们提出了一个以关键帧为中心的神经点场,其中每个3D点与一个关键帧关联(上图4)。

        由于这个设计,我们可以根据优化后的姿势来优化我们的点云3D位置。在全局地图细化之后,我们使用基于网格的过滤来处理出现在局部区域的神经点云冗余。

        考虑到全局地图细化后神经场和解码器之间轻微的不匹配,我们最终通过较少的优化迭代执行低成本的全局神经场微调。

4 实验

下一篇【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(下)-CSDN博客

5 结论

下一篇

【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(下)-CSDN博客

  • 39
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LeapMay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值