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

论文标题:

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.mzph.cn/bicheng/29711.shtml

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

相关文章

新火种AI|Sora发布半年之后,AI视频生成领域风云再起

作者:一号 编辑:美美 AI视频最近有些疯狂,Sora可能要着急了。 自OpenAI的Sora发布以来,AI视频生成技术便成为了科技界的热门话题。尽管Sora以其卓越的性能赢得了广泛关注,但其迟迟未能面向公众开放,让人…

[渗透测试学习] BoardLight-HackTheBox

BoardLight-HackTheBox 信息搜集 nmap扫描一下 nmap -sV -v 10.10.11.11扫描结果如下 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu))80端口有h…

【vue baidu-map】解决更新数据,bm-marker显示不完全问题

实现效果&#xff1a; 问题&#xff1a;切换上面基地tab键&#xff0c;导致地图图标展示不完全&#xff1b;刷新页面就可以正常展示。判断是<bm-marker>标记元素没有动态刷新dom元素引起的问题。 方案&#xff1a;this.$nextTick({}) this.$nextTick(()>{this.equipm…

用户需求分析揭秘:最佳实践与策略

大多数产品团队都有自己处理客户需求的一套流程。但是那些潜在的客户和他们的需求呢&#xff1f;如果在产品管理上已经有一定的资历&#xff0c;很可能对此见惯不怪了。 通常&#xff0c;这些需求是销售人员跑来告诉你的&#xff0c;大概就是说&#xff1a;“超棒的潜在客户一…

Airbind - hackmyvm

简介 靶机名称&#xff1a;Airbind 难度&#xff1a;中等 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmAirbind 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;Airbind&#xff09;&#xff1a;192.168.56.121 跳板机IP(windows 11)&…

Java开发的构建神器:Maven以及如何安装部署Maven

目录 一、Maven引言1.1 Maven的核心概念✍. POM (Project Object Model)✌. 依赖管理✍. 生命周期与构建阶段✌. 插件系统 1.2 Maven的工作流程✍. 读取POM文件&#xff1a;✌. 依赖解析&#xff1a;✍. 构建生命周期&#xff1a;✌. 插件执行&#xff1a;✍. 构建输出&#xf…

C++使用教程

目录 一、软件使用 二、C基础规则补充 关键字 整型取值范围 浮点型取值范围 字符型使用规则 字符串型使用规则 布尔类型 常用的转义移字符 三、数组、函数、指针、结构体补充 1.数组 2.函数 声明&#xff1a; 分文件编写&#xff1a; 值传递&#xff1a; 3.指…

Coursera耶鲁大学金融课程:Financial Markets 笔记Week 02

Financial Markets 本文是学习 https://www.coursera.org/learn/financial-markets-global这门课的学习笔记 这门课的老师是耶鲁大学的Robert Shiller https://en.wikipedia.org/wiki/Robert_J._Shiller Robert James Shiller (born March 29, 1946)[4] is an American econom…

Vue3鼠标悬浮个人头像时出现修改头像,点击出现弹框,上传头像使用cropperjs可裁剪预览

实现效果&#xff1a; 鼠标悬浮到头像上&#xff0c;下方出现修改头像 点击修改头像出现弹框&#xff0c;弹框中可上传头像&#xff0c;并支持头像的裁剪及预览 实现方式&#xff1a; 1.tempalte中 <div class"img-box"><img v-if"avatarImgUrl&qu…

常见的网络设备

引入 园区网络安全部署场景 1、路由器&#xff1a; 跨网段通信设备 。 2、交换机&#xff1a; 同网段或跨网段通信设备。 3、AntiDDoS &#xff1a; DDoS 防御系统&#xff0c;通常旁挂部署于网络出口处&#xff0c; 位于防火墙上游&#xff0c;用于减轻防火墙报文处理负担。 …

CENTOS7.9下服务器双网卡bond模式6配置示例

