
# DVI-SLAM：一种双视觉惯性SLAM网络

彭雄峰 $^{1}$、刘志华 $^{1}$、李伟明 $^{1}$、谭平 $^{2}$、赵顺勇 $^{3}$、王强 $^{1}$

摘要—近年来，基于深度学习的视觉同步定位与建图（SLAM）方法取得了显著进展。然而，如何充分利用视觉信息，并将其更好地与惯性测量单元（IMU）在视觉SLAM中相融合，仍具有重要的研究价值。本文提出了一种包含双视觉因子的新型深度SLAM网络。其基本思路是通过多因子数据关联模块，将光度因子和重投影因子整合到端到端可微结构中。实验表明，该网络能够动态学习并调整两种视觉因子的置信度图，且还可进一步扩展以纳入IMU因子。大量实验验证显示，所提出的方法在TartanAir、EuRoC和ETH3D-SLAM等多个公开数据集上均显著优于现有最先进方法。具体而言，当将这三种因子动态融合时，EuRoC数据集上单目和双目配置下的绝对轨迹误差分别降低了45.3%和36.2%。

## I. 引言

最先进的基于深度学习的SLAM方法可以根据相机位姿估计过程大致分为两类。第一类是直接回归类方法，例如DEMON [^1]、DeepTAM [^2]和DytanVO [^3]。这些方法通过深度网络来回归相机位姿，但往往存在精度有限且泛化能力差的问题。另一类是优化类方法，例如CodeSLAM [^4]、BA-Net [^5]、DeepFactors [^6]以及DROID-SLAM [^7]。这类方法通常包含束调整（BA）优化器，用于最小化来自不同数据约束方面的各类相关因子所产生的残差。CodeSLAM [^4]将图像编码为紧凑的表示形式，并通过最小化经典的光度残差和深度残差来推断相机位姿，该过程采用不可微的阻尼高斯-牛顿算法。BA-Net [^5]通过将可微优化器集成到深度神经网络中来实现端到端学习，并通过最小化特征空间中的光度残差（也称为特征度量残差）来推断位姿。不过，这些基于光度的方法通常需要良好的初始猜测值才能使优化器正常工作。DeepFactors [^6]提出在CodeSLAM [^4]的基础上结合光度因子、重投影因子和深度因子，但未考虑各因子的可靠性。随后，DROID-SLAM [^7]通过密集束调整（DBA）优化器最小化重投影残差，从而迭代地优化相机位姿和深度。然而，基于重投影的方法严重依赖正确的数据关联，噪声相关性可能导致估计的光流出现严重误差，进而影响相机位姿的准确性。上述方法仅使用了视觉因子。众所周知，加入惯性测量单元（IMU）能够提升视觉SLAM方法的鲁棒性，尤其是在快速运动场景下。一些基于直接回归的深度学习SLAM方法尝试整合IMU因子，例如VINet [^8]和DeepVIO [^9]。但如何将各种视觉因子和IMU因子有效融合到端到端的深度网络中，仍是研究界尚未解决的问题。

在本文中，我们提出了一种新颖的基于优化的深度SLAM方法，命名为双视觉惯性SLAM网络（DVI-SLAM）。DVI-SLAM通过动态融合多种因子，利用端到端可训练的可微结构同时推断相机位姿和密集深度信息。此处所说的双视觉因子指的是特征度量因子和重投影因子，它们提供了互补的线索以提取视觉信息。该网络还能自然扩展以有效纳入IMU因子或其他因子。DVI-SLAM的关键设计在于其动态多因子融合机制：该机制会学习置信度图，以便在优化过程的每次迭代中调整不同因子之间的相对强度。具体而言，在BA优化的初期阶段，重投影因子起主导作用，以帮助获得良好的初始化并避免陷入局部最小值；而在后期阶段，特征度量因子和重投影因子会共同引导联合优化趋向真实最小值。该网络还会根据估计的位姿误差动态调整IMU因子的置信度图，从而实现可靠的视觉-惯性融合。我们的双视觉与IMU约束以紧耦合的方式被融合并最小化。据我们所知，DVI-SLAM是首个允许将双视觉惯性SLAM与DBA优化紧密耦合的深度学习框架。

我们的主要贡献总结如下：

- 我们提出了一种DVI-SLAM网络，该网络能够利用学习得到的置信度图动态融合重投影因子、特征度量因子和IMU因子，从而提升在复杂场景下的相机位姿估计精度。

- 我们提出的端到端可学习框架具有灵活性，能够纳入各类因子，既支持单目或双目模式，也无论是否配备深度传感器或IMU传感器均可适用。

- 在TartanAir、EuRoC和ETH3D-SLAM等多个公开数据集上，我们的方法均超越了现有最先进的方法。

---

### 二、相关工作

现有的SLAM方法可根据优化过程中涉及的因子进行分类，具体介绍如下。

a) 基于重投影的SLAM方法：这类方法首先从图像中提取关键点和描述符，随后建立数据关联 [^10] [^11] [^12] [^13]，[^13] [^14] [^15] [^16] [^17]。通过最小化重投影误差，利用BA算法对估计出的相机位姿和3D地图进行优化。PTAM [^11] 是此类中首个实时优化的SLAM系统。此后，ORB-SLAM3 [^15] 结合了重投影因子，并在 [^18] [^19] [^20] 的基础上将其与IMU传感器融合。近期，DROID-SLAM [^7] 提出了一种基于深度密集特征的SLAM网络，用于迭代优化相机位姿和密集深度信息。在DROID-SLAM的基础上，DPVO [^21] 提出了一种采用稀疏补丁表示构建的深度视觉里程计系统；而PVO [^22] 则提出了一种全景视觉里程计框架，能够更全面地建模场景运动、几何以及全景分割信息。

b) 基于光度信息的SLAM方法：基于光度信息的SLAM方法 [^23] [^24] [^25] [^26] [^27] [^28] 通常利用原始像素强度，并定义包含光度误差的目标函数。与光度因子类似，特征度量因子使用的是神经网络提取的深度特征而非像素强度。CodeSLAM [^4] 将观测到的图像编码为紧凑且可优化的表示形式，用于基于关键帧的SLAM系统中以估计相机位姿和深度信息。BA-Net [^5] 利用联合学习的深度基来最小化特征度量残差，但该方法的泛化能力较差且收敛性不佳。基于光度信息的SLAM方法的一个优势在于它们能够充分利用丰富的图像信息，只要投影残差足够小，这些方法就能良好运行，而无需依赖正确的显式数据关联。

c) 与IMU相关的SLAM方法：IMU传感器广泛应用于ORB-SLAM3 $^{[15]}$、ICE-BA $^{[16]}$、VINS $^{[17]}$和OKVIS $^{[13]}$等传统SLAM系统中。在基于深度学习的SLAM方法中，也有若干与IMU相关的工作。VINet $^{[8]}$是首个将深度特征与IMU特征直接拼接并直接回归相机姿态的深度视觉惯性SLAM网络。DeepVIO $^{[9]}$通过设计好的全连接层融合视觉与惯性特征，却未考虑不同传感器的可靠性差异。与我们上述三类方法密切相关的是所提出的DVI-SLAM方法，它在一个端到端可微网络中动态融合了重投影因子、特征度量因子和IMU因子。

### III. 双视图重建

为清晰起见，本节介绍具备双视图重建功能的DVI-SLAM。完整系统将在第IV节中描述。此处所说的双视图重建是指从两个视角估计相机姿态、IMU运动及逆深度。

图1展示了用于双视图重建的DVI-SLAM网络。给定两帧图像输入$I_i$、$I_j$，以及两帧之间的IMU加速度计和陀螺仪测量数据$\{\alpha_k, \omega_k\}$，网络会输出更新后的相机姿态$T_{i,i}T_j$、IMU运动$M_{i,i}M_j$和密集逆深度$d_i$。其中，相机姿态$\boldsymbol{T} = (\boldsymbol{R}, \boldsymbol{p})$包含旋转$\boldsymbol{R}$和平移$\boldsymbol{p}$。IMU运动$\boldsymbol{M} = (\boldsymbol{v}, \boldsymbol{b}\boldsymbol{a}, \boldsymbol{b}\boldsymbol{g})$包括速度$\boldsymbol{v}$、加速度计偏差$\boldsymbol{b}\boldsymbol{a}$以及陀螺仪偏差$\boldsymbol{b}\boldsymbol{g}$。我们的DVI-SLAM网络基于DROID-SLAM [^7]构建，由两个模块和一个层组成：(a) 特征提取模块，(b) 多因子数据关联模块，以及(c) 多因子DBA层。在后续章节中，我们将分别介绍这些模块和层。

