作者丨Clark@知乎
来源丨https://zhuanlan.zhihu.com/p/479534098
编辑丨3D视觉工坊
@article{teed2021droid, title={Droid-slam: Deep visual slam for monocular, stereo, and rgb-d cameras}, author={Teed, Zachary and Deng, Jia}, journal={Advances in Neural Information Processing Systems}, volume={34}, year={2021} }
https://arxiv.org/pdf/2108.10869.pdf
https://github.com/princeton-vl/DROID-SLAM
基于深度学习的新介绍SLAM系统,DROID-SLAM,其包括。这个,并且。虽然在单目视频上训练,但它可以使用双目立体或RGB-D测试时视频性能更好。
1. 引言 Introduction
SLAM(1)构建环境地图,(2)在此环境中定位智能体。SFM一种特殊的运动恢复结构形式,专注于准确跟踪长期轨迹。这是机器人的关键能力,尤其是独立车辆。在本文的工作中,我们解决了视觉问题SLAM问题是单目、双目或传感器RGBD录制相机捕获的图像形式。
SLAM问题已经从许多不同的角度来处理。以概率和滤波器为基础,交替优化地图和相机位置。进一步,现代SLAM该系统采用了最小二乘优化。精度的一个重要因素是全局BA,联合优化相机位置和3在单独的优化问题上D地图。基于优化形式的优点是SLAM使用不同的传感器很容易修改系统。例如,ORBSLAM支持单目,双目,RGBD以及IMU现代传感器SLAM该系统可以支持不同的相机模型。尽管取得了重大进展,。深度学习已被提出作为许多无效案例的解决方案。以前的工作研究了神经3的使用D表示学习的特征取代了人工特征,并将学习的能量项与经典的后端优化相结合。尝试学习端到端的其他工作SLAM或者VO系统。虽然这些系统有时是鲁棒的,但它们在普通基准测试中benchmark准确性远低于经典SLAM系统。
本文提出DROID-SLAM,基于深度学习的新型学习SLAM系统。它具有最好的性能,在具有挑战性的基准测试中优于现有的经典或基于学习SLAM系统。特别是,DROID-SLAM具有以下优点:
:我们在多个数据集或相机模式上取得了比以前更大的进步。在TartanAir SLAM在比赛中,我们的单目跟踪错误减少了62%,双目跟踪错误减少了60%。我们在ETH-3D RGBD SLAM排名第一,排名第一AUC指标比第二名好35%,包括灾难性失效的误差和比例。在EuRoC的单目数据集上,在零失败的方法中,我们减少了82%的误差。考虑到11个序列中只有10个成功,它比ORB-SLAM3高出43%。我们比较使用双目相机的输入ORB-SLAM误差减少了71%。在TUM-RGBD在数据集中,我们在零失败的方法中减少了83%的误差。
:与以前的系统相比,我们的灾难性故障要少得多。ETH-3D在数据集中,我们成功地跟踪了32个RGB-D30个数据集中,第二名只成功跟踪19/32。TartanAir,EuRoC和TUM-RGBD在数据集中,我们没有失败。
:我们的系统只使用单目输入训练,可以直接使用双目或RGB-D在没有任何训练的情况下,输入以提高精度。我们在四个数据集和三个相机模式中的所有结果都是通过一个模型获得的,完全是synthetic TartanAir在数据集中,只有一次单目输入训练。
DROID-SLAM的“它具有很强的性能和泛化性,是结合经典方法和深度网络优势的端到端微架构。具体来说,它包括基于光流的循环迭代更新RAFT但引入了两个关键的创新点。

