UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning 论文阅读

本文主要是介绍UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning 论文阅读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文链接

UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning


0. Abstract

  • 提出了一种名为 UnDeepVO 的新型单目视觉里程计(VO)系统。 UnDeepVO 能够使用深度神经网络估计单目相机的 6-DoF 位姿及其视图深度
  • 两个显着特征:一是无监督深度学习方案,二是绝对规模恢复

Fig. 1 UnDeepVO 的系统概括。在使用未标记的立体图像进行训练后,UnDeepVO 可以同时使用单目图像进行视觉里程计和深度估计。估计的 6-DoF 位姿和深度图均已缩放,无需进行缩放后处理


1. Intro

视觉里程计有两类主要的方法:特征法和直接法

目前,在实践中获取真实数据集通常很困难且昂贵,并且用于监督训练的现有标记数据集的数量仍然有限。这些限制建议后续工作寻找各种无监督学习 VO 方案

本文主要贡献

  • 展示了一个具有恢复绝对尺度的单目 VO 系统,并且我们通过利用空间和时间几何约束以无监督的方式实现
  • 由于在训练期间使用立体图像对,不仅估计的姿态而且估计的密集深度图都是以绝对比例生成的
  • 使用 KITTI 数据集评估我们的 VO 系统,结果表明 UnDeepVO 在单目相机的姿态估计方面取得了良好的性能

2. System Overview

Fig. 2 UnDeepVO 的架构图

系统由姿态估计器和深度估计器组成,如图 2 所示。两个估计器都以连续的单目图像作为输入,并分别生成缩放的 6-DoF 姿态和深度作为输出

姿态估计器:基于 VGG 的 CNN 架构。它以两个连续的单目图像作为输入并预测它们之间的 6-DoF 变换。由于旋转(以欧拉角表示)具有高度非线性,因此与平移相比通常很难训练。为了更好地通过无监督学习训练旋转,在最后一个卷积层之后用两组独立的全连接层将平移和旋转解耦。这使我们能够引入对旋转和平移预测进行归一化的权重,以获得更好的性能

深度估计器:基于编码器-解码器架构来生成密集的深度图。UnDeepVO 的深度估计器被设计为直接预测深度图。这是因为训练轨迹表明,以这种方式训练时整个系统更容易收敛

UnDeepVO 的一个特点是恢复 6-DoF 姿态和深度的绝对尺度,这归功于我们的训练方案,如图 3 所示

Fig. 3 UnDeepVO的训练方案。位姿和深度估计器将立体图像作为输入来分别估计 6-DoF 位姿和深度图。然后可以根据原始 RGB 图像、估计的深度图和姿势计算总损失,包括空间损失和时间损失

利用立体图像序列的空间和时间几何一致性来制定损失函数.一张图像中的红点在另一张图像中都有对应的红点。空间几何一致性表示左右图像对中对应点之间的几何射影约束,而时间几何一致性表示两个连续单目图像中对应点之间的几何射影约束,通过使用这些约束来构建损失函数并将它们一起最小化,UnDeepVO 学会以端到端无监督方式估计缩放的 6-DoF 姿势和深度图


3. Objective Losses For Unsupervised Training

UnDeepVO 通过反向传播进行损失训练。由于损失是建立在几何约束而不是标记数据的基础上的,因此 UnDeepVO 以无监督的方式进行训练。

其总损失包括空间图像损失和时间图像损失,如图3所示。空间图像损失驱动网络通过使用立体图像对来恢复缩放的深度图,而时间图像损失旨在最小化相机上的误差使用两个连续的单眼图像进行运动

3.1 立体图像对的空间图像损失

空间损失是根据左右立体图像之间的几何约束构建的。它由左右光度一致性损失、视差一致性损失和姿态一致性损失组成

