自监督几何引导:开启单目视觉里程计的鲁棒新时代

news2024/11/26 20:31:59

论文标题:

Self-Supervised Geometry-Guided Initialization for Robust Monocular Visual Odometry

论文作者:

Takayuki Kanai, Igor Vasiljevic, Vitor Guizilini, Kazuhiro Shintani

导读:

本文提出了一种用于单目视觉里程计的自监督几何引导初始化方法(SG-Init),旨在提高自主系统中的鲁棒性和准确性,有效解决了动态环境和大运动场景下的视觉SLAM问题。作者不仅诊断了现有方法的不足,还提出了SG-Init方案,显著提升了在复杂实际环境中的定位精度和鲁棒性(该研究将在文章正式出版后发布相关代码及预训练模型)。©️【深蓝AI】编译

1. 摘要

单目视觉里程计是各种自主系统中的一项关键技术。相对于传统的基于特征的方法,由于光照不足、纹理不足、运动大等原因而失败,基于学习的SLAM方法利用迭代密集束调整来解决这些失败情况,并在各种真实环境中实现鲁棒准确定位,而不依赖于特定领域的训练数据。尽管如此,基于学习的SLAM仍然在涉及大运动和动态对象的场景中挣扎。该研究通过分析户外测试中的主要故障案例,指出了基于学习的SLAM模型(DROID-SLAM)的主要缺陷,并揭示了其优化过程中存在的不足,并再此基础上提出使用自监督先验,利用冻结的大规模预训练的单目深度估计来初始化密集束调整过程,从而在不需要微调SLAM主干的情况下实现鲁棒视觉里程计。该方法在KITTI与DDAD测试中都有显著的改进。

本文的主要贡献如下:

●SG-Init方法提出:提出了一种新颖的初始化策略,名为Self-Supervised Geometry-Guided Initialization(SG-Init),用于增强单目视觉里程计的鲁棒性;

●自监督学习结合zero-shot深度估计:利用自监督学习的原则与大规模预训练的zero-shot深度估计器相结合,来初始化密集的束调整过程,从而提升视觉里程计的性能;

●无需微调SLAM主干:所提出的方法不需要对SLAM系统的主干网络进行微调,即可实现准确的轨迹估计,这一点对于通用性和实用性至关重要;

●深度和自我运动的联合优化:通过同时优化深度估计和自我运动估计,SG-Init能够提供更加稳定和准确的初始化,这对于后续的迭代优化过程至关重要。

2. SG-Init核心介绍

SG-Init是一种通过自监督几何模型初始化基于学习的单目SLAM的方法,以增强迭代深度和姿态优化的鲁棒性。SG-Init结合于DROID-SLAM,使用的自监督深度和自运动学习,以促进稠密束调整。其完整流程如图1所示。从自监督学习中学习到的DepthNet和PoseNet分别为光流校正估计器(UpdateModule)和光流校正层(DBA)提供初始猜想,并结合本构函数k对目标变量进行递归更新,得到最终输出。

在这里插入图片描述
图1|SG-Init流程图©️【深蓝AI】编译

2.1 密集束调整与DROID-SLAM

DROID-SLAM是一种视觉SLAM方法,通过计算密集光流图,并利用估计的流量递归地获得逆深度( d d d)和相机姿态( G G G)。给定共享共可见区域的一对图像 ( I i , I j ) (I_i,I_j) (Ii,Ij),由神经网络(参数化 θ \theta θ)建模的学习流量更新器预测光流估计 r i j ( k ) r_{ij}(k) rij(k)对当前估计流量 p i j ( k ) p_{ij}(k) pij(k)的修正,如下式所示:

r i j ( k ) = UpdateModule θ ( I i , I j , G ( k ) , d ( k ) ∣ K ) \mathbf{r}_{ij}(k)=\text{UpdateModule}_\theta(I_i,I_j,\mathbf{G}(k),\mathbf{d}(k)|\mathbf{K}) rij(k)=UpdateModuleθ(Ii,Ij,G(k),d(k)K)