图1. DROID-SLAM单目,双目和RGB-D在视频上运行。它建立了一个密集的环境地图,并在地图上定位相机。
首先,用迭代更新光流RAFT不同的是,我们迭代更新相机的位置和深度。RAFT它可以在两帧上运行,我们的更新可以应用于任何数量的帧,实现所有相机位置和深度图的联合全球优化,这对于最小化长轨迹和闭环漂移至关重要。
其次,DROID-SLAM中相机位置和深度图的每次更新都是微妙的Dense BA该层计算出相机的位置和位置的高斯-牛顿更新,使其最大限度地提高其与当前光流估计的兼容性。这种DBA层采用几何约束,提高精度和鲁棒性,使单目系统能够处理双目或RGB-D在不再训练的情况下输入。
DROID-SLAM设计新颖。之前最接近的深度结构是和,这两种方法都专注于深度估计,并报告了有限的情况SLAM结果。DeepV2D 交替更新深度和相机位置,而不是BA。BA-Net有一个BA但它们的层本质上是不同的:它不是dense密集,因为它优化了线性组合深度基(一组预测深度图)的少量系数,我们直接优化了每个像素的深度,而不是障碍。BA-Net优化了光度重投影误差(在特征空间),优化了几何误差,利用最先进的流量估计flow estimation。
我们广泛评估了四种不同的数据集和三种不同的相机模式,在所有情况下都表现出最佳性能。我们还包括消融实验,阐明了重要的设计决策和超参数。
2. 相关工作 Related Work
现代SLAM该系统将定位和构图视为联合优化问题。
视觉VSLAM专注于单目、立体或RGB-D观察图像的形式。这些方法通常分为或。首先,图像处理是通过检测兴趣点来处理的以及附加的特征描述子。然后匹配图像之间的特征。间接方法通过最小化图像中三维点及其位置之间的重投影误差来优化相机位置和三维点云。
图像形成过程(image formation process)建模并定义光度误差上的目标函数。直接方法的一个优点是,它们可以建模更多的图像信息,如线和强度变化,这些信息不用于间接方法。然而,光度误差通常会导致更困难的优化问题,直接方法是等几何失真的鲁棒性差。这种方法需要更复杂的优化技术,比如,避免局部最优。
我们的方法不适用于上述任何类别。就像直接法一样,我们。相反,我们使用完整的图像,允许我们使用比通常只使用角度和边缘特征的间接方法更大、更广泛的信息。然而,与间接方法类似,我们也尽量减少重投影误差。这是一个更容易优化的问题,并避免了图像金字塔等更复杂的表示。从这个意义上说,我们的方法借鉴了两种方法的优点:间接方法更光滑的目标函数和直接方法更大的建模能力。
深度学习已被广泛应用SLAM问题。许多工作集中在特定子问题的培训系统上,如特征检测、特征匹配和离群值去除(outlier rejection)和定位。SuperGlue旨在匹配和验证特征,使二视图位置估计更鲁棒。我们的网络也是如此,它。
其他工作集中在端到端培训上SLAM系统上。这些方法并不完整SLAM该系统专注于从2帧到10帧以上的小规模重建。它们缺乏现代SLAM闭环检测和全局等系统的许多核心能力BA如我们实验所示,集束调整抑制了它们进行大规模重建的能力。SLAM实现了几种现有的SLAM算法作为,允许将重建中的误差反向传播回传感器观测。而这个方法是可微的,它没有可训练的参数,这意味着系统的性能受到它们所模拟的经典算法精度的限制。
,建立在早期的CodeSLAM之上。它可以,并能够进行短期和远距离闭环。与BA-Net类似,DeepFactors在推理过程中优化了学习到的深度基(deep basis)的参数。相比之下,我们并不依赖于学习的basis,而是优化像素级的深度。这允许我们的网络更好地推广到新的数据集,因为我们的跟训练数据集不会绑定。
3. 方法 Approach
我们将视频作为输入,有两个目标:估计相机的轨迹并建立环境的三维地图。我们首先描述单目相机的配置;在3.4小节描述如何将系统推广泛化到双目立体和RGB-D视频。
3.1 特征提取和相关性 Feature Extraction and Correlation
从添加到系统中的每个新图像中提取特征。这个阶段的关键组成部分借鉴了。
。每个输入的图像都通过一个特征提取网络进行处理。该网络由6个残差块和3个降采样层组成,产生1/8输入图像分辨率的稠密特征图。与RAFT一样,我们使用两个独立的网络:和。特征网络用于构建,而在更新操作符的每个应用期间,上下文特征都被注入到网络中。
3.2 更新算子 Update Operator
图2. 更新算子的图示。算子作用于frame-graph中的边上,预测通过(DBA)层映射到深度和位姿更新的流
更新 Update。相关性特征和流特征在注入GRU之前分别通过两个卷积层进行映射。此外,我们还将由上下文网络提取的上下文特征,通过逐元素相加注入到GRU中。
ConvGRU是一种具有较小感受野的局部操作运算。我们通过在图像的空间维度上平均隐藏状态来提取全局上下文,并使用这个特征向量作为附加输入到GRU中。全局上下文在SLAM中很重要,因为导致的不正确的一致性可能会降低系统的准确性。这对网络识别和拒绝错误的一致性非常重要。
3.3 训练 Training
我们的SLAM系统是在PyTorch中实现的,我们使用的扩展版本在所有的切线空间中执行反向传播。
。在单目设置下,网络只能恢复相机的轨迹到。一个解决方案是定义一个对相似变换不变的损失。然而,在训练过程中仍然存在gauge-freedom,这对线性系统的调节和梯度的稳定性影响较小。我们通过将前两个位姿固定到每个训练序列的位姿真值上来解决这个问题。固定第一个位姿消除了六自由度的。固定第二个位姿可以解决。
。每个训练示例都由一个7帧的视频序列组成。为了确保稳定的训练和良好的下游性能,我们希望对不太容易或不太困难的视频进行采样。
3.4 SLAM系统
在推理过程中,我们。该SLAM系统以一个视频流作为输入,并实时进行重建和定位。我们的系统包含两个异步运行的线程。接受新的帧,提取特征,选择关键帧,并执行局部BA。同时在关键帧的整个历史记录上执行全局BA。我们在这里提供了该系统的概述。
。DROID-SLAM的初始化很简单。我们只是采集帧数据,直到我们有一组12个。当我们积累帧时,我们只保留了光流大于16px时的历史帧(通过应用一次更新迭代进行估计)。一旦积累了12帧,我们通过在3个时间步内的关键帧之间创建一条边来初始化一个frame-graph,然后运行10次迭代更新算子。
。前端直接在输入的视频流上运行。它维护一个关键帧集合和一个frame graph,存储共视关键帧之间的边。关键帧的位姿和深度都是积极的被优化。首先从输入的帧中提取特征。然后将新帧添加到中,通过平均光流测量添加具有3个最近邻的边。这个位姿使用线性运动模型进行初始化。然后,我们应用更新算子的几次迭代来更新关键帧的位姿和深度。我们固定前两个位姿,以消除测量自由度(gauge freedom),但将所有深度作为自由变量。
在跟踪到新帧后,我们选择一个关键帧进行删除。我们。
然后,我们将更新算子应用于整个frame-graph中,通常由数千个帧和边组成。存储完整的相关性体积集合将很快超过视频内存。相反,我们使用了在RAFT中提出的内存效率实现。
在训练过程中,我们在PyTorch中利用实现了。在推理时,我们使用了一个自定义的CUDA内核,它利用了block-sparse结构,然后对简化的相机块进行稀疏Cholesky分解。
我们只对关键帧图像执行全局BA。为了恢复非关键帧的位姿,我们通过迭代估计每个关键帧和它相邻的非关键帧之间的流来进行纯运动BA。在测试过程中,我们评估了完整的相机轨迹,而不仅仅是关键帧。
。我们的系统可以很容易地修改为双目和RGBD视频。在RGB-D情况下,我们仍然将深度视为一个变量,因为,并且缺少观测结果,并且简单地添加一项到优化目标中(),它用来惩罚观测深度和预测深度之间的平方距离。对于双目的情况,我们使用上面描述的完全相同的系统,只有两倍的帧图像,并固定DBA层中左右帧之间的相对位姿。帧图中的允许我们利用双目立体信息。
:国内首个3D缺陷检测教程:理论、源码与实战
4. 实验 Experiments
我们在不同的数据集和传感器模态上进行了实验。我们与基于深度学习的和已建立的经典SLAM算法进行了比较,并特别强调了跨数据集的泛化。根据之前的工作,我们评估了相机轨迹的准确性,主要使用。虽然一些数据集有真值点云,但它们没有比较SLAM系统直接给出的三维重建的标准协议,因为SLAM系统可以选择要重建的三维点。评估稠密的三维重建是典型的在多视图立体几何领域内考虑的,超出了本工作的范围。
图3. DROID-SLAM可以推广到新的数据集。为此,我们展示了来自Tank & Temple、ScanNet、Sintel和ETH-3D上的结果;都使用单目视频。
我们的网络完全是由合成的Tartan Air数据集的单目视频训练而来的。我们训练我们的网络250k步,批量大小为4,分辨率为384×512,7个帧剪辑,展开15次更新迭代。在4个RTX-3090 GPU上进行训练花费了1周时间。
该数据集是一个具有挑战性的综合基准测试,并被用作ECCV 2020 SLAM competition的一部分。我们使用official test split,并在中提供所有“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数据集包括从微型飞行器(MAV)上的传感器捕获的视频,是广泛用于评估SLAM系统的基准。我们使用EuRoC数据集来评估单目和双目的性能,并表3中报告了结果。
表3. EuRoC数据集上的单目SLAM, ATE[m]表示视觉里程计方法。
在单目配置下,我们实现了平均2.2cm的ATE,在零失败的方法中减少了82%,在仅比较ORB-SLAM3成功的序列时,比ORB-SLAM3减少了43%。
我们与几种深度学习方法进行比较。我们将在TartanAir数据集上训练的DeepV2D和在NYUv2和ScanNet上训练的公开版本进行了比较。DeepFactors是在ScanNet上训练的。我们发现,。这是由于糟糕的泛化能力和数据集偏差导致大量的漂移;我们的方法没有这些问题。D3VO通过将神经网络作为前端与DSO作为后端相结合,能够获得良好的鲁棒性和准确性,使用11个序列中的6个进行评估,并对其余的序列进行无监督训练,其中包含用于评估的相同场景。
。RGBD数据集由用手持相机拍摄的室内场景组成。由于卷帘快门伪影,运动模糊以及剧烈的旋转,这是一个非常困难的单目方法数据集。在中,我们对整个Freiburg1数据集进行了基准测试。
图4. 在RGB-D ETH3D-SLAM基准测试上的泛化结果。(左)我们方法,只在合成的TartanAir数据集上进行训练,在训练和测试划分上都排第一。(右)成功轨迹个数作为ATE的函数图。我们的方法成功地跟踪了30/32个RGBD图像数据。
经典的SLAM算法,如ORB-SLAM,往往在大多数序列上失败。虽然深度学习方法更鲁棒,但它们对大多数评估序列的精度较低。我们的方法既鲁棒又准确。它成功地跟踪了所有9个序列,同时ATE绝对轨迹误差比DeepFactor低83%,在所有视频上都成功,ATE比DeepV2D低90%。
最后,我们在ETH3D-SLAM基准测试上评估了RGB-D的性能。在这个设置中,网络还提供了RGB-D相机的测量。我们把我们的网络在TartanAir上进行训练,并在优化目标中添加一个加法项,惩罚预测的逆深度和传感器观测的深度之间的距离。没有任何微调,我们的方法在训练和测试集上均排名第一。其中一些数据集是“暗”的,这意味着没有图像数据;在这些数据集上,我们不提交任何预测。在测试集上,我们成功地跟踪了30/32 RGB-D。
。我们的系统可以用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。而内存和资源的需求目前是我们的系统最大的限制,我们相信这些可以通过剔除冗余计算和更有效的表示来大大减少。
我们介绍了DROID-SLAM,。DROID-SLAM是准确的、鲁棒的和通用的,可用于单目、双目和RGB-D视频。在具有挑战性的基准测试上,它的表现大幅优于之前的工作。
本文仅做学术分享,如有侵权,请联系删文。
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进4.国内首个面向工业级实战的点云处理课程5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
扫码添加小助手微信,可
一定要备注:
▲长按加微信群或投稿
▲长按关注公众号
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题