光度一致性损失:对于两幅立体图像之间的重叠区域,一幅图像中的每个像素都可以在另一幅图像中以水平距离 D p D_p Dp 找到其对应关系。假设 p l ( u l , v l ) p_l(u_l, v_l) pl(ul,vl) 是左图像中的一个像素, p r ( u r , v r ) p_r(u_r, v_r) pr(ur,vr) 是右图像中其对应的像素。就有空间约束 u l = u r u_l = u_r ul=ur v l = v r + D p v_l = v_r + D_p vl=vr+Dp,距离 Dp 可由下式计算
D p = B f / D d e p (1) D_p=Bf/D_{dep}\tag{1} Dp=Bf/Ddep(1)
其中 B B B 是立体相机的基线, f f f 是焦距, D d e p D_{dep} Ddep 是对应像素的深度值

有了这个空间约束和计算出的 D p D_p Dp 图,我们可以通过“空间变换器”合成一幅图像和另一幅图像。 L1范数和SSIM项的组合用于构造左右光度一致性损失
L p h o l = λ s L S S I M ( I l , I l ′ ) + ( 1 − λ s ) L l 1 ( I l , I l ′ ) (2) L^l_{pho} = λ_sL^{SSIM}(I_l, I_l^\prime) + (1 − λ_s)L^{l_1} (I_l, I_l^′)\tag{2} Lphol=λsLSSIM(Il,Il)+(1λs)Ll1(Il,Il)(2)

L p h o r = λ s L S S I M ( I r , I r ′ ) + ( 1 − λ s ) L l 1 ( I r , I r ′ ) (3) L^r_{pho} = λ_sL^{SSIM}(I_r, I_r^\prime) + (1 − λ_s)L^{l_1} (I_r, I_r^′)\tag{3} Lphor=λsLSSIM(Ir,Ir)+(1λs)Ll1(Ir,Ir)(3)

其中 I l , I r I_l,I_r IlIr 分别是原始左图像和右图像, I l ′ I_l^′ Il 是原始右图像 I r I_r Ir 合成的左图像, I r ′ I_r^′ Ir 是原始左图像 I l I_l Il 合成的右图像。

视差一致性损失:左右视差图(深度的倒数)也受到 D p D_p Dp 的约束。 UnDeepVO使用的视差图是
D d i s = D p × I W (4) D_{dis}=D_p\times I_{W}\tag{4} Ddis=Dp×IW(4)
其中 I W I_W IW 是原始图像尺寸的宽度。将左右视差图分别表示为 D d i s l D^l_{dis} Ddisl D d i s r D^r_{dis} Ddisr。我们可以用 D p D_p Dp D d i s r D^r_{dis} Ddisr D d i s l D^l_{dis} Ddisl 合成 D d i s l ′ D^{l^\prime}_{dis} Ddisl D d i s r ′ D^{r^\prime}_{dis} Ddisr。那么视差一致性损失为
L d i s l = L l 1 ( D d i s l , D d i s l ′ ) (5) L^l_{dis} = L^{l_1} (D^l_{dis}, D^{l^\prime}_{dis})\tag{5} Ldisl=Ll1(Ddisl,Ddisl)(5)

L d i s r = L l 1 ( D d i s r , D d i s r ′ ) (6) L^r_{dis} = L^{l_1} (D^r_{dis}, D^{r^\prime}_{dis})\tag{6} Ldisr=Ll1(Ddisr,Ddisr)(6)

姿势一致性损失:在训练过程中,我们使用左右图像序列分别预测相机的 6-DoF 变换。理想情况下,这两个预测的转换应该基本相同。通过以下方式来惩罚它们之间的差异
L p o s = λ p L l 1 ( x l ′ , x r ′ ) + λ o L l 1 ( φ l ′ , φ r ′ ) (7) L_{pos} = \mathbf{λ}_pL^{l_1} (\mathbf{x}^′_l , \mathbf{x}^′_r) + \mathbf{λ}_oL^{l_1}(\mathbf{φ}_l^′, \mathbf{φ}_r^′)\tag{7} Lpos=λpLl1(xl,xr)+λoLl1(φl,φr)(7)
其中 λ p \mathbf{λ}_p λp 是左右位置一致性权重, λ o \mathbf{λ}_o λo 是左右方向一致性权重, [ x l ′ , φ l ′ ] [\mathbf{x}^′_l, \mathbf{φ}_l^′] [xl,φl] [ x r ′ , φ r ′ ] [\mathbf{x}^′_r, \mathbf{φ}_r^′] [xr,φr] 分别是左右图像序列的预测姿势