### A. 特征提取

在特征提取模块中，会提取两种类型的特征。一种是用于估计密集光流图并建立两帧间对应关系的相关特征$F^{c}$；另一种是用于计算特征度量残差的细节更丰富的深度外观特征$F^{a}$。

与DROID-SLAM [^7]不同，我们增加了采用U-Net结构的编解码分支[^29]来提取外观特征。编码器包含两个子模块，每个子模块包含两层卷积层，随后是下采样层和最大池化操作。解码器同样有两个子模块，通过依次上采样使特征图分辨率不断提升，直至与输入图像的分辨率匹配。

就该模块的输出而言，外观特征图的分辨率是相关特征图分辨率的八倍。借助U-Net结构的跳跃连接，深度外观特征图中保留了更多细节。

### B. 多因子数据关联

多因子数据关联模块会学习特征对应关系以及用于融合的置信度图，这些融合涉及重投影、特征度量以及IMU数据。图1(b)展示了单次迭代的详细过程。与DROID-SLAM [^7]类似，通过提取到的相关特征$C_{ij}$作为输入，构建金字塔形4D相关体积$F_i^c, F_j^c$。而投影像素坐标$x_{ij}$则是根据更新后的位姿$T_i, T_j$以及上一次迭代得到的逆深度$d_i$来计算得出的。随后，网络会从4D相关体积$C_{ij}$中利用$x_{ij}$查找邻域相关特征图，并将这些相关特征图输入到ConvGRU网络中。其中，$x_{ij}$表示利用位姿$x_i$和逆深度$I_i$，将$I_j$中的像素坐标$T_i, T_j$投影为$d_i$对应的投影像素坐标。具体来说，就是$x_{ij} = \Pi(T_i, T_j, d_i, x_i)$，此处$\Pi$代表投影操作。

由于深度神经网络具备学习复杂先验知识的能力，我们设计了多头GRU模块来学习不同因子的不确定性，以便后续进行动态残差融合。具体而言，该多头GRU模块包含四个独立的输出分支：IMU置信度分支、重投影置信度分支以及特征度量置信度分支。

---

![Image](images/3a0fbe598efea3e5af55955acd4f58dd74101d2cdd5eaf82fd8af3cd215b5e3d.jpg)

<div style="text-align: center;">Fig. 1: Overview of our DVI-SLAM structure (the two-views reconstruction only for better clarity). (a) Visual correlation feature and appearance feature are extracted by the input two frames  $I_{i}, I_{j}$. (b) The multi-factor data association module learns the feature correspondence and confidence maps, and IMU pre-integration results are calculated by the accelerometer and gyroscope measurements of IMU  $\{\alpha_{k}, \omega_{k}\}$ between the two frames. (c) Those confidence maps dynamically fuse reprojection, feature-metric, and IMU residuals for optimization via a differentiable LM for the pose T, IMU motion M, and inverse depth d. T is also calculated via the IMU propagation. Finally, T, M, and d are updated for the next iteration.</div>

此外还有光流修正分支。对于IMU置信度分支而言，它包含一个$1 \times 1$卷积层和一个平均池化层；而对于其他三个分支，则应用两个$3 \times 3$卷积层。另外，为了预测重投影分支和特征度量分支的置信度图，每个分支分别使用一个Sigmoid算子。

图2展示了我们学习到的重投影置信度图和特征度量置信度图。我们发现，在优化迭代初期，特征度量因子的置信度图较小，而重投影因子的置信度图较大。随着迭代的进行，特征度量因子的置信度图逐渐增大，到迭代结束时甚至会略大于重投影因子的置信度图。在重投影和特征度量置信度图中，高置信度区域往往纹理丰富。这是合理的，因为纹理丰富的区域更容易建立显式和隐式的对应关系。多头GRU模块同样能学习IMU置信度。其内在逻辑是：DBA层输出的位姿会通过IMU传播再次更新，在这一过程中，IMU信息被隐式地注入到网络中的多头GRU模块里。基于学习到的置信度，系统会使用马氏距离来衡量各因子的残差——平均置信度越高，该因子就越可靠。

### C. 多因子DBA层

借助多因子置信度，各残差会在DBA层中被迭代融合和更新。下一节将详细介绍各因子基于置信度的残差定义。

a) 基于置信度的重投影残差：与DROID-SLAM [^7]类似，根据对应关系

![Image](images/164a8ae086a5c13a67924e526676c78d9b27ec785461665b1aebb597346b5624.jpg)

<div style="text-align: center;">Fig. 2: The confidence map changes iteratively. High confidence in the re-projection confidence map focuses on corner pixels and extends to edge pixels gradually with iteration increasing. For the feature-metric confidence map, the confidence is zero at the beginning of the iteration and focuses on the well-textured regions after several iterations.</div>

利用像素坐标的$(x_{i}, x_{ij}^{*})$以及学习到的重投影置信度图$w_{ij}^{r}$，两视图下的重投影残差可按照公式1来定义。

 $$ \begin{array}{r l}{E^{r}({\bf T},{\bf d})=||\boldsymbol{x}_{i j}^{*}-\Pi({\bf T}_{i},{\bf T}_{j},\boldsymbol{d}_{i},\boldsymbol{x}_{i})||_{\sum_{i j}^{r}}^{2},}&{{}\sum_{i j}^{r}{=d i a g\boldsymbol{w}_{i j}^{r}}}\end{array} $$

其中$\|\cdot\|_{\sum_{ij}}$表示马氏距离。置信度越高，对应关系就越可靠。重投影项中每个对应关系的残差都会迭代更新。

b) 基于置信度的特征度量残差：根据外观特征$F_i^a$、$F_j^a$以及学习到的特征度量置信度$w_{ij}^f$，我们按照公式2计算双视图特征度量残差。

---

 $$ E^{f}(\boldsymbol{T},\boldsymbol{d})=||\boldsymbol{F}_{i}^{a}(\boldsymbol{x}_{i})-\boldsymbol{F}_{j}^{a}(\boldsymbol{\Pi}(\boldsymbol{T}_{i},\boldsymbol{T}_{j},\boldsymbol{d}_{i},\boldsymbol{x}_{i}))||_{\sum_{i j}^{2}}^{2},\ \sum_{i j}^{f}=diag\boldsymbol{w}_{i j}^{f}, $$

c) 基于置信度的惯性残差：遵循传统的VI-SLAM方法[^16]、[^17]，我们计算图像$I_i$与$I_j$之间的惯性残差。基于IMU预积分[^30]、公式4和公式5中的$\Delta$，以及预积分权重$w_{ij}^{pu}$可以被估算出来。偏差$\hat{b}_i = (\hat{b}a_i, \hat{b}g_i)$是预积分时刻的偏差估计值。IMU权重$w_{ij}^{imu}$由$w_{ij}^{imu} = w_{ij}^{pu} w_{ij}^{u}$表示，其中$w_{ij}^{u}$是学习到的IMU置信度。需要注意的是，IMU位姿与相机位姿之间存在外部差异。我们按照公式3计算双视图惯性残差。

 $$ E^{u}(\boldsymbol{T},\boldsymbol{M})=\left|\left|\begin{matrix}e_{ij}^{T}\\ e_{ij}^{M}\end{matrix}\right|\right|_{\sum_{ij}^{u}}^{2},\quad\sum_{ij}^{u}=diag\boldsymbol{w}_{ij}^{imu} $$

 $$ e_{ij}^{T}{=}\left[\begin{matrix}{L o g((\Delta\mathbf{R}_{i j}E x p(\Delta\mathbf{J}_{i j}^{r}(\mathbf{b}\mathbf{g}_{i}{-}\hat{\mathbf{b}}\mathbf{g}_{i})))^{T}\mathbf{R}_{i}^{T}\mathbf{R}_{j})}\\ {\mathbf{R}_{i}^{T}(\mathbf{p}_{j}{-}\mathbf{p}_{i}{-}\mathbf{v}_{i}\Delta t_{i j}-\frac{1}{2}\mathbf{g}t_{i j}^{2})-(\Delta\mathbf{p}_{i j}{+}\Delta\mathbf{J}_{i j}^{p}(\mathbf{b}_{i}{-}\hat{\mathbf{b}}_{i}))}\\ \end{matrix}\right] $$

 $$ e_{ij}^{M}=\begin{bmatrix}\boldsymbol{R}_{i}^{T}(\boldsymbol{v}_{j}-\boldsymbol{v}_{i}-\boldsymbol{g}t_{ij})-(\Delta\boldsymbol{v}_{ij}+\Delta\boldsymbol{J}_{ij}^{v}(\boldsymbol{b}_{i}-\hat{\boldsymbol{b}}_{i}))\\ \boldsymbol{b}\boldsymbol{a}_{j}-\boldsymbol{b}\boldsymbol{a}_{i}\\ \boldsymbol{b}\boldsymbol{g}_{j}-\boldsymbol{b}\boldsymbol{g}_{i}\end{bmatrix} $$