其中, K K K是用于重投影操作的相机内参模型, k k k表示循环神经网络模型的迭代步长。为了简化,后面省略了步长 k k k。将获取的稠密光流 p i j ∗ = r i j + p i j \mathbf{p}_{ij}^{*}=\mathbf{r}_{ij}+\mathbf{p}_{ij} pij=rij+pij代入密集束调整层,使以下代价函数最小化:

E ( G ′ , d ′ ) = ∑ ( i , j ) ∈ E ∥ p i j ∗ − Π c ( G i j ′ ∘ Π c − 1 ( p i , d i ′ ) ) ∥ Σ i j 2 E(\mathbf{G}',\mathbf{d}')=\sum_{(i,j)\in\mathcal{E}}\left\|\mathbf{p}_{ij}^*-\Pi_c(\mathbf{G}'_{ij}\circ\Pi_c^{-1}(\mathbf{p}_i,\mathbf{d}'_i))\right\|_{\Sigma_{ij}}^2 E(G,d)=(i,j)E pijΠc(GijΠc1(pi,di)) Σij2

其中索引 ( i , j ) ∈ E (i, j)∈\mathcal{E} (i,j)E描述共视关键帧对, G i j ′ \mathbf{G}_{ij}^{\prime} Gij给出 G j ′ ∘ G i ′ − 1 \mathbf{G}_j^{\prime}\circ\mathbf{G}_i^{\prime-1} GjGi1计算得到的相对摄像机变换, ∥ ⋅ ∥ Σ \left\|\cdot\right\|_{\Sigma} Σ为马氏距离, w i j w_{ij} wij是用于捆绑调整过程的权重,这些权重是从UpdateModule的另一个输出层预测的,与 r i j r_{ij} rij同时生成。

2.2 深度获取与自我运动初始化器

深度和自我运动估计器的自监督学习被表述为通过比较两帧来同时优化深度和姿态神经网络(以下简称PoseNet和DepthNet)。下面的代价函数将学习信号传播到整个架构:

L p ( I t , I ^ t ) = α 1 − S S I M ( I t , I ^ t ) 2 + ( 1 − α ) ∥ I t − I ^ t ∥ \mathcal{L}_{p}(I_{t},\hat{I}_{t})=\alpha \frac{1-\mathrm{SSIM}(I_{t},\hat{I}_{t})}{2}+(1-\alpha) \|I_{t}-\hat{I}_{t}\| Lp(It,I^t)=α21SSIM(It,I^t)+(1α)ItI^t

其中, I t I_t It是目标图像;是通过光度扭曲操作合成的图像,该操作由以下四个部分组成:

1)来自DepthNet的预测深度;

2)来自PoseNet的帧间运动,表示从目标帧 ID t \text{ID t} ID t到上下文帧 ID c \text{ID c} ID c的相机运动;

3)上下文图像 I c I_c Ic

4)预校准的相机内参 ( K K K)。超参数 α \alpha α定义了SSIM和损失项 L 1 L_1 L1的混合比。由于公式在假设环境中无动态变化、亮度变化、遮挡等情况下最小化 I t I_t It I c I_c Ic之间的光度误差,因此在学习过程中仍然存在不适定性。我们通过利用大规模预训练模型的zero-shot能力,同时确保DepthNet和PoseNet之间的尺度一致性来应对这一问题。

2.3 用于先验学习的zero-shot深度引导

zero-shot单目深度估计器通常是一种计算代价高但功能强大的模型,损失函数描述如下:

L = α L P M + β L G + γ L N + δ L C D R + ϵ L E R N L=\alpha L_{P}^{M}+\beta L_{G}+\gamma L_{N}+\delta L_{\mathrm{CDR}}+\epsilon L_{\mathrm{ERN}} L=αLPM+βLG+γLN+δLCDR+ϵLERN