3.2 连续单目图像的时间图像损失

时间损失是根据两个连续单目图像之间的几何约束来定义的。它是恢复相机六自由度运动的重要部分。它包括光度一致性损失和3D几何配准损失。

光度一致性损失:光度损失是根据两个连续的单眼图像计算的。为了估计 6-DoF 变换,采用投影光度误差作为损失来最小化。分别表示 I k I_k Ik I k + 1 I_{k+1} Ik+1 为第 k k k 和第 ( k + 1 ) (k+1) (k+1) 图像帧, p k ( u k , v k ) p_k(u_k,v_k) pk(uk,vk) I k I_k Ik 中的一个像素, p k + 1 ( u k + 1 , v k + 1 ) p_{k+1}(u_{k+1},v_{k+1}) pk+1(uk+1,vk+1) 为对应的 I k + 1 I_{k+1} Ik+1 中的像素。然后,我们可以通过 p k p_k pk 导出 p k + 1 p_{k+1} pk+1
p k + 1 = K T k , k + 1 D d e p K − 1 p k (8) p_{k+1} = KT_{k,k+1}D_{dep}K^{−1}p_k\tag{8} pk+1=KTk,k+1DdepK1pk(8)
其中 K K K 是相机本征矩阵, D d e p D_{dep} Ddep 是第 k k k 帧中像素的深度值, T k , k + 1 T_{k,k+1} Tk,k+1 是从第 k k k 帧到第 ( k + 1 ) (k+1) (k+1) 帧的相机坐标变换矩阵。以通过使用估计姿态和“空间变换器”从 I k + 1 I_{k+1} Ik+1 I k I_k Ik 合成 I k ′ I_k^′ Ik I k + 1 ′ I_{k+1}^\prime Ik+1。因此,单目图像序列之间的光度损失为
L p h o k = λ s L S S I M ( I k , I k ′ ) + ( 1 − λ s ) L l 1 ( I k , I k ′ ) (9) L^k_{pho} = λ_sL^{SSIM}(I_k, I_k^′ ) + (1 − λ_s)L^{l_1}(I_k, I_k^′)\tag{9} Lphok=λsLSSIM(Ik,Ik)+(1λs)Ll1(Ik,Ik)(9)

L p h o k + 1 = λ s L S S I M ( I k + 1 , I k + 1 ′ ) + ( 1 − λ s ) L l 1 ( I k + 1 , I k + 1 ′ ) (10) L^{k+1}_{pho} = λ_sL^{SSIM}(I_{k+1}, I_{k+1}^′ ) + (1 − λ_s)L^{l_1}(I_{k+1}, I_{k+1}^′)\tag{10} Lphok+1=λsLSSIM(Ik+1,Ik+1)+(1λs)Ll1(Ik+1,Ik+1)(10)

3D 几何配准损失:3D几何配准损失是通过对齐两个点云来估计变换,类似于迭代最近点(ICP)技术。假设 P k ( x , y , z ) P_k(x, y, z) Pk(x,y,z) 是第 k 个相机坐标中的一个点。然后可以使用 T k , k + 1 T_{k,k+1} Tk,k+1 将其转换为第 ( k + 1 ) (k + 1) (k+1) 个相机坐标为 P k ′ ( x , y , z ) P_k^′(x, y, z) Pk(x,y,z)。类似地,第 ( k + 1 ) (k+1) (k+1) 帧中的点可以变换到第 k k k 帧。然后,两个单目图像之间的 3D 几何配准损失为
L g e o k = L l 1 ( P k , P k ′ ) (11) L^k_{geo} = L^{l_1}(P_k, P_k^′)\tag{11} Lgeok=Ll1(Pk,Pk)(11)

L g e o k + 1 = L l 1 ( P k + 1 , P k + 1 ′ ) (12) L^{k+1}_{geo} = L^{l_1}(P_{k+1}, P_{k+1}^′)\tag{12} Lgeok+1=Ll1(Pk+1,Pk+1)(12)

系统的最终损失函数将之前的空间和时间损失结合在一起。UnDeepVO 是第一个通过受益于所有这些损失以及 3D 几何配准和姿势一致性损失来恢复缩放的相机姿势和深度图的。