d) 多因子残差融合：在得到双视图的重投影残差、特征度量残差和IMU残差后，通过对各因子的残差求和，即可得到公式6中的总残差$E(T, M, d)$，该残差会在DBA层中最小化。经过多次迭代更新后，系统会输出最优的相机位姿T、逆深度d以及IMU运动参数M。

 $$ \boldsymbol{E}(\boldsymbol{T},\boldsymbol{M},\boldsymbol{d})=\boldsymbol{E}^{r}(\boldsymbol{T},\boldsymbol{d})+\boldsymbol{E}^{f}(\boldsymbol{T},\boldsymbol{d})+\boldsymbol{E}^{u}(\boldsymbol{T},\boldsymbol{M}) $$

 $$ \mathrm{IV}.\mathrm{DVI-SLAM}\mathrm{SYSTEM} $$

与DROID-SLAM[^7]类似，对于输入的视频流，会提取多个关键帧来构建帧图$G = (V, \varepsilon)$，该帧图反映了这些关键帧之间的共视关系。公式6被扩展为公式7，并通过可微分的Levenberg-Marquardt（LM）算法优化整个帧图的总残差。

 $$ E(\boldsymbol{T},\boldsymbol{M},\boldsymbol{d})=\sum_{(i,j)\in\boldsymbol{\epsilon}}E^{r}(\boldsymbol{T},\boldsymbol{d})+\sum_{(i,j)\in\boldsymbol{\epsilon}}E^{f}(\boldsymbol{T},\boldsymbol{d})+\sum_{(i,j=i+1)\in\boldsymbol{\epsilon}}E^{u}(\boldsymbol{T},\boldsymbol{M}) $$

在接下来的章节中，我们将详细介绍DVI-SLAM系统的初始化过程。

a) 初始化：与DROID-SLAM方法[^7]一致，当仅有视觉流输入时，我们会初始化DVI-SLAM。当同时有视觉流和惯性流输入时，我们遵循VINS-Mono方法[^17]来进行DVI-SLAM初始化。具体来说，初始化分为三个步骤：首先，收集多个关键帧以构建帧图，并通过DBA层优化相机位姿和逆深度状态；接着，根据估算出的相机位姿和IMU预积分结果来初始化重力方向和IMU运动参数。对于单目视觉和惯性流，绝对尺度也会被初始化；最后，通过DBA层最小化重投影残差、特征度量残差和惯性残差，从而精细化相机位姿、运动参数和逆深度。

b) VI-SLAM流程：系统初始化完成后，对于新帧及其对应的IMU数据，我们首先估算新帧与其最新关键帧之间的平均光流。如果新帧被视为关键帧，它会被加入滑动窗口以及帧图中，并与时间相邻的关键帧建立边连接。新帧的位姿和IMU运动参数会在滑动窗口中通过局部BA进行优化。我们采用与DROID-SLAM[^7]相同的策略来保持恒定的滑动窗口大小，并获取非关键帧的位姿。经局部BA优化后的相机位姿被称为视觉惯性里程计（VIO）输出。基于序列中的VIO结果，我们会构建新的帧图，其中关键帧在空间和时间上相互连接。经过额外的全局BA处理后，所得结果被称为VI-SLAM输出，它反映了重建的全局地图的精度。

### V. 实验

为了验证我们的DVI-SLAM系统，我们在合成数据集和真实世界数据集上进行了大量实验，这些数据集采用了不同的传感器组合。具体来说，我们使用了公开的TartanAir数据集[^31]、TartanAir SLAM挑战赛数据集[^31]、EuRoC数据集[^32]以及ETH3D-SLAM基准测试集[^33]。我们采用绝对轨迹误差（ATE）[^34]指标来评估位姿误差。由于单目输入没有绝对尺度，我们在评估轨迹误差时会对尺度（Sim3）进行额外优化，并将该指标命名为ATE-scale。为了更直观地展示我们方法的有效性和鲁棒性，我们将DVI-SLAM与传统及基于学习的视觉/视觉惯性里程计（VO/VIO）以及视觉/视觉惯性SLAM（V/VI-SLAM）系统进行了比较。由于篇幅有限，更多实验结果详见补充材料。

### A. 训练与实现

a) 训练：我们通过位姿损失$L_{pose}$、光流损失$L_{flow}$、重投影损失$L_{repro}$以及特征度量损失$L_{metric}$的加权和来训练网络。遵循DROID-SLAM[^7]的做法，位姿损失$L_{pose}$表示真实位姿（GT）与预测位姿之间的距离；光流损失$L_{flow}$表示预测光流与由真实位姿和深度转换得到的真实光流之间的距离。重投影损失$L_{repro}$和特征度量损失$L_{metric}$则分别对应重投影误差和特征度量误差的大小。总训练损失L如公式8所示，超参数w1、w2、w3、w4分别设为10、0.05、0.01、0.01：

 $$ L=w1*L_{pose}+w2*L_{flow}+w3*L_{repro}+w4*L_{metric} $$

b) 实现：我们在四块NVIDIA RTX 3090 GPU上分三个阶段训练DVI-SLAM网络。在前两个阶段，网络在TartanAir数据集$384 \times 512$中分辨率为[^31]的单目视频流上进行训练。每个训练样本包含一段7帧的视频序列。我们将每个训练序列的前两个位姿固定为真实位姿，以消除用于学习视觉相关参数的6自由度及尺度自由度。

---

