基于transformer的多帧自监督深度估计 Multi-Frame Self-Supervised Depth with Transformers

news2025/1/29 14:00:38

Multi-Frame Self-Supervised Depth with Transformers

基于transformer的多帧自监督深度估计

在这里插入图片描述

0 Abstract

  多帧深度估计除了学习基于外观的特征外,也通过特征匹配利用图像之间的几何关系来改善单帧估计。我们采用深度离散的核极抽样来选择匹配像素,并通过一系列的自我和交叉注意力来细化预测,这构成了一种新的基于transformer的成本量。这种方式可以改善歧义和局部极小值的标准相似度。方法在KITTI和DDAD上进行测试,效果良好。

1 Introduction

  特征匹配是SFM的一个基本组成部分,其被广泛的用于深度估计、自我运动估计、光流和场景流等等。这些方法依靠特征匹配建立起图像之间的跨帧的对应关系,从而建立起一个视图到另一个视图的扭曲重投影损失,从而构建了自监督约束方式。虽然从训练的角度来说,自监督方式更具有挑战性,但是自监督方法可以利用大量未标记的数据,具有更广阔的使用范围。而目前的自监督方法已经超过了一些监督方法。
  单帧深度估计和多帧深度估计虽然在训练的时候都采用多帧输入,但是单帧自监督方法在测试的时候仅需要单帧输入,而多帧自监督在训练的时候需要多帧输入,这使得多帧方法在测试时多采用了时序信息和相邻帧之间的几何关系,在指标上多帧方法也普遍高于单帧方法。但是多帧方法很依赖特征匹配来构建帧间的对应关系,而缺乏纹理、重复、光度变化和动态对象会导致模糊和局部极小值。
  本文提出了一种改进自监督特征匹配的新框架,在目标和背景图像之间建立了一个成本量,采用可微的深度离散化核极采样,并提出了一种新的基于注意力机制来细化像素间的匹配概率,所得到的多帧成本量直接通过高响应窗口滤波直接转化为深度估计值。本文的贡献如下:

  • 提出了一种新的基于transformer框架,通过交叉和自我注意力结合深度离散化核极采样来改进多视图特征匹配。
  • 我们的特征匹配细化模块可以在数据集之间传输,具有良好的鲁棒性。
  • 指标较好,超过了部分监督单帧深度估计。(这个现在已经到0.95了哦)

2 Related work

  相关工作主要从自监督深度估计、多帧深度估计和深度估计中的注意力机制三个方面来讲。自监督深度估计最早由momo提出,采用视图合成方式建立了自监督深度估计的基本框架,并添加了一个位姿网络来预测相机的自我运动,自监督单目深度估计通过一些方法已经超过了一些监督算法。
  单幅图像的深度估计本质上是一个不适定问题,因为单幅2D图像可以对应无数3D图像,单帧网络在一些对抗中会失败(这里主要讲的是19年的一篇文章,这篇文章多mono进行了评判,目的在于探究深度估计网络是怎么进行深度信息获取的。方式是采用一些数据增强方式例如骑车位姿和尺度的缩放,相机的角度和汽车的边缘和底部,以此来看深度估计网络的效果,结论是深度估计网络更看重图像中物体的垂直位置,并以此来进行深度估计,How do neural networks
see depth in single images?很有意思的一篇论文),但多帧网络通过在测试时使用多幅图像来突破这一限制。

3 Method

在这里插入图片描述
  首先描述了单目深度估计的投影和重投影过程,接着讲交叉注意力成本量的构建,主要分为极线采样和交叉注意力匹配。第一个公式是采用空间离散化分配的一个深度信息,第二个公式是从目标帧到相邻帧的一个投影过程。
在这里插入图片描述
在这里插入图片描述
  随后采用交叉注意力机制来细化成本量,下图也可以看到采用了交叉注意力后,网络估计出的深度在预测值附近相对集中。
在这里插入图片描述
  本文与其他的不同点在于,其他多帧网络在计算成本量后会直接送入解码器进行深度解码,但本文提出了一个高响应的深度解码方式,通过一个自适应的窗口来将分配的深度转化为真实的深度。但是这样的深度缺乏上下文联系(交叉注意力成本量是在极线上进行回归的),所以采用了上下文调整层来细化深度值。本文采用了额外的单帧网络以用来补全成本量体积失败的地方,这个单帧网络采用共同的姿态预测网络,在评估的时候被丢弃。
在这里插入图片描述

4 Experiments

  KITTI结果。
在这里插入图片描述
  这篇文章的工作量我个人认为还是比较大的,实验也比较详细,涉及的点也比较多,从深度估计、立体匹配、极线采样、交叉注意力和自注意力等等,还添加了高响应的自适应深度方法以及上下文调整层等等。好久没读论文了,过起来还是比较吃力的。

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

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

相关文章

基于Jeecgboot前后端分离的ERP系统开发代码生成(六)

商品信息原先生成的不符合要求,重新生成,包括一个附表商品价格信息表 一、采用TAB主题一对多的模式 因为主键,在online表单配置是灰的,所以不能进行外键管理,只能通过下面数据库进行关联录入,否则online界面…

案例19-遇见问题的临时解决方案和最终解决方案

目录1、背景介绍2、两种解决方案的概念1、临时解决方案:2、最终解决方案:3、排查问题过程4、总结站在用户的角度思考作为软件开发者5、升华1、背景介绍 首先说明这是系统很早之前的时候的一个功能,当时和学习通还有很强的耦合关系。在学习通…

研究链表空间销毁问题