​1.bond口的特点 bond口通过将多个网口进行聚合&#xff0c;多个网口聚合后一方面实现了大带宽传输&#xff0c;另外多网口聚合后也同时具有冗余特性&#xff0c;当其中一个网口down掉后&#xff0c;其他网口会继续转发流量&#xff0c;不会导致流量中断。 2.使用条件 当环境…

CAD二次开发(10)-单行文字的添加+图形修改

1. 单行文字的添加 第一步&#xff1a; 首先在CAD中新增中文样式 输入ST命令&#xff1a; 第二步&#xff1a;代码开发 /// <summary>/// 添加文本信息/// </summary>[CommandMethod("AddText")]public void AddText(){var doc Application.DocumentM…

全氟己酮自动灭火材料表现亮眼!手把手教你自动灭火毯的使用方法

灭火毯的使用方法是什么&#xff1f;很多朋友在购买灭火毯之前&#xff0c;都比较关心这个问题。在这里&#xff0c;我们可以把灭火毯分为两种。一种是传统灭火毯&#xff0c;还有一种是近年来兴起的高科技产品—全氟己酮自动灭火毯。这两种灭火毯的使用方法大有不同&#xff0…

[算法刷题—二分法]寻找插入位置

题目展示: 本道题本身并不是很难,主要是学习和分析二分查找插入位置的方法。 首先大体上分为两种情况: 一.target在待查找的数组之中,返回对应值的下标索引。 二.target不在待查找的数组之中&#xff0c;需要返回target插入位置的索引(原数组有序) 第一种情况不难&#xff…

WordPress 站点 Wp-Login.Php 登录页面,防止被机器扫描爆破终极方法

最近好像不少的 WordPress 站点又迎来了一波疯狂的 wp-login.php 登录页面暴力破解,明月使用的 Dragon 主题也迅速的做出了安全防范响应,第一时间就增强了代码上的安全防御能力。明月代运维的几个站点也在这方面加强了防范措施,基本上实现了永久解决这一顽疾的目标,今天明月…

基于minhook的Windows HOOK

MinHook是一个基于微软Detours技术的可移植Hook库&#xff0c;它允许开发者在运行时更改函数定义&#xff0c;而无需修改原始函数代码。以下是关于MinHook的详细介绍&#xff1a; 基本概念 定义&#xff1a;MinHook使用内存污染和跳转技术来实现Hook&#xff0c;使得开发者能…

视频汇聚安防综合管理平台EasyCVR支持GA/T 1400视图库标准及设备接入配置

一、概述 视频汇聚安防综合管理平台EasyCVR视频监控系统已经与公安部GA/T 1400视图库标准协议实现了对接&#xff0c;即《公安视频图像信息应用系统》。 安防监控系统EasyCVR支持采用GA/T 1400进行对接&#xff0c;可实现人脸数据使用的标准化、合规化。其采用统一接口对接雪…

分布式技术导论 — 探索分析从起源到现今的巅峰之旅(流式处理到微批处理)

探索分析从起源到现今的巅峰之旅 流式计算回顾流式服务结合分布式特性 流式计算组成部分监控数据处理进度流式分析案例流转数据的衍生存储确认器采取高效策略确认器异常应对策略工作节点故障的处理&#xff08;精确一次处理&#xff09;确认器故障的处理&#xff08;恰好一次处…

【PPT教程】一键重置幻灯片背景的方法,新建幻灯片带默认背景

目的是替换18届的研电赛ppt背景为19届 这里写目录标题 1.设计->设置背景格式2.图片或纹理填充->插入3.选择需要替换为背景的照片4.点击下方的应用到全部 1.设计->设置背景格式 2.图片或纹理填充->插入 3.选择需要替换为背景的照片 4.点击下方的应用到全部 此时全部…

Google推出开源代码大模型CodeGemma:AI编程新纪元,代码自动完成和生成技术再升级

论文标题: CodeGemma: Open Code Models Based on Gemma机构: Google LLC论文链接: https://arxiv.org/pdf/2406.11409.pdf CodeGemma模型概述 CodeGemma是基于Google DeepMind的Gemma模型系列&#xff08;Gemma Team et al., 2024&#xff09;开发的一系列开放代码模型。这些…