<div style="text-align: center;">TABLE I: The trajectory error comparison of our method with SOTA methods on TartanAir monocular SLAM challenge.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td colspan="2">Mono(ATE-scale(m)) \downarrow</td><td style='text-align: center; word-wrap: break-word;'>MH000</td><td style='text-align: center; word-wrap: break-word;'>MH001</td><td style='text-align: center; word-wrap: break-word;'>MH002</td><td style='text-align: center; word-wrap: break-word;'>MH003</td><td style='text-align: center; word-wrap: break-word;'>MH004</td><td style='text-align: center; word-wrap: break-word;'>MH005</td><td style='text-align: center; word-wrap: break-word;'>MH006</td><td style='text-align: center; word-wrap: break-word;'>MH007</td><td style='text-align: center; word-wrap: break-word;'>Avg</td></tr><tr><td rowspan="4">VO</td><td style='text-align: center; word-wrap: break-word;'>DeepV2D [^35]</td><td style='text-align: center; word-wrap: break-word;'>6.15</td><td style='text-align: center; word-wrap: break-word;'>2.12</td><td style='text-align: center; word-wrap: break-word;'>4.54</td><td style='text-align: center; word-wrap: break-word;'>3.89</td><td style='text-align: center; word-wrap: break-word;'>2.71</td><td style='text-align: center; word-wrap: break-word;'>11.55</td><td style='text-align: center; word-wrap: break-word;'>5.53</td><td style='text-align: center; word-wrap: break-word;'>3.76</td><td style='text-align: center; word-wrap: break-word;'>5.03</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>TartanVO [^36]</td><td style='text-align: center; word-wrap: break-word;'>4.88</td><td style='text-align: center; word-wrap: break-word;'>0.26</td><td style='text-align: center; word-wrap: break-word;'>2.00</td><td style='text-align: center; word-wrap: break-word;'>0.94</td><td style='text-align: center; word-wrap: break-word;'>1.07</td><td style='text-align: center; word-wrap: break-word;'>3.19</td><td style='text-align: center; word-wrap: break-word;'>1.00</td><td style='text-align: center; word-wrap: break-word;'>2.04</td><td style='text-align: center; word-wrap: break-word;'>1.92</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DROID-SLAM $^{{*}}$ [^7]</td><td style='text-align: center; word-wrap: break-word;'>0.50</td><td style='text-align: center; word-wrap: break-word;'>0.08</td><td style='text-align: center; word-wrap: break-word;'>0.10</td><td style='text-align: center; word-wrap: break-word;'>0.06</td><td style='text-align: center; word-wrap: break-word;'>1.33</td><td style='text-align: center; word-wrap: break-word;'>0.53</td><td style='text-align: center; word-wrap: break-word;'>0.13</td><td style='text-align: center; word-wrap: break-word;'>2.18</td><td style='text-align: center; word-wrap: break-word;'>0.61</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DVI-SLAM(Ours)</td><td style='text-align: center; word-wrap: break-word;'>0.19</td><td style='text-align: center; word-wrap: break-word;'>0.04</td><td style='text-align: center; word-wrap: break-word;'>0.04</td><td style='text-align: center; word-wrap: break-word;'>0.03</td><td style='text-align: center; word-wrap: break-word;'>0.93</td><td style='text-align: center; word-wrap: break-word;'>0.11</td><td style='text-align: center; word-wrap: break-word;'>0.08</td><td style='text-align: center; word-wrap: break-word;'>1.19</td><td style='text-align: center; word-wrap: break-word;'>0.33</td></tr><tr><td rowspan="4">SLAM</td><td style='text-align: center; word-wrap: break-word;'>ORB-SLAM [^18]</td><td style='text-align: center; word-wrap: break-word;'>1.30</td><td style='text-align: center; word-wrap: break-word;'>0.04</td><td style='text-align: center; word-wrap: break-word;'>2.37</td><td style='text-align: center; word-wrap: break-word;'>2.45</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>21.47</td><td style='text-align: center; word-wrap: break-word;'>2.73</td><td style='text-align: center; word-wrap: break-word;'>-</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DROID-SLAM [^7]</td><td style='text-align: center; word-wrap: break-word;'>0.08</td><td style='text-align: center; word-wrap: break-word;'>0.05</td><td style='text-align: center; word-wrap: break-word;'>0.04</td><td style='text-align: center; word-wrap: break-word;'>0.02</td><td style='text-align: center; word-wrap: break-word;'>0.01</td><td style='text-align: center; word-wrap: break-word;'>1.31</td><td style='text-align: center; word-wrap: break-word;'>0.30</td><td style='text-align: center; word-wrap: break-word;'>0.07</td><td style='text-align: center; word-wrap: break-word;'>0.24</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DROID-SLAM $^{{*}}$ [^7]</td><td style='text-align: center; word-wrap: break-word;'>0.58</td><td style='text-align: center; word-wrap: break-word;'>0.05</td><td style='text-align: center; word-wrap: break-word;'>0.03</td><td style='text-align: center; word-wrap: break-word;'>0.03</td><td style='text-align: center; word-wrap: break-word;'>1.30</td><td style='text-align: center; word-wrap: break-word;'>0.52</td><td style='text-align: center; word-wrap: break-word;'>0.13</td><td style='text-align: center; word-wrap: break-word;'>0.14</td><td style='text-align: center; word-wrap: break-word;'>0.35</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DVI-SLAM(Ours)</td><td style='text-align: center; word-wrap: break-word;'>0.08</td><td style='text-align: center; word-wrap: break-word;'>0.03</td><td style='text-align: center; word-wrap: break-word;'>0.02</td><td style='text-align: center; word-wrap: break-word;'>0.01</td><td style='text-align: center; word-wrap: break-word;'>0.63</td><td style='text-align: center; word-wrap: break-word;'>0.12</td><td style='text-align: center; word-wrap: break-word;'>0.06</td><td style='text-align: center; word-wrap: break-word;'>0.09</td><td style='text-align: center; word-wrap: break-word;'>0.13</td></tr></table>