其中,带有下标的 L L L是自监督方案的损失项, α \alpha α ϵ ϵ ϵ是用于权衡优化的常数: L p M L_p^M LpM L p L_p Lp的扩展版本,其中深度不一致像素被掩盖在深度预测中; L G L_G LG是深度不一致像素的惩罚; L N L_N LN L C D R L_{CDR} LCDR L E R N L_{ERN} LERN分别表示学习深度估计器与zero-shot单目深度估计器的伪深度标签之间的差异,涉及表面法线(N)、深度排名(CDR),特别是动态区域,以及边缘区域周围的表面法线(ERN),其中主要关注最后两个损失项。尽管在这些边缘和动态区域上进行像素级深度预测很难通过自监督学习获得,但精确几何的观察能够提供额外的有效信息,以实现更准确的视觉里程计。此外,可靠的几何信息被带入深度估计器的训练中,保证了帧间一致性,而这种一致性对于当前的zero-shot模型是难以获得的。同时,在这种优化中还获取了PoseNet,因此密集束调整可以由PoseNet和DepthNet完全初始化。

2.4 自监督几何引导初始化

通过结合zero-shot模型的第一阶段自监督获得深度和姿态先验,这两个网络会同时估计它们,以在第二阶段稳定密集束调整层。为实现这一点,深度估计被简单地取反以输入到更新模块(UpdateModule)。另一方面,相机姿态 G ∣ t = τ ∈ G G|_{t=\tau}\in\mathbf{G} Gt=τG通过从相机位置原点 G ∣ t = T G|_{t=T} Gt=T链接PoseNet输出的相对姿态估计 X ^ t → t + 1 \hat{\mathbf{X}}^{t\to t+1} X^tt+1进行计算,如下所示:

G ∣ t = τ = X ^ τ − 1 → τ ⋯ X ^ T → T + 1 ∘ G ∣ t = T G|_{t=\tau}=\hat{\mathbf{X}}^{\tau{-}1\to\tau}\cdots\hat{\mathbf{X}}^{T\to T+1}\circ G|_{t=T} Gt=τ=X^τ1τX^TT+1Gt=T

在这个设置中,一个单位矩阵被赋值为 G ∣ t = 0 G|_{t=0} Gt=0。最后,将得到的深度和姿态预测输入到UpdateModule 和密集束调整层中。尽管在每一帧中提供预测的深度输入,但当关键帧的累积数量达到给定阈值(在图1中称为“初始BA”)时,我们仅为首次束调整提供PoseNet的姿态预测。

3. 实验

该研究使用evo中计算的轨迹均方根误差(RMSE),使用的指标在仅应用尺度版本时称为ATE,在同时应用正确尺度和对齐版本时称为ATE†。在深度估计任务中,除非另有说明,否则展示中值缩放应用结果,并且没有后处理。从理论上讲,任意的zero-shot模型选择均可,但其仍可能会显示轻微的性能差异。该研究报告了两种模型的实验结果:LeReS引导学习(描述为(L)),Omnidata V2引导学习(O)。该研究进行实验的数据集有DDAD和KITTI。

3.1 DDAD数据集表现

在这里插入图片描述
表1|DDAD数据集轨迹估计实验结果©️【深蓝AI】编译

表1总结了DDAD序列的轨迹估计结果。利用自监督初始化(Init.)和zero-shot制导(ZG),相对于现成的DROID-SLAM和无zero-shot深度制导(注意为N/A)显着提高了估计性能,尽管它们都依赖于相同的学习SLAM主干。请注意,ORB-SLAM3具有估计的随机性;因此,选择五次试验中的最小误差作为每个序列的分数,然后取平均值以得到表中所述的结果。在所有序列中均未出现故障的情况下,我们的方案显示出最好的精度。

图2说明了通过zero-shot制导提高深度精度的好处:在观察动态移动车辆的情况下(seq:000187),传统特征提取方法提取关键帧容易失败的情况下(seq:000161),以及需要通过急转弯估计大光流的情况下(seq:000198),zero-shot制导的贡献很大。