💯💯💯 1.研究链表空间销毁问题 当链表使用完后,需要将链表销毁,那么该如何销毁呢? void SLTDestroy(SLTNode* phead)//销毁单链表 {SLTNode* cur phead;while(cur){free(cur);cur cur->next;} }你…

Linux下Nginx安装使用

一、下载解压nginx # 进入要放安装包的目录 cd /opt/software # 下载安装包 wget https://nginx.org/download/nginx-1.20.2.tar.gz # 解压缩 tar -zxvf nginx-1.20.2.tar.gz -C /opt/modules # 进入解压后的目录 cd /opt/modules/nginx-1.20.2/二、安装nginx 1、安装编译器 …

剑指 Offer II 021. 删除链表的倒数第 n 个结点

题目链接 剑指 Offer II 021. 删除链表的倒数第 n 个结点 mid 题目描述 给定一个链表,删除链表的倒数第 n个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2: …

MySQL的多表操作

多表关系 介绍 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、 订单表(orders)等多张表。且这些表的数据之间存在一定的关系,接下来我们将在单表的基础上,一起学习…

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警

数据异常率预警在工业安全生产中是一项重要工作,对于监控生产过程的稳定性,保障生产数据的有效性,维护生产设备的可靠性具有重要意义。随着大数据技术在生产领域的深入应用,基于机器学习的智能预警已经成为各大生产企业进行生产数…

logback无法删除太久远的日志文件?logback删除日志文件源码分析

logback无法删除太久远的日志文件?logback删除日志文件源码分析 最近发现logback配置滚动日志,但是本地日志文件甚至还有2年前的日志文件,服务器是却是正常的! 网上搜索了一波没有发现,只找到说不能删除太久远的旧日志…

Leetcode. 21 合并两个有序列表

尾插 核心思路:依次比较 ,取经过比较后较小值进行尾插 cur1 指向list1 ,cur 2指向list2 ,当cur1走完list1 或者cur2 走完list2 后停止 如果cur1走完list1 ,可以将cur2 整个拿下来尾插 如果cur2走完list2 ,可以将cur1 整个拿下来尾插 特殊情况 &#xff1…

c# 32位程序突破2G内存限制

起因 在开发过程中,由于某些COM组件只能在32位程序下运行,程序不得不在X86平台下生成。而X86的32位程序默认内存大小被限制在2G。由于程序中可能存在大数量处理,期间对象若没有及时释放或则回收,内存占用达到了1.2G左右&#xff…

瀑布开发与敏捷开发的区别,以及从瀑布转型敏捷项目管理的5大注意事项

事实证明,瀑布开发管理模式并不适合所有的软件项目,但敏捷项目管理却对大多数项目有效。那么当团队选择转型敏捷的时候有哪些因素必须注意?敏捷开发最早使用者大多是小型、独立的团队,他们通常致力于小型、独立的项目。正是他们的…

Keepalive+LVS群集部署

KeepaliveLVS群集部署一、Keepalive概述1、什么是Keepalive2、Keepalive工作原理3、Keepalive主要模块及作用4、Keepalived 服务重要功能(1)管理 LVS 负载均衡软件(2)支持故障自动切换(3)实现 LVS 负载调度…

SpringBoot下的Spring框架学习(tedu)——day03——Spring DI、SpringAOP JDK动态代理

SpringBoot下的Spring框架学习(tedu)——day03——Spring DI、SpringAOP JDK动态代理 目录SpringBoot下的Spring框架学习(tedu)——day03——Spring DI、SpringAOP JDK动态代理1. Spring的依赖注入1.1 依赖注入案例1.1.1 定义接口…

Python的运算符

Python支持多种运算符,下表大致按照优先级从高到低的顺序列出了所有的运算符,运算符的优先级指的是多个运算符同时出现时,先做什么运算然后再做什么运算。除了我们之前已经用过的赋值运算符和算术运算符,我们稍后会陆续讲到其他运…

解决launch:program .exe does not exist

二. 程序的运行和调试 1.launch.json 复制下列代码至launch.json,并根据指导做出相对/绝对路径修改 用 IntelliSense 了解相关属性。 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.micros…

虹科教您 | 在Linux环境下安装PCAN View及通讯测试指南

应用简介 PCAN-View软件是一款简化的CAN监视软件,可用于显示、发送、和记录CAN数据通讯。报文可手动和定期发送,用户可设置比特率。在处理期间显示总线系统错误和CAN硬件的存储器过满。示踪功能可用于记录和保存CAN数据通讯。本文档的作用在于&#xff…

Python进阶-----面向对象8.0(反射---对象属性方法操作)

目录 前言: 反射 1.getattr() 函数 2.setattr() 函数 3.hasattr() 函数 4.delattr() 函数 前言: 众所周知,每一个实例化对象都是有实例化属性或者方法的,之前我们对实例化对象进行属性方法查询、删除或者添加都是直接去通过…

day27_css

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、CSS 零、 复习昨日 见代码 一 、引言 1.1CSS概念 ​ 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通…

MpAndroidChart3最强实践攻略

本篇主要总结下Android非常火爆的一个三方库MpAndroidChart的使用。可能在大多数情况下,我们很少会在Android端去开发图表。但如果说去做一些金融财经类、工厂类、大数据类等的app,那么绝对会用到MpAndroidChart。 一、前言 2018年,那年的我…

打包成JAR文件和WAR文件,到底有什么区别?

Spring Boot是一种基于Spring框架的快速开发应用程序的工具,可以轻松地构建可部署的独立应用程序。在使用Spring Boot时,你可能会注意到有两种不同的部署选项:打包成JAR文件和WAR文件。在这篇文章中,我们将深入探讨这两种部署选项…