<div style="text-align: center;">TABLE II: The trajectory error comparison of our method with the SOTA VO and VIO methods on EuRoC dataset.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="8">Mono ATE-scale(m) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>VO/VIO</td><td style='text-align: center; word-wrap: break-word;'>MHO1</td><td style='text-align: center; word-wrap: break-word;'>MHO2</td><td style='text-align: center; word-wrap: break-word;'>MHO3</td><td style='text-align: center; word-wrap: break-word;'>MHO4</td><td style='text-align: center; word-wrap: break-word;'>MHO5</td><td style='text-align: center; word-wrap: break-word;'>V101</td><td style='text-align: center; word-wrap: break-word;'>V102</td><td style='text-align: center; word-wrap: break-word;'>V103</td><td style='text-align: center; word-wrap: break-word;'>V201</td><td style='text-align: center; word-wrap: break-word;'>V202</td><td style='text-align: center; word-wrap: break-word;'>V203</td><td style='text-align: center; word-wrap: break-word;'>Avg</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DSO [^26]</td><td style='text-align: center; word-wrap: break-word;'>0.046</td><td style='text-align: center; word-wrap: break-word;'>0.046</td><td style='text-align: center; word-wrap: break-word;'>0.172</td><td style='text-align: center; word-wrap: break-word;'>3.810</td><td style='text-align: center; word-wrap: break-word;'>0.110</td><td style='text-align: center; word-wrap: break-word;'>0.089</td><td style='text-align: center; word-wrap: break-word;'>0.107</td><td style='text-align: center; word-wrap: break-word;'>0.903</td><td style='text-align: center; word-wrap: break-word;'>0.044</td><td style='text-align: center; word-wrap: break-word;'>0.132</td><td style='text-align: center; word-wrap: break-word;'>1.152</td><td style='text-align: center; word-wrap: break-word;'>0.601</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>SVO [^37]</td><td style='text-align: center; word-wrap: break-word;'>0.100</td><td style='text-align: center; word-wrap: break-word;'>0.120</td><td style='text-align: center; word-wrap: break-word;'>0.410</td><td style='text-align: center; word-wrap: break-word;'>0.430</td><td style='text-align: center; word-wrap: break-word;'>0.300</td><td style='text-align: center; word-wrap: break-word;'>0.070</td><td style='text-align: center; word-wrap: break-word;'>0.210</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>0.110</td><td style='text-align: center; word-wrap: break-word;'>0.110</td><td style='text-align: center; word-wrap: break-word;'>1.080</td><td style='text-align: center; word-wrap: break-word;'>-</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DeepV2D [^35]</td><td style='text-align: center; word-wrap: break-word;'>0.739</td><td style='text-align: center; word-wrap: break-word;'>1.144</td><td style='text-align: center; word-wrap: break-word;'>0.752</td><td style='text-align: center; word-wrap: break-word;'>1.492</td><td style='text-align: center; word-wrap: break-word;'>1.567</td><td style='text-align: center; word-wrap: break-word;'>0.981</td><td style='text-align: center; word-wrap: break-word;'>0.801</td><td style='text-align: center; word-wrap: break-word;'>1.570</td><td style='text-align: center; word-wrap: break-word;'>0.290</td><td style='text-align: center; word-wrap: break-word;'>2.202</td><td style='text-align: center; word-wrap: break-word;'>2.743</td><td style='text-align: center; word-wrap: break-word;'>1.298</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>TartanVO [^36]</td><td style='text-align: center; word-wrap: break-word;'>0.639</td><td style='text-align: center; word-wrap: break-word;'>0.325</td><td style='text-align: center; word-wrap: break-word;'>0.550</td><td style='text-align: center; word-wrap: break-word;'>1.153</td><td style='text-align: center; word-wrap: break-word;'>1.021</td><td style='text-align: center; word-wrap: break-word;'>0.447</td><td style='text-align: center; word-wrap: break-word;'>0.389</td><td style='text-align: center; word-wrap: break-word;'>0.622</td><td style='text-align: center; word-wrap: break-word;'>0.433</td><td style='text-align: center; word-wrap: break-word;'>0.749</td><td style='text-align: center; word-wrap: break-word;'>1.152</td><td style='text-align: center; word-wrap: break-word;'>0.680</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DROID-SLAM [^7]</td><td style='text-align: center; word-wrap: break-word;'>0.163</td><td style='text-align: center; word-wrap: break-word;'>0.121</td><td style='text-align: center; word-wrap: break-word;'>0.242</td><td style='text-align: center; word-wrap: break-word;'>0.399</td><td style='text-align: center; word-wrap: break-word;'>0.270</td><td style='text-align: center; word-wrap: break-word;'>0.103</td><td style='text-align: center; word-wrap: break-word;'>0.165</td><td style='text-align: center; word-wrap: break-word;'>0.158</td><td style='text-align: center; word-wrap: break-word;'>0.102</td><td style='text-align: center; word-wrap: break-word;'>0.115</td><td style='text-align: center; word-wrap: break-word;'>0.204</td><td style='text-align: center; word-wrap: break-word;'>0.186</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DROID-SLAM $^{{*}}$ [^7]</td><td style='text-align: center; word-wrap: break-word;'>0.063</td><td style='text-align: center; word-wrap: break-word;'>0.156</td><td style='text-align: center; word-wrap: break-word;'>0.207</td><td style='text-align: center; word-wrap: break-word;'>0.264</td><td style='text-align: center; word-wrap: break-word;'>0.495</td><td style='text-align: center; word-wrap: break-word;'>0.092</td><td style='text-align: center; word-wrap: break-word;'>0.204</td><td style='text-align: center; word-wrap: break-word;'>0.087</td><td style='text-align: center; word-wrap: break-word;'>0.116</td><td style='text-align: center; word-wrap: break-word;'>0.080</td><td style='text-align: center; word-wrap: break-word;'>0.207</td><td style='text-align: center; word-wrap: break-word;'>0.179</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DVI-SLAM(Ours)</td><td style='text-align: center; word-wrap: break-word;'>0.120</td><td style='text-align: center; word-wrap: break-word;'>0.063</td><td style='text-align: center; word-wrap: break-word;'>0.076</td><td style='text-align: center; word-wrap: break-word;'>0.161</td><td style='text-align: center; word-wrap: break-word;'>0.354</td><td style='text-align: center; word-wrap: break-word;'>0.060</td><td style='text-align: center; word-wrap: break-word;'>0.207</td><td style='text-align: center; word-wrap: break-word;'>0.113</td><td style='text-align: center; word-wrap: break-word;'>0.087</td><td style='text-align: center; word-wrap: break-word;'>0.061</td><td style='text-align: center; word-wrap: break-word;'>0.268</td><td style='text-align: center; word-wrap: break-word;'>0.143</td></tr><tr><td rowspan="4">Mono+IMU ATE(m) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>MSCFF [^12]</td><td style='text-align: center; word-wrap: break-word;'>0.420</td><td style='text-align: center; word-wrap: break-word;'>0.450</td><td style='text-align: center; word-wrap: break-word;'>0.230</td><td style='text-align: center; word-wrap: break-word;'>0.370</td><td style='text-align: center; word-wrap: break-word;'>0.480</td><td style='text-align: center; word-wrap: break-word;'>0.340</td><td style='text-align: center; word-wrap: break-word;'>0.200</td><td style='text-align: center; word-wrap: break-word;'>0.670</td><td style='text-align: center; word-wrap: break-word;'>0.100</td><td style='text-align: center; word-wrap: break-word;'>0.160</td><td style='text-align: center; word-wrap: break-word;'>1.130</td><td style='text-align: center; word-wrap: break-word;'>0.414</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OKVIS [^13]</td><td style='text-align: center; word-wrap: break-word;'>0.160</td><td style='text-align: center; word-wrap: break-word;'>0.220</td><td style='text-align: center; word-wrap: break-word;'>0.240</td><td style='text-align: center; word-wrap: break-word;'>0.340</td><td style='text-align: center; word-wrap: break-word;'>0.470</td><td style='text-align: center; word-wrap: break-word;'>0.090</td><td style='text-align: center; word-wrap: break-word;'>0.200</td><td style='text-align: center; word-wrap: break-word;'>0.240</td><td style='text-align: center; word-wrap: break-word;'>0.130</td><td style='text-align: center; word-wrap: break-word;'>0.160</td><td style='text-align: center; word-wrap: break-word;'>0.290</td><td style='text-align: center; word-wrap: break-word;'>0.231</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VINS-Mono [^17]</td><td style='text-align: center; word-wrap: break-word;'>0.270</td><td style='text-align: center; word-wrap: break-word;'>0.120</td><td style='text-align: center; word-wrap: break-word;'>0.130</td><td style='text-align: center; word-wrap: break-word;'>0.230</td><td style='text-align: center; word-wrap: break-word;'>0.350</td><td style='text-align: center; word-wrap: break-word;'>0.070</td><td style='text-align: center; word-wrap: break-word;'>0.100</td><td style='text-align: center; word-wrap: break-word;'>0.130</td><td style='text-align: center; word-wrap: break-word;'>0.080</td><td style='text-align: center; word-wrap: break-word;'>0.080</td><td style='text-align: center; word-wrap: break-word;'>0.210</td><td style='text-align: center; word-wrap: break-word;'>0.161</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DVI-SLAM(Ours)</td><td style='text-align: center; word-wrap: break-word;'>0.063</td><td style='text-align: center; word-wrap: break-word;'>0.083</td><td style='text-align: center; word-wrap: break-word;'>0.101</td><td style='text-align: center; word-wrap: break-word;'>0.187</td><td style='text-align: center; word-wrap: break-word;'>0.163</td><td style='text-align: center; word-wrap: break-word;'>0.074</td><td style='text-align: center; word-wrap: break-word;'>0.114</td><td style='text-align: center; word-wrap: break-word;'>0.083</td><td style='text-align: center; word-wrap: break-word;'>0.091</td><td style='text-align: center; word-wrap: break-word;'>0.045</td><td style='text-align: center; word-wrap: break-word;'>0.072</td><td style='text-align: center; word-wrap: break-word;'>0.098</td></tr><tr><td rowspan="4">Stereo ATE(m) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>SVO [^37]</td><td style='text-align: center; word-wrap: break-word;'>0.040</td><td style='text-align: center; word-wrap: break-word;'>0.070</td><td style='text-align: center; word-wrap: break-word;'>0.270</td><td style='text-align: center; word-wrap: break-word;'>0.170</td><td style='text-align: center; word-wrap: break-word;'>0.120</td><td style='text-align: center; word-wrap: break-word;'>0.040</td><td style='text-align: center; word-wrap: break-word;'>0.040</td><td style='text-align: center; word-wrap: break-word;'>0.070</td><td style='text-align: center; word-wrap: break-word;'>0.050</td><td style='text-align: center; word-wrap: break-word;'>0.090</td><td style='text-align: center; word-wrap: break-word;'>0.790</td><td style='text-align: center; word-wrap: break-word;'>0.159</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VINS-Fusion [^38]</td><td style='text-align: center; word-wrap: break-word;'>0.540</td><td style='text-align: center; word-wrap: break-word;'>0.460</td><td style='text-align: center; word-wrap: break-word;'>0.330</td><td style='text-align: center; word-wrap: break-word;'>0.780</td><td style='text-align: center; word-wrap: break-word;'>0.500</td><td style='text-align: center; word-wrap: break-word;'>0.550</td><td style='text-align: center; word-wrap: break-word;'>0.230</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>0.230</td><td style='text-align: center; word-wrap: break-word;'>0.200</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DROID-SLAM $^{{*}}$ [^7]</td><td style='text-align: center; word-wrap: break-word;'>0.065</td><td style='text-align: center; word-wrap: break-word;'>0.042</td><td style='text-align: center; word-wrap: break-word;'>0.098</td><td style='text-align: center; word-wrap: break-word;'>0.191</td><td style='text-align: center; word-wrap: break-word;'>0.133</td><td style='text-align: center; word-wrap: break-word;'>0.063</td><td style='text-align: center; word-wrap: break-word;'>0.045</td><td style='text-align: center; word-wrap: break-word;'>0.043</td><td style='text-align: center; word-wrap: break-word;'>0.040</td><td style='text-align: center; word-wrap: break-word;'>0.054</td><td style='text-align: center; word-wrap: break-word;'>0.101</td><td style='text-align: center; word-wrap: break-word;'>0.080</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DVI-SLAM(Ours)</td><td style='text-align: center; word-wrap: break-word;'>0.043</td><td style='text-align: center; word-wrap: break-word;'>0.041</td><td style='text-align: center; word-wrap: break-word;'>0.064</td><td style='text-align: center; word-wrap: break-word;'>0.148</td><td style='text-align: center; word-wrap: break-word;'>0.114</td><td style='text-align: center; word-wrap: break-word;'>0.063</td><td style='text-align: center; word-wrap: break-word;'>0.040</td><td style='text-align: center; word-wrap: break-word;'>0.031</td><td style='text-align: center; word-wrap: break-word;'>0.049</td><td style='text-align: center; word-wrap: break-word;'>0.050</td><td style='text-align: center; word-wrap: break-word;'>0.080</td><td style='text-align: center; word-wrap: break-word;'>0.066</td></tr><tr><td rowspan="4">Stereo+IMU ATE(m) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>OKVIS [^13]</td><td style='text-align: center; word-wrap: break-word;'>0.188</td><td style='text-align: center; word-wrap: break-word;'>0.123</td><td style='text-align: center; word-wrap: break-word;'>0.192</td><td style='text-align: center; word-wrap: break-word;'>0.185</td><td style='text-align: center; word-wrap: break-word;'>0.292</td><td style='text-align: center; word-wrap: break-word;'>0.045</td><td style='text-align: center; word-wrap: break-word;'>0.088</td><td style='text-align: center; word-wrap: break-word;'>0.123</td><td style='text-align: center; word-wrap: break-word;'>0.056</td><td style='text-align: center; word-wrap: break-word;'>0.114</td><td style='text-align: center; word-wrap: break-word;'>0.199</td><td style='text-align: center; word-wrap: break-word;'>0.146</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VINS-Fusion [^38]</td><td style='text-align: center; word-wrap: break-word;'>0.159</td><td style='text-align: center; word-wrap: break-word;'>0.156</td><td style='text-align: center; word-wrap: break-word;'>0.126</td><td style='text-align: center; word-wrap: break-word;'>0.279</td><td style='text-align: center; word-wrap: break-word;'>0.290</td><td style='text-align: center; word-wrap: break-word;'>0.078</td><td style='text-align: center; word-wrap: break-word;'>0.068</td><td style='text-align: center; word-wrap: break-word;'>0.112</td><td style='text-align: center; word-wrap: break-word;'>0.059</td><td style='text-align: center; word-wrap: break-word;'>0.091</td><td style='text-align: center; word-wrap: break-word;'>0.096</td><td style='text-align: center; word-wrap: break-word;'>0.138</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OKVIS2 [^39]</td><td style='text-align: center; word-wrap: break-word;'>0.049</td><td style='text-align: center; word-wrap: break-word;'>0.040</td><td style='text-align: center; word-wrap: break-word;'>0.084</td><td style='text-align: center; word-wrap: break-word;'>0.115</td><td style='text-align: center; word-wrap: break-word;'>0.156</td><td style='text-align: center; word-wrap: break-word;'>0.047</td><td style='text-align: center; word-wrap: break-word;'>0.075</td><td style='text-align: center; word-wrap: break-word;'>0.037</td><td style='text-align: center; word-wrap: break-word;'>0.042</td><td style='text-align: center; word-wrap: break-word;'>0.042</td><td style='text-align: center; word-wrap: break-word;'>0.047</td><td style='text-align: center; word-wrap: break-word;'>0.076</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DVI-SLAM(Ours)</td><td style='text-align: center; word-wrap: break-word;'>0.042</td><td style='text-align: center; word-wrap: break-word;'>0.046</td><td style='text-align: center; word-wrap: break-word;'>0.081</td><td style='text-align: center; word-wrap: break-word;'>0.072</td><td style='text-align: center; word-wrap: break-word;'>0.069</td><td style='text-align: center; word-wrap: break-word;'>0.059</td><td style='text-align: center; word-wrap: break-word;'>0.034</td><td style='text-align: center; word-wrap: break-word;'>0.028</td><td style='text-align: center; word-wrap: break-word;'>0.040</td><td style='text-align: center; word-wrap: break-word;'>0.039</td><td style='text-align: center; word-wrap: break-word;'>0.055</td><td style='text-align: center; word-wrap: break-word;'>0.051</td></tr></table>