4. Experimental Evaluation

Adam 优化器用于训练网络长达 20-30 个时期,参数 β 1 = 0.9 β_1 = 0.9 β1=0.9 β 2 = 0.99 β_2 = 0.99 β2=0.99。学习率从0.001开始,每迭代1/5就减少一半。

  • 馈送到位姿估计器的图像序列长度为 2。输入到网络的图像大小为 416 × 128。
  • 还将输出图像的大小调整为更高分辨率以计算损失并最终微调网络
  • 使用不同类型的数据增强方法来增强性能并减轻可能的过度拟合,像颜色增强、旋转数据增强和左右姿态估计增强
    • 机选择 20% 的图像进行颜色增强,其中随机亮度范围为 [0.9, 1.1],随机伽玛范围为 [0.9, 1.1],随机颜色偏移范围为 [0.9, 1.1]
    • 对于旋转数据增强,我们增加了旋转数据的比例,以在旋转估计中获得更好的性能
4.1 轨迹评估

采用流行的 KITTI Odometry Dataset 来评估所提出的 UnDeepVO 系统,并将结果与 SfMLearner 、单目 VISO2-M 和 ORB-SLAM-M(无回环)进行比较。所有方法都采用单目图像进行测试,并且我们对 SfMLearner 和 ORB-SLAM-M 的尺度进行后处理,因为它们无法恢复姿态和深度的尺度

Fig. 4 序列 02、05、07 和 08 的轨迹。SfMLearner 的结果通过 7-DoF 对齐到地面实况进行后处理,因为它无法恢复比例。 UnDeepVO 和 SfMLearner 使用尺寸为 416×128 的图像。 VISO2-M使用的图像为1242×376

UnDeepVO 的轨迹在所有方法中在质量上最接近真实情况。对于序列11-21,没有可用的真实数据

Fig. 5 使用 UnDeepVO 绘制 KITTI 数据集的轨迹。这些序列没有可用的姿势的基本事实。绘制了单目 VISO2-M 和立体 VISO2-S 的轨迹。我们的 UnDeepVO 在这些序列上效果很好,与 VISO2-S 相当。

Tab. 1 VO 结果与我们提出的 UnDeepVO 一致。表中列出的所有方法均未使用循环闭合。请注意,单目 VISO2-M 和 ORB-SLAM-M(无回环)不适用于图像尺寸 416 × 128,结果是在图像尺寸 1242 × 376 下获得的。 SfMLearner 和 ORB-SLAM-M 采用与地面实况的 7-DoF(6-DoF + 比例)对齐

  • t r e l t_{rel} trel:100m-800m 长度上的平均平移 RMSE 漂移 (%)
  • r r e l r_{rel} rrel:100m-800m 长度上的平均旋转RMSE 漂移(°/100m)

如表一所示,即使在低分辨率图像且没有尺度后处理的情况下,我们的方法也能在单目方法中实现良好的姿态估计性能

4.2 深度估计评估

Fig. 6 深度估计器生成的深度图像。左列是原始 RGB 图像,右列是估计的相应深度图像。

Tab. 2 使用 Eigen 等人的 split 在 KITTI 上的深度估计结果

本文的方法优于一些有监督/无监督方法的,但性能不如某些方法。这可能是由几个原因造成的。首先,我们仅使用部分 KITTI 数据集(KITTI odometry dataset)进行训练,而所有其他方法都使用完整的 KITTI 数据集来训练其网络;其次,其他网络使用的图像有更高的分辨率


5. Conclusions

  • 提出了 UnDeepVO,一种具有无监督深度学习的新型单目 VO 系统。该系统利用立体图像序列之间的空间损失和时间损失进行无监督训练
  • 系统在训练阶段恢复尺度,这与其他基于模型或基于学习的单目 VO 方法不同。一般来说,基于无监督学习的 VO 方法有可能随着训练数据集大小的增加而提高其性能
  • 下一步,将研究如何使用大量数据集训练 UnDeepVO 以提高其性能,例如对图像模糊、相机参数或光照变化的鲁棒性。未来,我们还计划将我们的系统扩展到视觉SLAM系统以减少漂移