在这里插入图片描述
图2|DDAD数据集上视觉里程计方法的输入/输出©️【深蓝AI】编译

从上述结果看,仅提供zero-shot深度估计用于初始化即可提高DROID-SLAM的性能。因此,我们将我们的提案与几种zero-shot深度估计模型进行比较,但仅有深度就足够了吗?在表2中,实验结果显示了深度和姿态初始化的重要性,同时提供两者的性能显著更好。该研究认为,仅靠精确的深度输入进行初始化是不足的,结合共享尺度的姿态输入能显著提高性能,因为密集束调整本质上是光流的迭代优化:即深度和姿态的结合。

在这里插入图片描述
表2|不同深度初始化器对轨迹估计性能的影响(DDAD数据集;缩放表示:MD中位数缩放;SS移位缩放)©️【深蓝AI】编译

为了量化PoseNet对初始化的贡献,将PoseNet消融并将其与姿态估计方法的变体进行比较。表3显示了轨迹估计的结果以及与深度估计性能的关系。其中,SG-Init+D为“SG-Init + DROID”,SG-Init+D†为SG-Init+D对PoseNet的消去(PoseNet描述了通过相对姿态估计链化获得的自监督学习的自我运动估计器的vanilla输出)。结果表明:

1)在不考虑深度精度的情况下,PoseNet初始化束平差可以提高轨迹估计精度;

2)使用更强深度估计量的模型可以提高轨迹估计精度。

在这里插入图片描述
表3|DDAD上的PoseNet消融实验(ZG表示自监督阶段的伪监督模型。SG-INIT+D表示本研究方案,版本“无PoseNet初始化”描述为SG-INIT+D †,而PoseNet是自运动估计器的直接结果)©️【深蓝AI】编译

3.2 KITTI数据集表现

在这里插入图片描述
表4|KITTI数据集轨迹估计实验结果©️【深蓝AI】编译

本研究的zero-shot深度指导方法在强基线方法上取得了较好结果。然而,与DDAD实验相反,轨迹估计的准确性并不完全遵循深度估计准确性的顺序,如表5所示。我们假设这是由于深度图中的误预测造成的,且该误预测无法进行地面实况评估。由于评估区域仅限于LiDAR记录的范围及其周围区域,无法完全量化深度图上所有像素的误差。定性结果表明,非评估区域的深度(图5)的影响:与“无零样本深度指导”模型相比,具有零样本指导的模型在天空和树木上的伪影较少。由于所有像素都被输入到稠密束调整模块,该区域可能会成为优化过程中的噪声。

在这里插入图片描述
表5|使用ResNet18s在KITTI标注测试集上的深度估计结果(对于真实标签,使用的是点云的标注版本)©️【深蓝AI】编译

在这里插入图片描述
图3|SG-Init的学习深度输入,使用zero-shot模型作为伪深度指导(上方显示的是seq:09的结果,下方是seq:10的结果。尽管在数量上N/A指导模型比“Omnidata V2”指导模型更准确,但前者显示出一些伪影,特别是在天空区域)©️【深蓝AI】编译

3.3 SLAM骨干网络之间的性能差异

本研究探究了所提出的初始化是否可以独立于主干所学的内容来增强所学的SLAM。在比较中,选择了VKITTI2学习后的主干。表6表明,无论使用何种数据集进行微调,都证明了本研究所提算法的有效性。此外,结果还表现出本研究在初始化所做贡献优于对主干微调的贡献,为此,与其在模拟真实环境领域的合成数据上进行微调,不如在这个基于学习的方案中高效利用大规模预训练的骨干网络更为可取。

在这里插入图片描述
表6|本研究方法在各种SLAM骨干网络上的改进情况©️【深蓝AI】编译

4. 结论