视频序列。我们将每个训练序列的前两个姿态固定为真实姿态，以消除用于学习视觉相关参数的6自由度及尺度自由度。

在第一阶段，与DROID-SLAM[^7]类似，网络学习相关特征模块、ConvGRU模块、重投影置信度分支以及光流修正分支，训练步数达到25万步。网络以真实位姿、真实光流以及重投影一致性作为监督信号。

在第二阶段，我们首先冻结上一阶段学到的参数，然后训练外观特征模块和特征度量置信度分支，训练步数为5万步。前1万步网络以真实位姿、真实光流以及重投影一致性作为监督信号；随后的4万步则同时以特征度量一致性作为监督信号。

在第三阶段，网络学习IMU置信度分支。我们在ETH3D-SLAM数据集$384 \times 512$中分辨率为[^33]的单目视频流和IMU数据流上对其进行训练。我们输入第一帧的真实位姿和运动信息，不固定任何帧。由于ETH3D-SLAM数据集仅有真实位姿标注，无法计算平均光流，因此我们通过采样路径动态生成视频，帧间隔数量在5到10之间。在这一阶段，我们首先冻结前两个阶段学到的参数，然后训练IMU置信度分支，训练步数为1万步，监督信号包括真实位姿、重投影一致性以及特征度量一致性。

对于上述所有三阶段训练过程，批量大小、帧剪辑以及数据关联更新迭代次数分别被设置为4、7和15。

### B. 与最先进方法的比较

在本节中，我们将所提出的DVI-SLAM方法的视觉里程计/视觉惯性里程计以及视觉/视觉惯性SLAM输出结果与最先进方法进行比较。为了公平比较，我们从头开始训练DROID-SLAM [^7]。我们训练好的DROID-SLAM模型精度与作者宣称的几乎一致，因此被用作基线（DROID-SLAM $^{*}$）。

a) 合成数据上的结果：表I展示了我们的DVI-SLAM在TartanAir单目SLAM挑战赛上与最先进方法的轨迹误差对比情况。我们比较了所有困难序列的轨迹误差。从表中可以看出，除了MH004序列外，我们方法的结果明显优于最先进方法。经检查该序列后发现，其中少数以白墙为主的帧导致了较大的位姿估计误差。

b) 真实世界数据上的结果：除了合成数据集外，我们还在真实世界的视觉惯性数据集上将DVI-SLAM与最先进方法进行比较。表II对比了我们的方法在EuRoC数据集上与最先进的视觉里程计及视觉惯性里程计方法的轨迹误差。如表所示，大多数序列中我们的视觉里程计结果均优于DROID-SLAM的结果。与其他最先进的传统或基于学习的视觉里程计及视觉惯性里程计方法相比，我们的方法也取得了最低的平均绝对轨迹误差。

表III展示了在ETH3D-SLAM基准测试中采用RGB-D输入时的对比结果。无需对该数据集进行任何微调，我们的DVI-SLAM就在ETH3D-SLAM基准测试中取得了第一名。

---

<div style="text-align: center;">TABLE III: Comparison on ETH3D-SLAM benchmark.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Method</td><td rowspan="2">Input</td><td colspan="2">Max error=2cm</td><td colspan="2">Max error=8cm</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>AUC(train) $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>AUC(test) $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>AUC(train) $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>AUC(test) $\uparrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>BundleFusion [^40]</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>8.29</td><td style='text-align: center; word-wrap: break-word;'>2.59</td><td style='text-align: center; word-wrap: break-word;'>84.10</td><td style='text-align: center; word-wrap: break-word;'>33.84</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ElasticFusion [^41]</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>9.25</td><td style='text-align: center; word-wrap: break-word;'>2.69</td><td style='text-align: center; word-wrap: break-word;'>89.06</td><td style='text-align: center; word-wrap: break-word;'>34.02</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DVO-SLAM [^42]</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>26.88</td><td style='text-align: center; word-wrap: break-word;'>5.83</td><td style='text-align: center; word-wrap: break-word;'>193.89</td><td style='text-align: center; word-wrap: break-word;'>71.83</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ORB-SLAM3 [^15]</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>9.46</td><td style='text-align: center; word-wrap: break-word;'>5.82</td><td style='text-align: center; word-wrap: break-word;'>113.55</td><td style='text-align: center; word-wrap: break-word;'>73.33</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ORB-SLAM2 [^19]</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>23.03</td><td style='text-align: center; word-wrap: break-word;'>17.84</td><td style='text-align: center; word-wrap: break-word;'>156.10</td><td style='text-align: center; word-wrap: break-word;'>104.28</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>BAD-SLAM [^33]</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>56.24</td><td style='text-align: center; word-wrap: break-word;'>30.89</td><td style='text-align: center; word-wrap: break-word;'>280.05</td><td style='text-align: center; word-wrap: break-word;'>153.47</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>GO-SLAM [^43]</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>33.12</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>197.02</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DROID-SLAM [^7]</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>54.61</td><td style='text-align: center; word-wrap: break-word;'>32.84</td><td style='text-align: center; word-wrap: break-word;'>340.42</td><td style='text-align: center; word-wrap: break-word;'>207.79</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DVI-SLAM(Ours)</td><td style='text-align: center; word-wrap: break-word;'>RGB-D</td><td style='text-align: center; word-wrap: break-word;'>62.52</td><td style='text-align: center; word-wrap: break-word;'>37.97</td><td style='text-align: center; word-wrap: break-word;'>354.71</td><td style='text-align: center; word-wrap: break-word;'>211.60</td></tr></table>

### C. 消融研究

表IV展示了我们的双视觉因子设计在合成TartanAir验证数据集上的有效性[^31]，该数据集由DROID-SLAM [^7]定义。从表中可以看出，无论采用单目还是立体输入，与基线方法相比，我们的DVI-SLAM方法在视觉里程计或SLAM输出上的轨迹误差降低了约40%。具体而言，我们加入了具有不同权重的特征度量因子。首先使用固定权重，命名为“B + F_Metric_fixed $w^f = 1$”，但结果反而更差。随后我们在迭代过程中手动将权重从小调大，得到“B + F_Metric_tuned $w^f$”。相比之下，我们的网络能够学习到更好的权重，从而动态融合双视觉因子。