这篇关于UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning 论文阅读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799093

相关文章

Visual Studio中,MSBUild版本问题

假如项目规定了MSBUild版本,那么在安装完Visual Studio后,假如带的MSBUild版本与项目要求的版本不符合要求,那么可以把需要的MSBUild添加到系统中,然后即可使用。步骤如下:            假如项目需要使用V12的MSBUild,而安装的Visual Studio带的MSBUild版本为V14。 ①到MSDN下载V12 MSBUild包,把V12包解压到目录(

Deep Learning复习笔记0

Key Concept: Embedding: learned dense, continuous, low-dimensional representations of object 【将难以表示的对象(如图片,文本等)用连续的低维度的方式表示】 RNN: Recurrent Neural Network -> for processing sequential data (time se

ssh在本地虚拟机中的应用——解决虚拟机中编写和阅读代码不方便问题的一个小技巧

虚拟机中编程小技巧分享——ssh的使用 事情的起因是这样的:前几天一位工程师过来我这边,他看到我在主机和虚拟机运行了两个vscode环境,不经意间提了句:“这么艰苦的环境写代码啊”。 后来我一想:确实。 我长时间以来都是直接在虚拟机里写的代码,但是毕竟是虚拟机嘛,有时候编辑器没那么流畅,在文件比较多的时候跳转很麻烦,容易卡住。因此,我当晚简单思考了一下,想到了一个可行的解决方法——即用ssh

康奈尔大学之论文审稿模型Reviewer2及我司七月对其的实现(含PeerRead)

前言 自从我司于23年7月开始涉足论文审稿领域之后「截止到24年6月份,我司的七月论文审稿GPT已经迭代到了第五版,详见此文的8.1 七月论文审稿GPT(从第1版到第5版)」,在业界的影响力越来越大,所以身边朋友如发现业界有相似的工作,一般都会第一时间发给我,比如本部分要介绍的康奈尔大学的reviewer2 当然,我自己也会各种看类似工作的论文,毕竟同行之间的工作一定会互相借鉴的,我们会学他们

芯片后端之 PT 使用 report_timing 产生报告如何阅读

今天,就PT常用的命令,做一个介绍,希望对大家以后的工作,起到帮助作用。 在PrimeTime中,使用report_timing -delay max命令生成此报告。switch -delay max表示定时报告用于设置(这是默认值)。 首先,我们整体看一下通过report_timing 运行之后,报告产生的整体样式。 pt_shell> report_timing -from start_

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)

文章目录 一、文章概览(一)问题的提出(二)文章工作 二、理论背景(一)密度比估计DRE(二)去噪扩散模型 三、方法(一)推导分类和去噪之间的关系(二)组合训练方法(三)一步精确的似然计算 四、实验(一)使用两种损失对于实现最佳分类器的重要性(二)去噪结果、图像质量和负对数似然 论文:Classification Diffusion Models: Revitalizing

【python】python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】 目录 python葡

论文阅读--Efficient Hybrid Zoom using Camera Fusion on Mobile Phones

这是谷歌影像团队 2023 年发表在 Siggraph Asia 上的一篇文章,主要介绍的是利用多摄融合的思路进行变焦。 单反相机因为卓越的硬件性能,可以非常方便的实现光学变焦。不过目前的智能手机,受制于物理空间的限制,还不能做到像单反一样的光学变焦。目前主流的智能手机,都是采用多摄的设计,一般来说一个主摄搭配一个长焦,为了实现主摄与长焦之间的变焦,目前都是采用数字变焦的方式,数字变焦相比于光学

【LLM之KG】CoK论文阅读笔记

研究背景 大规模语言模型(LLMs)在许多自然语言处理(NLP)任务中取得了显著进展,特别是在零样本/少样本学习(In-Context Learning, ICL)方面。ICL不需要更新模型参数,只需利用几个标注示例就可以生成预测。然而,现有的ICL和链式思维(Chain-of-Thought, CoT)方法在复杂推理任务上仍存在生成的推理链常常伴随错误的问题,导致不真实和不可靠的推理结果。

【python】python基于akshare企业财务数据对比分析可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设计思路三、可视化分析 一、设计要求 选取中铁和贵州茅