本研究实现效果如图4所示,探讨了基于学习的基于密集束调整的SLAM的优缺点,并评估了其在驾驶场景中的鲁棒性和泛化潜力。通过对故障案例的分析,研究发现,在这种情况下,大光流的估计和动态目标的正确处理对于准确估计轨迹至关重要。本研究提出了一种新的初始化策略SG-Init,它利用自监督深度和自我运动学习原理结合大规模预训练深度估计器来初始化密集束调整。并在真实的户外驾驶环境中对所提算法进行了全面分析,验证了其无需对SLAM主干进行任何进一步的训练,通过本研究的初始化操作使轨迹估计能够与在域内数据上训练的最先进的SLAM主干相竞争。

在这里插入图片描述
图4|SG-Init效果图©️【深蓝AI】编译

编译|唐僧洗头用飘柔

审核|Los

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1835028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全国各城市劳动力就业及收入状况数据

基本信息. 数据名称: 全国各城市劳动力就业及收入状况数据 数据格式: Shp、excel 数据时间: 2020-2022年 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据 数据可视化.

回溯算法练习题(2024/6/18)

1全排列 II 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1]]示例 2: 输入:nums [1,2,3] 输出:[[1,…

pg分区表和mysql分区表的创建及删除添加操作

一、分区的类型 1、pg分区的类型 范围划分 列表划分 哈希分区 2、mysql分区的类型 范围分区 列表分区 hash分区 列分区 密匙分区 子分区 二、pg范围分区表的创建删除添加操作 1、pg分区表的创建 2、pg的分区表删除 3、pg分区表的添加 创建新的子分区 添加新创建的子分区 …

1999-2020年各地级市农村居民人均纯收入数据

1999-2020年各地级市农村居民人均纯收入数据 1、时间:1999-2020年 2、指标:年份、城市、农村居民人均纯收入 3、来源:区域年鉴、各省市年鉴 4、范围:地级市,具体每年城市数量参看下文图片,具体城市名单…

Jenkins macos 下 failed to create dmg 操作不被允许hdiutil: create failed - 操作不被允许?

解决方案: 打开设置,选择“隐私与安全”,选择“完全磁盘访问权限”,点击“”,选择jenkins的路径并添加。 同理,添加java的访问权限。

Vscode中的行尾序列CRLF/LF不兼容问题

最近开发的的时候,打开项目文件经常会出现爆红错误提示信息,显示如下图: 这东西太烦人了,毕竟谁都不希望在遍地都是爆红的代码里写东西,就像能解决这个问题,根据提示可以知道这是vscode中使用的prettier插件…

vue3-父子通信

一个简单的vue3子组件调用父组件方法的demo <template> <div> <h2>Parent Component父组件</h2> <ChildComponent notify-parent"handleParentMethod" /> </div> </template> <script> import { ref } fr…

图像处理与视觉感知复习--形态学图像处理

文章目录 计算图像膨胀和腐蚀计算开操作和闭操作击中或击不中变化 计算图像膨胀和腐蚀 定义&#xff1a; A c A^c Ac 表示集合A的补集几何的反射 有集合A中所有元素相对于原点的反射元素组成的集合称为集合A的反射&#xff0c;几位 A ^ \hat{A} A^ A ^ { w ∣ w − a , a …

泛微E9开发 查询页面添加按钮,完成特定功能

查询页面添加按钮&#xff0c;完成特定功能 1、关联知识&#xff08;查询页面实现新增按钮&#xff09;2、功能实现2.1. 点击按钮&#xff0c;输出选中的checkbox的值2.2. 点击按钮&#xff0c;打开一个自定义对话框 3、实现方法 1、关联知识&#xff08;查询页面实现新增按钮&…

SGPT论文阅读笔记

这是篇想要用GPT来提取sentence embedding的工作&#xff0c;提出了两个框架&#xff0c;一个是SGPT-BE&#xff0c;一个是SGPT-CE&#xff0c;分别代表了Bi-Encoder setting和Cross-Encoder setting。CE的意思是在做阅读理解任务时&#xff0c;document和query是一起送进去&am…

CP AUTOSAR标准之LargeDataCOM(AUTOSAR_CP_SWS_LargeDataCOM)

1 简介和功能概述 该规范描述了AUTOSAR基础软件模块LdCom的功能、API和配置。   在AUTOSAR分层架构中,AUTOSAR LdCom模块位于RTE/SwCluC_LdComProxy和PDU路由之间,参见[1,EXP LayeredSoftwareArchitecture]。   AUTOSAR LdCom模块提供了一种替代的交互层机制。通过专注于…

kafka在windows上的启动

启动zookeeper 解压kafka安装包到对应目录下&#xff0c;找到对应config目录下的zookeeper.properties文件 新建一个data文件夹&#xff0c;随便放哪 打开该文件&#xff0c;找到 dataDir/tmp/zookeeper 属性 将原来的属性值&#xff0c;修改为新建data文件夹地址&#xff0c;…

echarts 折线图 实现某两个点之间不要连线

通过插入null或NaN的数据点来实现"断开"的效果 const data [[a, 1], [b, 2], [c, 3], [d, 4], [e, 5]] data.splice(2, 0, NaN) option {xAxis: {type: "category",data: [a, b, c, d, e]},yAxis: {},series: [{data,type: "line"}] }

RadioML2016.10.a数据加载和介绍

RadioML2016.10.a For the RadioML 2016.10.a dataset, perform data loading and visualization. 数据集 RadioML 2016.10.a 官方链接https://www.deepsig.ai/datasets/https://www.deepsig.ai/datasets/ 具体的调制技术以及SNR [(QPSK, 2), (PAM4, 8), (AM-DSB, -4), (GFS…

基于Spring Boot+VUE毕业生信息招聘平台

系统详细设计 1管理员功能模块 管理员登录&#xff0c;管理员通过输入用户名、密码、角色等信息进行系统登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入毕业生信息招聘平台可以查看首页、个人中心、企业管理、空中宣讲会管理、招聘岗位管理、毕业生管理、个…

Android下QVideoFrame转QImage不成功记录

1.由于QVideoFrame::image() const : unsupported pixel format Format_ABGR32 &#xff0c;在转换时需要做个特殊处理如下,增加了android手机下的特殊格式处理: if(frame.pixelFormat() QVideoFrame::Format_ABGR32) 此部分代码 QImage imageFromVideoFrame(QVideoFrame &…

复分析——第3章——亚纯函数和对数(E.M. Stein R. Shakarchi)

第3章 亚纯函数和对数 (Meromorphic Functions and the Logarithm) One knows that the differential calculus, which has contributed so much to the progress of analysis, is founded on the consideration of differential coefficients, that is derivatives of f…

013.随机指纹chromium编译-如何通过传参来固定指纹

随机指纹chromium编译-如何通过传参来固定指纹 由于要所有的类型的指纹都实现固定&#xff0c;工作量太大&#xff0c;这里我只用plugins指纹作为示例。 一、为什么要固定指纹 目标&#xff1a;启动浏览器时&#xff0c;加上参数--fingerprints"xxxxxxx", 参数变化时…

【机器学习】对大规模的文本数据进行多标签的分类处理

1. 引言 1.1. NLP研究的背景 随着人工智能技术的飞速发展&#xff0c;智能助手、聊天机器人和虚拟客服的需求正呈现出爆炸性增长。这些技术不仅为人们提供了极大的生活便利&#xff0c;如日程管理、信息查询和情感陪伴&#xff0c;还在工作场景中显著提高了效率。聊天机器人凭…

什么是云恶意软件攻击,如何进行有效的防护

一切都在向云转移。云端数据越多&#xff0c;恶意攻击者攻击云平台的兴趣就越大。 攻击者使用恶意软件窃取数据并破坏服务。虽然恶意软件在云端可能不像在个人电脑上那么普遍&#xff0c;但大行其道的云恶意软件令人担忧。此外&#xff0c;组织不像您预料的那样意识到这点。 …