<div style="text-align: center;">TABLE IV: Ablation study of the influence of each factor on TartanAir validation dataset.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Configuration</td><td colspan="2">Mono ATE-scale(m) $\downarrow$</td><td colspan="2">Stereo ATE(m) $\downarrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VO</td><td style='text-align: center; word-wrap: break-word;'>SLAM</td><td style='text-align: center; word-wrap: break-word;'>VO</td><td style='text-align: center; word-wrap: break-word;'>SLAM</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Baseline(B)</td><td style='text-align: center; word-wrap: break-word;'>0.264</td><td style='text-align: center; word-wrap: break-word;'>0.129</td><td style='text-align: center; word-wrap: break-word;'>0.100</td><td style='text-align: center; word-wrap: break-word;'>0.060</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + F-Metric_fixed $w^{f} = 1$</td><td style='text-align: center; word-wrap: break-word;'>23.78</td><td style='text-align: center; word-wrap: break-word;'>23.98</td><td style='text-align: center; word-wrap: break-word;'>14.58</td><td style='text-align: center; word-wrap: break-word;'>14.59</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + F-Metric_tuned $w^{f}$</td><td style='text-align: center; word-wrap: break-word;'>0.190</td><td style='text-align: center; word-wrap: break-word;'>0.115</td><td style='text-align: center; word-wrap: break-word;'>0.078</td><td style='text-align: center; word-wrap: break-word;'>0.048</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + F-Metric_learned $w^{f}$</td><td style='text-align: center; word-wrap: break-word;'>0.137 $^{48.1\%}$ $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.080 $^{38.0\%}$ $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.069 $^{31.0\%}$ $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.036 $^{40.0\%}$ $\downarrow$</td></tr></table>

图3可视化了推理时平均双视觉置信度随优化迭代步数的变化情况。我们发现，在早期阶段重投影因子占主导地位。当位姿和深度状态接近正确值时，特征度量的置信度会迅速上升。经过几次迭代后，特征度量的平均置信度会略微超过重投影因子，二者共同为优化做出贡献。

![Image](images/31310f77507d1186a4fbefa0c88aec57ae7a652f81cde511171d9b64f830c595.jpg)

<div style="text-align: center;">Fig. 3: The graph shows the change of average re-projection confidence and average feature-metric confidence with the number of iterations increasing.</div>

表五展示了各因素对真实世界EuRoC数据集上性能的影响。从表中可以看出，与特征度量因子相比，IMU因子对降低轨迹误差的影响更大。具体而言，我们进行了不同IMU权重的实验。例如，对于名为“B + IMU_fixed $w^u = 1$”的方法，我们仅使用预积分权重$w^pu$。而对于名为“B + IMU_tuned $w^u$”的方法，我们会在预积分权重$w^{pu}$上乘以一个手动调整的向量。该方法的结果接近我们所获得的性能水平。当将这三个因子动态组合在一起时，单目和双目VIO的ATE分别降低了45.3%和36.2%。

<div style="text-align: center;">TABLE V: Ablation study of the influence of each factor on the EuRoC dataset.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Configuration</td><td style='text-align: center; word-wrap: break-word;'>Mono(VO/VIO)\nATE-scale(m) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>Stereo(VO/VIO)\nATE(m) $\downarrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Baseline(B)</td><td style='text-align: center; word-wrap: break-word;'>0.179</td><td style='text-align: center; word-wrap: break-word;'>0.080</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + F-Metric_fixed $w^{f} = 1$</td><td style='text-align: center; word-wrap: break-word;'>3.203</td><td style='text-align: center; word-wrap: break-word;'>3.409</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + F-Metric_tuned $w^{f}$</td><td style='text-align: center; word-wrap: break-word;'>0.163</td><td style='text-align: center; word-wrap: break-word;'>0.073</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + F-Metric_learned $w^{f}$</td><td style='text-align: center; word-wrap: break-word;'>0.143 $^{{20.1\%}}$ $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.066 $^{{17.5\%}}$ $\downarrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + IMU_fixed $w^{u} = 1$</td><td style='text-align: center; word-wrap: break-word;'>0.251</td><td style='text-align: center; word-wrap: break-word;'>0.127</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + IMU_tuned $w^{u}$</td><td style='text-align: center; word-wrap: break-word;'>0.129</td><td style='text-align: center; word-wrap: break-word;'>0.064</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + IMU_learned $w^{u}$</td><td style='text-align: center; word-wrap: break-word;'>0.114 $^{{36.3\%}}$ $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.062 $^{{22.5\%}}$ $\downarrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>B + F-Metric_learned $w^{f}$\n+ IMU_learned $w^{u}$</td><td style='text-align: center; word-wrap: break-word;'>0.098 $^{{45.3\%}}$ $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.051 $^{{36.2\%}}$ $\downarrow$</td></tr></table>

### D. 内存与运行时间

表六展示了我们的VIO或VI-SLAM在不同分辨率输入的不同数据集上的内存需求及运行时间。所有测试均在NVIDIA RTX 3090 GPU上完成。运行时间是指VO或VIO的总运行时间除以序列的总帧数。表中给出的帧率（fps）是运行时间的倒数。

<div style="text-align: center;">TABLE VI: The memory requirement and runtime.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Dataset</td><td rowspan="2">Resolution</td><td colspan="2">Memory</td><td rowspan="2">Runtime</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>VO/VIO</td><td style='text-align: center; word-wrap: break-word;'>V/VI-SLAM</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>TartanAir [^31]</td><td style='text-align: center; word-wrap: break-word;'>$384 \times 512$</td><td style='text-align: center; word-wrap: break-word;'>12(G)</td><td style='text-align: center; word-wrap: break-word;'>24(G)</td><td style='text-align: center; word-wrap: break-word;'>8(fps)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>EuRoC [^32]</td><td style='text-align: center; word-wrap: break-word;'>$240 \times 384$</td><td style='text-align: center; word-wrap: break-word;'>8(G)</td><td style='text-align: center; word-wrap: break-word;'>24(G)</td><td style='text-align: center; word-wrap: break-word;'>20(fps)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ETH3D-SLAM [^33]</td><td style='text-align: center; word-wrap: break-word;'>$312 \times 504$</td><td style='text-align: center; word-wrap: break-word;'>12(G)</td><td style='text-align: center; word-wrap: break-word;'>24(G)</td><td style='text-align: center; word-wrap: break-word;'>16(fps)</td></tr></table>

### VI. 结论与未来工作

我们提出了DVI-SLAM，这是一种利用动态多因子融合来提升SLAM精度的双视觉与惯性SLAM方法。通过大量实验验证，我们的DVI-SLAM方法在定位精度和鲁棒性方面显著优于现有的SLAM方法。未来，我们希望加快算法运行速度并降低模型内存需求，例如通过从密集跟踪调整为稀疏跟踪，这是实现在消费级移动处理器平台上实时姿态估计的重要一步。此外，为了提供精确且完整的3D地图，我们还希望更好地将RGB传感器和深度传感器与神经辐射场（NeRFs）或3D高斯泼溅技术相结合。

---

[^1]: B. Ummenhofer, H. Zhou, J. Uhrig, N. Mayer, E. Ilg, A. Dosovitskiy, and T. Brox, "Demon: Depth and motion network for learning monocular stereo," in Proceedings of the IEEE conference on computer vision and pattern recognition, 2017, pp. 5038–5047.

[^2]: H. Zhou, B. Ummenhofer, and T. Brox, "Deeptam: Deep tracking and mapping," in Proceedings of the European conference on computer vision (ECCV), 2018, pp. 822–838.

[^3]: S. Shen, Y. Cai, W. Wang, and S. Scherer, "Dytanvo: Joint refinement of visual odometry and motion segmentation in dynamic environments," in 2023 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2023, pp. 4048–4055.

[^4]: M. Bloesch, J. Czarnowski, R. Clark, S. Leutenegger, and A. J. Davison, “Codeslam-learning a compact, optimisable representation for dense visual slam,” in Proceedings of the IEEE conference on computer vision and pattern recognition, 2018, pp. 2560–2568.

[^5]: C. Tang and P. Tan, “Ba-net: Dense bundle adjustment network,” arXiv preprint arXiv:1806.04807, 2018.

[^6]: J. Czarnowski, T. Laidlow, R. Clark, and A. J. Davison, “Deepfactors: Real-time probabilistic dense monocular slam,” IEEE Robotics and Automation Letters, vol. 5, no. 2, pp. 721–728, 2020.

