DROID-SLAM
约 7985 字大约 27 分钟
2025-08-28
Zachary Teed Jia Deng
Princeton University
2022
https://zhuanlan.zhihu.com/p/479534098
https://github.com/pytholic/ml_cv_scripts_guides/blob/main/droid_slam/vis_gui_dialog.py
摘要
我们提出 DROID-SLAM,一种基于深度学习的新型 SLAM 系统。DROID-SLAM 通过稠密光束法平差(Dense Bundle Adjustment)层,对相机位姿和逐像素深度进行循环迭代更新。该系统不仅精度高,在多项测试中均显著超越以往方法;而且鲁棒性强,灾难性失效的情况大幅减少。尽管仅在单目视频上进行训练,DROID-SLAM 在测试阶段可直接利用双目或 RGB-D 视频,进一步提升性能。项目开源代码已发布:https://github.com/princeton-vl/DROID-SLAM。
1. 引言 Introduction
SLAM旨在(1)构建一个环境地图,(2)在这个环境中定位智能体。这是SFM运动恢复结构的一种特殊形式,专注于准确跟踪长期轨迹。对于机器人,特别是自主车辆,来说是一项关键的能力。在本文工作中,我们解决视觉SLAM问题,其中传感器以单目、双目或者RGBD相机捕获的图像形式进行录制。
SLAM问题已从许多不同角度进行处理。早期的工作使用基于概率和滤波器的方法,以及交替优化地图和相机位姿。再进一步,现代SLAM系统已经利用了最小二乘优化。准确度的一个重要元素是全局BA,其在一个单独的优化问题中联合优化相机位姿与3D地图。基于优化的形式的优势是SLAM系统能很容易的修改为使用不同的传感器。例如,ORBSLAM3支持单目、双目、RGBD以及IMU传感器,而且现代SLAM系统能够支持不同的相机模型。尽管取得了重大的进展,但是当前的SLAM系统对于许多真实世界的应用缺乏所需要的鲁棒性。在许多情况下会失效,例如特征点跟踪丢失,优化问题发散无法收敛以及偏移累积。深度学习已经被提出作为许多这些失效案例的解决方案。之前的工作已经研究了用神经3D表示学习到的特征来代替人工特征,并将学习的能量项与经典的后端优化进行结合。其它的工作尝试学习端到端的SLAM或者VO系统。虽然这些系统有时会很鲁棒,但它们在普通基准测试benchmark上的准确性远远低于经典SLAM系统。
本文提出DROID-SLAM,一种基于深度学习的新SLAM系统。它具有最佳的性能,在具有挑战性的基准测试上优于已有经典的或者是基于学习的SLAM系统。特别地,DROID-SLAM具有如下优点:
- *高准确性 High Accuracy*:我们在多个数据集或者相机模式上取得比之前工作较大的提升。在TartanAir SLAM竞赛中,我们在单目跟踪上比之前最好地结果减少了62%的错误,在双目跟踪上减少60%。我们在ETH-3D RGBD SLAM榜单上排名第一,在AUC指标上比第二名要好35%,这包含了灾难性失效的误差以及比率。在EuRoC的单目数据集上,在零失败的方法中,我们减少了82%的误差。考虑到11个序列中只有10个成功了,它比ORB-SLAM3高出43%。使用双目相机的输入,我们比ORB-SLAM3减少了71%的误差。在TUM-RGBD数据集上,我们在零失败的方法中减少了83%的误差。
- 高鲁棒性 High Robustness:与以前的系统相比,我们发生的灾难性故障要少得多。在ETH-3D数据集上,我们成功地跟踪了32个RGB-D数据集中的30个,而第二名只成功地跟踪了19/32。关于TartanAir,EuRoC和TUM-RGBD数据集上,我们没有出现任何失效。
- 强泛化性 Strong Generalization:我们的系统只使用单目输入进行训练,可以直接使用双目或RGB-D输入来提高精度,而不需要再进行任何训练。我们在4个数据集和3种相机模式上的所有结果都是通过单一模型得到,完全在synthetic TartanAir数据集上,只用单目输入训练了一次。
DROID-SLAM的“可微循环优化启发设计 Differentiable Recurrent Optimization-Inspired Design(DROID)”使得其具有较强的性能和泛化性,是一个端到端可微的架构,它结合了经典方法和深度网络的优势。具体来说,它包括循环迭代更新,建立在光流的RAFT基础上,但引入了两个关键的创新点。
首先,与迭代地更新光流的RAFT不同,我们迭代地更新相机位姿和深度。RAFT可以在两帧上运行,而我们的更新则可以应用于任意数量的帧,实现了所有相机位姿和深度图的联合全局优化,这对于最小化长轨迹和闭环的漂移至关重要。
其次,DROID-SLAM中相机位姿和深度图的每次更新都是由可微的Dense BA层产生的,该层计算出对相机位姿和每个像素的稠密深度dense per-pixel depth的高斯-牛顿更新,使其最大限度地提高其与当前光流估计的兼容性。这种DBA层利用了几何约束,提高了精度和鲁棒性,并使得单目系统可处理双目或RGB-D输入,而无需再次训练。
DROID-SLAM的设计是新颖的。之前最接近的深度架构是**DeepV2D和BA-Net,这两种方法都专注于深度估计,并报告了有限的SLAM结果。DeepV2D 交替更新深度和更新相机位姿,而不是BA。BA-Net有一个BA层,但它们的层有本质上的不同:它不是“dense密集的”,因为它优化了一个用于线性组合深度基(一组预先预测的深度图)的少量系数,而我们直接对每个像素深度进行了优化,而不受深度基depth basis**的阻碍。此外,BA-Net优化了光度重投影误差(在特征空间中),而我们优化了几何误差,利用了最先进的流估计flow estimation。
我们对四个不同的数据集和三种不同的相机模式进行了广泛的评估,在所有情况下都展示了最好的性能。我们还包括了消融实验,阐明了重要的设计决策和超参数。
2. 相关工作 Related Work
现代SLAM系统将定位与建图视为一个联合优化问题。
视觉VSLAM专注于以单目、立体或RGB-D图像的形式进行观测。这些方法通常被分为直接法(direct)或间接法(indirect)。间接法首先通过检测感兴趣点将图像处理为**中间表示(intermediate representation)**和附加的特性描述子。然后在图像之间进行特征匹配。间接法通过最小化投影三维点与其在图像中的位置之间的重投影误差,来优化相机位姿和三维点云。
直接法对图像形成过程(image formation process)进行建模,并定义了一个光度误差上的目标函数。直接法的一个优点是,它们可以建模出图像的更多信息,如线和强度变化,这些不在间接法中使用。然而,光度误差通常会导致更困难的优化问题,并且直接法对卷帘快门伪影(rolling shutter artifacts)等几何失真的鲁棒性较差。这种方法需要更复杂的优化技术,如从粗到细的图像金字塔(coarse-to-fine image pyramid),以避免陷入局部最优。
我们的方法并不适合于上述任何一个类别。与直接法一样,我们不需要预处理步骤来检测和匹配图像之间的特征点。相反,我们使用完整的图像,允许我们利用比通常只使用角点和边缘特征的间接法更大、更广泛的信息。然而,类似于间接法,我们也最小化重投影误差。这是一个更容易的优化问题,并避免了需要更复杂的表示,如图像金字塔。从这个意义上说,我们的方法借鉴了两种方法的优点:间接法更平滑的目标函数和直接法更大的建模能力。
深度学习已经被广泛应用于SLAM问题。许多工作都集中于针对特定子问题的训练系统,如特征检测、特征匹配和离群值去除(outlier rejection)和定位。SuperGlue旨在进行特征匹配和验证,使二视图位姿估计更加鲁棒。我们的网络也从Dusmanu等人那里获得灵感,它建立一个神经网络到运动恢复结构SFM管线中,以提高关键点定位精度。
其他的工作都集中在端到端训练SLAM系统上。这些方法并不是完整的SLAM系统,而是专注于2帧到多大十几帧达的小规模重建。它们缺乏现代SLAM系统的许多核心能力,如闭环检测和全局BA集束调整,这抑制了它们执行大规模重建的能力,如我们实验中所示。∇SLAM实现了几种现有的SLAM算法作为可微计算图(differentiable computation graphs),允许将重建中的误差反向传播回传感器观测。而这个方法是可微的,它没有可训练的参数,这意味着系统的性能受到它们所模拟的经典算法精度的限制。
DeepFactors是最完整的深度SLAM系统,建立在早期的CodeSLAM之上。它可以对位姿和深度变量进行联合优化,并能够进行短期和远距离闭环。与BA-Net类似,DeepFactors在推理过程中优化了学习到的深度基(deep basis)的参数。相比之下,我们并不依赖于学习的basis,而是优化像素级的深度。这允许我们的网络更好地推广到新的数据集,因为我们的**深度表示(depth representation)**跟训练数据集不会绑定。
3. 方法 Approach
我们将视频作为输入,有两个目标:估计相机的轨迹并建立环境的三维地图。我们首先描述单目相机的配置;在3.4小节描述如何将系统推广泛化到双目立体和RGB-D视频。
表示Representation:我们的网络运行在一个有序的图像集合上, 。对于每幅图像 ,我们维护两个状态变量:相机位姿 和逆深度 。位姿集合, ,和逆深度集合 为未知状态变量,在处理新帧的推理过程中进行迭代更新。本文中,当我们提到深度时,注意,我们使用的是逆深度参数化(inverse depth parameterization)。
我们采用frame-graph 来表示帧间的共视性(co-visibility)。边 表示图像 和 有重叠的视场FOV。Frame-graph是在训练和推理中动态构建的。在每次位姿或深度更新后,我们可以重新计算可视性来更新frame-graph。如果相机返回到先前建图的区域,我们将在图中添加远程连接来执行闭环。
3.1 特征提取和相关性 Feature Extraction and Correlation
从添加到系统中的每个新图像中提取特征。这个阶段的关键组成部分借鉴了RAFT。
特征提取 Feature Extraction。每个输入的图像都通过一个特征提取网络进行处理。该网络由6个残差块和3个降采样层组成,产生1/8输入图像分辨率的稠密特征图。与RAFT一样,我们使用两个独立的网络:特征网络(feature network)和上下文网络(context network)。特征网络用于构建相关性体积集合(set of correlation volumes),而在更新操作符的每个应用期间,上下文特征都被注入到网络中。
相关性金字塔 Correlation Pyramid。对于frame-graph中的每条边, ,我们通过取 和 中的所有对特征向量匹配对之间的点积来计算一个四维相关性体积(4D correlation volume)。
(1)
然后,我们按照RAFT对相关性体积的最后两个维度进行平均池化,形成一个四层相关性金字塔(4-level correlation pyramid)。
相关性查找 Correlation Lookup 我们定义一个查找算子,它使用半径为 的网格来索引相关性体积,
查找算子以 大小的坐标网格作为输入,并使用双线性插值从相关性体积中检索值。该算子应用于金字塔中的每个相关性体积,并且最终的特征向量是通过连接每个层次的结果来计算的。
3.2 更新算子 Update Operator
我们的SLAM系统的核心组件是一个学习过的更新算子(update operator),如图2所示。更新算子是一个带隐藏状态 的3\times3 卷积GRU。算子的每个应用都会更新隐藏状态,并且还生成一个位姿更新, 和深度更新, 。位姿和深度更新,分别通过在SE3流形上收缩和矢量加法,应用于当前的深度和位姿估计。
, (2)
更新算子的迭代应用产生了一系列的位姿和深度,期望收敛到一个固定点 ,反映了真实的重建。
对应关系 Correspondence 在每次迭代开始时,我们使用当前的位姿和深度估计来估计对应关系。给定第 帧图像中的像素坐标网格, ,我们计算稠密一致性场(dense correspondence field)
(3)
对于frame-graph中的每条边 。这里 是将一组三维点映射到图像上的相机模型, 是逆投影函数,将逆深度图 和坐标网格 映射到一个三维点云中。 表示像素 使用估计的位姿和深度映射到帧 的像素坐标。
输入 Inputs。我们使用correspondence filed来索引相关性体积。对于每条边 ,我们使用 从相关性体积 中执行查找,以检索相关性特征。此外,我们利用correspondence filed推导出相机运动引起的光流作为差值。此外,来自前一个BA解决方案的残差与流场连接起来,允许网络使用来自前一个迭代的反馈。
相关性特征提供了关于在 附近的视觉相似性信息,使网络能够学习对齐视觉上相似的图像区域。然而,correspondence有时是模棱两可的。流场提供了一个互补的信息源,允许网络利用运动场中的平滑性来获得鲁棒性。
更新 Update。相关性特征和流特征在注入GRU之前分别通过两个卷积层进行映射。此外,我们还将由上下文网络提取的上下文特征,通过逐元素相加注入到GRU中。
ConvGRU是一种具有较小感受野的局部操作运算。我们通过在图像的空间维度上平均隐藏状态来提取全局上下文,并使用这个特征向量作为附加输入到GRU中。全局上下文在SLAM中很重要,因为导致的不正确的一致性可能会降低系统的准确性。这对网络识别和拒绝错误的一致性非常重要。
GRU产生一个更新的隐藏状态 。我们不是直接预测对深度或位姿的更新,而是预测稠密流场空间中的更新。我们通过两个额外的卷积层映射隐藏状态,以产生两个输出:(1)一个修正流场 和(2)相关的置信图 。修正的 是网络预测的密集一致性场中修正误差的修正项。我们将修正后的对应关系表示为
然后,我们池化共享相同源视图 的所有特征上的隐藏状态,并预测一个像素级阻尼因子(pixel-wise dampling factor) 。我们使用softplus算子来确保阻尼项是正的。此外,我们使用池化后的特征来预测一个 的掩模,这可用于上采样逆深度估计。
稠密集束调整层 Dense Bundle Adjustment Layer(DBA)。DBA将一组流场的修正集合映射为一组位姿和像素级的深度更新。我们定义了整个frame-graph上的代价函数:
(4)
其中 为马氏距离,是基于置信度权重 对误差项进行加权。**公式(4)**表示,我们想要一个更新的位姿 和深度 ,以便重新投影的点与更新操作符预测的修正的对应关系 相匹配。
我们使用局部参数化(local parameterization)来线性化公式(4),并使用GN高斯-牛顿算法求解更新 。因为公式(4)中的每个项只包含单个深度变量,所以海森矩阵是块对角结构(block diagonal structure)。通过分离位姿和深度变量,系统可以利用像素阻尼因子 来有效地求解:
其中 是对角矩阵,并且可以很容易的取逆 。DBA层是作为计算图的一部分被实现的,在训练过程中通过层进行反向传播。
3.3 训练 Training
我们的SLAM系统是在PyTorch中实现的,我们使用LieTorch的扩展版本在所有**组元素(group elements)**的切线空间中执行反向传播。
消除自由度 Removing gauge freedom。在单目设置下,网络只能恢复相机的轨迹到相似变换(similarity transform)。一个解决方案是定义一个对相似变换不变的损失。然而,在训练过程中仍然存在gauge-freedom,这对线性系统的调节和梯度的稳定性影响较小。我们通过将前两个位姿固定到每个训练序列的位姿真值上来解决这个问题。固定第一个位姿消除了六自由度的gauge freedom。固定第二个位姿可以解决尺度自由度(scale freedom)。
构建训练视频 Constructing training video。每个训练示例都由一个7帧的视频序列组成。为了确保稳定的训练和良好的下游性能,我们希望对不太容易或不太困难的视频进行采样。
训练集由一组视频组成。对于每个长度为 的视频 ,我们预先计算一个 的距离矩阵,存储每对帧之间的平均光流大小。然而,并不是所有的帧都是共视的;而重叠度小于50%的帧对被分配了一个无穷大的距离。在训练过程中,我们通过距离矩阵中的采样路径动态生成视频,使相邻视频帧之间的平均流量在 8px 到 96px之间。
监督 Supervision。我们通过使用**位姿损失(poss loss)和流量损失(flow loss)**的组合来监测我们的网络。流量损失应用于相邻的帧对。我们计算了由预测的深度和位姿所引起的光流,以及由深度真值和位姿真值引起的光流。损失取为两个光流场之间的平均 距离。
给定一组真值位姿 和预测的位姿 ,位姿损失为真值和预测位姿之间的距离, 。我们将损失应用到每次权重呈指数递增( )的输出中。
3.4 SLAM系统
在推理过程中,我们将网络组合成一个完整的SLAM系统。该SLAM系统以一个视频流作为输入,并实时进行重建和定位。我们的系统包含两个异步运行的线程。前端(front end)线程接受新的帧,提取特征,选择关键帧,并执行局部BA。后端(back end)线程同时在关键帧的整个历史记录上执行全局BA。我们在这里提供了该系统的概述。
初始化 Initialization。DROID-SLAM的初始化很简单。我们只是采集帧数据,直到我们有一组12个。当我们积累帧时,我们只保留了光流大于16px时的历史帧(通过应用一次更新迭代进行估计)。一旦积累了12帧,我们通过在3个时间步内的关键帧之间创建一条边来初始化一个frame-graph,然后运行10次迭代更新算子。
前端 Frontend。前端直接在输入的视频流上运行。它维护一个关键帧集合和一个frame graph,存储共视关键帧之间的边。关键帧的位姿和深度都是积极的被优化。首先从输入的帧中提取特征。然后将新帧添加到帧-图frame-graph中,通过平均光流测量添加具有3个最近邻的边。这个位姿使用线性运动模型进行初始化。然后,我们应用更新算子的几次迭代来更新关键帧的位姿和深度。我们固定前两个位姿,以消除测量自由度(gauge freedom),但将所有深度作为自由变量。
在跟踪到新帧后,我们选择一个关键帧进行删除。我们通过计算平均光流大小来计算帧对之间的距离,并去除冗余帧。如果没有帧是候选删除帧,我们就删除最旧的关键帧。
后端 Backend。后端会在整个关键帧的历史记录中执行全局BA集束调整。在每次迭代中,我们使用所有关键帧对之间的流来重建frame-graph,表示为一个 的距离矩阵。我们首先在时间上相邻的关键帧之间添加边。然后,我们从距离矩阵中以增加流的顺序采样新的边。对于每条被选择的边,我们都会抑制距离为2之内的相邻边,其中距离定义为索引对之间的切比雪夫Chebyshev距离 。
然后,我们将更新算子应用于整个frame-graph中,通常由数千个帧和边组成。存储完整的相关性体积集合将很快超过视频内存。相反,我们使用了在RAFT中提出的内存效率实现。
在训练过程中,我们在PyTorch中利用自动微分引擎(automatic differentiation engine)实现了稠密集束调整DBA。在推理时,我们使用了一个自定义的CUDA内核,它利用了block-sparse结构,然后对简化的相机块进行稀疏Cholesky分解。
我们只对关键帧图像执行全局BA。为了恢复非关键帧的位姿,我们通过迭代估计每个关键帧和它相邻的非关键帧之间的流来进行纯运动BA。在测试过程中,我们评估了完整的相机轨迹,而不仅仅是关键帧。
双目立体和RGBD。我们的系统可以很容易地修改为双目和RGBD视频。在RGB-D情况下,我们仍然将深度视为一个变量,因为传感器的深度可能是有噪声的,并且缺少观测结果,并且简单地添加一项到优化目标中(公式4),它用来惩罚观测深度和预测深度之间的平方距离。对于双目的情况,我们使用上面描述的完全相同的系统,只有两倍的帧图像,并固定DBA层中左右帧之间的相对位姿。帧图中的**交叉相机边(cross camera edges)**允许我们利用双目立体信息。
4. 实验 Experiments
我们在不同的数据集和传感器模态上进行了实验。我们与基于深度学习的和已建立的经典SLAM算法进行了比较,并特别强调了跨数据集的泛化。根据之前的工作,我们评估了相机轨迹的准确性,主要使用绝对轨迹误差(Absolute Trajectory Error,ATE)。虽然一些数据集有真值点云,但它们没有比较SLAM系统直接给出的三维重建的标准协议,因为SLAM系统可以选择要重建的三维点。评估稠密的三维重建是典型的在多视图立体几何领域内考虑的,超出了本工作的范围。
图3. DROID-SLAM可以推广到新的数据集。为此,我们展示了来自Tank & Temple、ScanNet、Sintel和ETH-3D上的结果;都使用单目视频。
我们的网络完全是由合成的Tartan Air数据集的单目视频训练而来的。我们训练我们的网络250k步,批量大小为4,分辨率为384×512,7个帧剪辑,展开15次更新迭代。在4个RTX-3090 GPU上进行训练花费了1周时间。
TartanAir(单目和双目)该数据集是一个具有挑战性的综合基准测试,并被用作ECCV 2020 SLAM competition的一部分。我们使用official test split,并在表1中提供所有“Hard”序列的ATE。
表1. 在TartanAir单目基准上的结果
表1证明了我们的方法的鲁棒性(没有灾难性的故障)和准确性(非常低的漂移)。我们在TartanAir上重新训练DeepV2D作为基线baseline。在大多数序列上,我们的表现都优于现有的方法有一个数量级,其平均误差比TartanVO低8倍,比DeepV2D低20倍。在表2中,我们还使用TartanAir数据集与ECCV 2020 SLAM竞赛中排名前几的结果进行比较。 竞赛中排前两位的使用系统COLMAP构建的系统,并且速度要比实时运行慢40倍。另一方面,我们的方法在单目基准上的运行速度提高了16倍,在单目基准上的误差降低了62%,在双目基准上降低了60%。
表2. 在TartanAir测试集上的结果,与ECCV2020 SLAM竞赛上前3名的对比。分数是使用归一化相对位姿误差进行计算的,对于所有可能的长度的序列{5、10、15,...,40}米。
**EuRoC(单目和双目)**在剩下的实验中,我们感兴趣的是我们的网络泛化到新的相机和环境的能力。EuRoC数据集包括从微型飞行器(MAV)上的传感器捕获的视频,是广泛用于评估SLAM系统的基准。我们使用EuRoC数据集来评估单目和双目的性能,并表3中报告了结果。
表3. EuRoC数据集上的单目SLAM, ATE[m]表示视觉里程计方法。
在单目配置下,我们实现了平均2.2cm的ATE,在零失败的方法中减少了82%,在仅比较ORB-SLAM3成功的序列时,比ORB-SLAM3减少了43%。
我们与几种深度学习方法进行比较。我们将在TartanAir数据集上训练的DeepV2D和在NYUv2和ScanNet上训练的公开版本进行了比较。DeepFactors是在ScanNet上训练的。我们发现,与经典的SLAM系统相比,最近的深度学习方法在EuRoC数据集上表现不佳。这是由于糟糕的泛化能力和数据集偏差导致大量的漂移;我们的方法没有这些问题。D3VO通过将神经网络作为前端与DSO作为后端相结合,能够获得良好的鲁棒性和准确性,使用11个序列中的6个进行评估,并对其余的序列进行无监督训练,其中包含用于评估的相同场景。
TUM-RGBD数据集。 RGBD数据集由用手持相机拍摄的室内场景组成。由于卷帘快门伪影,运动模糊以及剧烈的旋转,这是一个非常困难的单目方法数据集。在表4中,我们对整个Freiburg1数据集进行了基准测试。
图4. 在RGB-D ETH3D-SLAM基准测试上的泛化结果。(左)我们方法,只在合成的TartanAir数据集上进行训练,在训练和测试划分上都排第一。(右)成功轨迹个数作为ATE的函数图。我们的方法成功地跟踪了30/32个RGBD图像数据。
经典的SLAM算法,如ORB-SLAM,往往在大多数序列上失败。虽然深度学习方法更鲁棒,但它们对大多数评估序列的精度较低。我们的方法既鲁棒又准确。它成功地跟踪了所有9个序列,同时ATE绝对轨迹误差比DeepFactor低83%,在所有视频上都成功,ATE比DeepV2D低90%。
ETH3D-SLAM (RGBD) 最后,我们在ETH3D-SLAM基准测试上评估了RGB-D的性能。在这个设置中,网络还提供了RGB-D相机的测量。我们把我们的网络在TartanAir上进行训练,并在优化目标中添加一个加法项,惩罚预测的逆深度和传感器观测的深度之间的距离。没有任何微调,我们的方法在训练和测试集上均排名第一。其中一些数据集是“暗”的,这意味着没有图像数据;在这些数据集上,我们不提交任何预测。在测试集上,我们成功地跟踪了30/32 RGB-D。
时间和内存效率(Timing and Memory)。我们的系统可以用2个3090 GPU实时运行。跟踪和局部BA在第一个GPU上运行,而全局BA和闭环检测在第二个GPU上运行。在EuRoC数据集上,我们以平均20帧每秒(相机帧率)降采样到320×512分辨率,跳过每一帧。表3中的结果是在这个配置下得到的。在TUM-RGBD数据集上,我们通过降采样到240×320并跳过其他每一帧。在TartanAir数据集上,由于相机运动更快,我们无法实时运行,平均8帧每秒。然而,这仍然是TartanAirSLAM挑战的16倍,其依赖于COLMAP。
SLAM前端可以在具有8 GB内存的GPU上运行。后端需要存储全套图像数据集的特征图,内存上更紧张。TUM-RGBD数据集上的所有结果都可以在单个1080 Ti显卡上产生。EuRoC、TartanAir和ETH-3D(视频可以达5000帧)数据集上的结果需要一个24GB内存的GPU。而内存和资源的需求目前是我们的系统最大的限制,我们相信这些可以通过剔除冗余计算和更有效的表示来大大减少。
5. 总结 Conclusion
我们介绍了DROID-SLAM,一种用于视觉SLAM的端到端神经结构。DROID-SLAM是准确的、鲁棒的和通用的,可用于单目、双目和RGB-D视频。在具有挑战性的基准测试上,它的表现大幅优于之前的工作。