[^7]: Z. Teed and J. Deng, “Droid-slam: Deep visual slam for monocular, stereo, and rgb-d cameras,” Advances in neural information processing systems, vol. 34, pp. 16558–16569, 2021.

[^8]: R. Clark, S. Wang, H. Wen, A. Markham, and N. Trigoni, “Vinet: Visual-inertial odometry as a sequence-to-sequence learning problem,” in Proceedings of the AAAI Conference on Artificial Intelligence, vol. 31, no. 1, 2017.

[^9]: L. Han, Y. Lin, G. Du, and S. Lian, “Deepvio: Self-supervised deep learning of monocular visual inertial odometry using 3d geometric constraints,” in 2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2019, pp. 6906–6913.

[^10]: A. J. Davison, I. D. Reid, N. D. Molton, and O. Stasse, “Monoslam: Real-time single camera slam,” IEEE transactions on pattern analysis and machine intelligence, vol. 29, no. 6, pp. 1052–1067, 2007.

[^11]: G. Klein and D. Murray, “Parallel tracking and mapping for small ar workspaces,” in 2007 6th IEEE and ACM international symposium on mixed and augmented reality. IEEE, 2007, pp. 225–234.

[^12]: A. I. Mourikis and S. I. Roumeliotis, “A multi-state constraint kalman filter for vision-aided inertial navigation,” in Proceedings 2007 IEEE international conference on robotics and automation. IEEE, 2007, pp. 3565–3572.

[^13]: S. Leutenegger, S. Lynen, M. Bosse, R. Siegwart, and P. Furgale, “Keyframe-based visual-inertial odometry using nonlinear optimization,” The International Journal of Robotics Research, vol. 34, no. 3, pp. 314–334, 2015.

[^14]: K. Eckenhoff, P. Geneva, and G. Huang, “Closed-form preintegration methods for graph-based visual-inertial navigation,” The International Journal of Robotics Research, vol. 38, no. 5, pp. 563–586, 2019.

[^15]: C. Campos, R. Elvira, J. J. G. Rodríguez, J. M. Montiel, and J. D. Tardós, “Orb-slam3: An accurate open-source library for visual, visual-inertial, and multimap slam,” IEEE Transactions on Robotics, vol. 37, no. 6, pp. 1874–1890, 2021.

[^16]: H. Liu, M. Chen, G. Zhang, H. Bao, and Y. Bao, "Ice-ba: Incremental, consistent and efficient bundle adjustment for visual-inertial slam," in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2018, pp. 1974–1982.

[^17]: T. Qin, P. Li, and S. Shen, “Vins-mono: A robust and versatile monocular visual-inertial state estimator,” IEEE Transactions on Robotics, vol. 34, no. 4, pp. 1004–1020, 2018.

[^18]: R. Mur-Artal, J. M. M. Montiel, and J. D. Tardos, “Orb-slam: a versatile and accurate monocular slam system,” IEEE transactions on robotics, vol. 31, no. 5, pp. 1147–1163, 2015.

[^19]: R. Mur-Artal and J. D. Tardós, “Orb-slam2: An open-source slam system for monocular, stereo, and rgb-d cameras,” IEEE transactions on robotics, vol. 33, no. 5, pp. 1255–1262, 2017.

[^20]: —, “Visual-inertial monocular slam with map reuse,” IEEE Robotics and Automation Letters, vol. 2, no. 2, pp. 796–803, 2017.

[^21]: Z. Teed, L. Lipson, and J. Deng, “Deep patch visual odometry,” arXiv preprint arXiv:2208.04726, 2022.

[^22]: W. Ye, X. Lan. $^{9}$ "Pvo: $P^{2-}$ $^{9}$ the IEEE/CVF

 $C^{2}$ 2023, pp.

[^23]: C. Forster, M. Pizzoli, and D. Scaramuzza, “Svo: Fast semi-direct monocular visual odometry,” in 2014 IEEE international conference on robotics and automation (ICRA). IEEE, 2014, pp. 15–22.

[^24]: K. Eckenhoff, P. Geneva, and G. Huang, “Direct visual-inertial navigation with analytical preintegration,” in 2017 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2017, pp. 1429–1435.

[^25]: J. Engel, T. Schöps, and D. Cremers, “Lsd-slam: Large-scale direct monocular slam,” in Computer Vision–ECCV 2014: 13th European Conference, Zurich, Switzerland, September 6-12, 2014, Proceedings, Part II 13. Springer, 2014, pp. 834–849.

[^26]: J. Engel, V. Koltun, and D. Cremers, “Direct sparse odometry,” IEEE transactions on pattern analysis and machine intelligence, vol. 40, no. 3, pp. 611–625, 2017.

[^27]: J. Engel, J. Stückler, and D. Cremers, “Large-scale direct slam with stereo cameras,” in 2015 IEEE/RSJ international conference on intelligent robots and systems (IROS). IEEE, 2015, pp. 1935–1942.

[^28]: R. Wang, M. Schworer, and D. Cremers, “Stereo dso: Large-scale direct sparse visual odometry with stereo cameras,” in Proceedings of the IEEE International Conference on Computer Vision, 2017, pp. 3903–3911.

[^29]: O. Komebeiger, F. Fischer, and T. Biox, O-net. Convolutional networks for biomedical image segmentation," in Medical Image Computing and Computer-Assisted Intervention–MICCAI 2015: 18th International Conference, Munich, Germany, October 5-9, 2015, Proceedings, Part III 18. Springer, 2015, pp. 234–241.

[^30]: C. Forster, L. Carlone, F. Dellaert, and D. Scaramuzza, “On-manifold preintegration for real-time visual-inertial odometry,” IEEE Transactions on Robotics, vol. 33, no. 1, pp. 1–21, 2016.

[^31]: W. Wang, D. Zhu, X. Wang, Y. Hu, Y. Qiu, C. Wang, Y. Hu, A. Kapoor, and S. Scherer, “Tartanair: A dataset to push the limits of visual slam,” in 2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2020, pp. 4909–4916.

[^32]: M. Burri, J. Nikolic, P. Gohl, T. Schneider, J. Rehder, S. Omari, M. W. Achtelik, and R. Siegwart, “The euroc micro aerial vehicle datasets,” The International Journal of Robotics Research, vol. 35, no. 10, pp. 1157–1163, 2016.

[^33]: T. Schops, T. Sattler, and M. Pollefeys, “Bad slam: Bundle adjusted direct rgb-d slam,” in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2019, pp. 134–144.

[^34]: J. Sturm, N. Engelhard, F. Endres, W. Burgard, and D. Cremers, “A benchmark for the evaluation of rgb-d slam systems,” in 2012 IEEE/RSJ international conference on intelligent robots and systems. IEEE, 2012, pp. 573–580.

[^35]: Z. Teed and J. Deng, “Deepv2d: Video to depth with differentiable structure from motion,” arXiv preprint arXiv:1812.04605, 2018.

[^36]: W. Wang, Y. Hu, and S. Scherer, “Tartanvo: A generalizable learning-based vo,” in Conference on Robot Learning. PMLR, 2021, pp. 1761–1772.

[^37]: C. Forster, Z. Zhang, M. Gassner, M. Werlberger, and D. Scaramuzza, “Svo: Semidirect visual odometry for monocular and multicamera systems,” IEEE Transactions on Robotics, vol. 33, no. 2, pp. 249–265, 2016.

[^38]: T. Qin, J. Pan, S. Cao, and S. Shen, “A general optimization-based framework for local odometry estimation with multiple sensors,” arXiv preprint arXiv:1901.03638, 2019.

[^39]: S. Leutenegger, “Okvis2: Realtime scalable visual-inertial slam with loop closure,” arXiv preprint arXiv:2202.09199, 2022.

[^40]: A. Dai, M. Nießner, M. Zollhöfer, S. Izadi, and C. Theobalt, “Bundle-fusion: Real-time globally consistent 3d reconstruction using on-the-fly surface reintegration,” ACM Transactions on Graphics (ToG), vol. 36, no. 4, p. 1, 2017.

[^41]: T. Whelan, S. Leutenegger, R. Salas-Moreno, B. Glocker, and A. Davison, “Elasticfusion: Dense slam without a pose graph.” Robotics: Science and Systems, 2015.

[^42]: C. Kerl, J. Sturm, and D. Cremers, “Dense visual slam for rgb-d cameras,” in 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE, 2013, pp. 2100–2106.

[^43]: Y. Zhang, F. Tosi, S. Mattoccia, and M. Poggi, “Go-slam: Global optimization for consistent 3d instant reconstruction,” arXiv preprint arXiv:2309.02436, 2023.
