经典文献阅读之--FlowFormer(Transformer结构光流估计)

news2025/4/5 18:53:45

0. 简介

对于视觉SLAM而言,除了使用特征点法来完成VIO以外,还可以使用光流法来完成VIO的估计。而传统的光流法受环境,光照变化严重,所以有时候会出现光流偏差等问题。所以现在有越来越多的工作朝着深度学习的方向扩展,比如说这一篇文章《FlowFormer: A Transformer Architecture for Optical Flow》,目前已经被ECCV 2022收录。这里作者也在Github上开源了该项目的代码:https://github.com/drinkingcoder/FlowFormer-Official。FlowFormer的整个流程如下:首先由图像对构建4D cost volume成本编码,将成本编码到一个新的潜在空间中具有交替组转换器(AGT)层的成本内存中,并通过一个带有动态位置成本查询的循环Transform解码器对位置 cost queries进行解码。

ECCV2022 | FlowFormer: 一种基于transformer架构的光流!性能SOTA

1. 文章贡献

作为一种基于Transformer的神经网络架构,主要目的是通过深度学习直接输出光流的图像。文中指出贡献可以概括为四个方面:

  1. 我们提出了一种新的基于Transform的神经网络结构FlowFormer,用于光流量估计,它实现了最先进的流量估计性能。

  2. 设计了一种新颖的cost volume编码器,有效地将成本信息聚合为紧凑的潜在cost tokens。

  3. 我们提出了一种循环成本解码器,该解码器通过动态位置成本查询循环解码成本特征,迭代细化估计光流。

  4. 据我们所知,我们第一次验证imagenet预先训练的传输

2. 详细内容

下面我们将对原文的第三部分进行解析,并分析这篇文章的重点部分。首先我们需要明白光流的估计任务需要输出每像素位移场 f : R 2 → R 2 \mathbf{f}:\mathbb{R}^2 \rightarrow \mathbb{R}^2 f:R2R2。这样的目的是为了充分将源图像 x ∈ R 2 x \in \mathbb{R}^2 xR2的二维空间中的位置 I s \mathbf{I}_s Is,映射到目标图像的 I t \mathbf{I}_t It位置。具体的转换关系如下 p = x + f ( x ) \mathbf{p}=x+\mathbf{f}(x) p=x+f(x)。同时为了充分使用现有的视觉Transformer的方法以及之前基于CNN架构的光流估计方法中广泛使用的4D成本量(cost volume)。所以作者团队使用Transformer来对4D成本量进行编码和解码以实现精确的光流估计。下图就是整个FlowFormer的总体架构。它通过两个主要部分处理来自siamese特征的4D成本量。1)成本体积(cost volume)编码器,将4D成本量编码到一个潜在的空间,形成成本记忆(cost memory);2)成本记忆解码器,根据编码的成本记忆和上下文特征预测每像素的位移场。
在这里插入图片描述
我们下面来详细的看一看这三个部分

2.1 构建4D成本量

骨干网用于从输入 H I × W I × 3 H_I × W_I × 3 HI×WI×3的RGB图像中提取出 H × W × D f H ×W ×D_f H×W×Df特征图,通常我们设置 ( H , W ) = ( H I / 8 , W I / 8 ) (H, W) = (H_I /8, W_I /8) (H,W)=(HI/8,WI/8)。在提取出源图像和目标图像的特征图后,通过计算源图像和目标图像之间所有像素对的点积相似度,构造 H × W × H × W H × W × H × W H×W×H×W的4D成本量。

2.2 4D成本量解码

为了估计光流,文中需要根据4D成本量中编码的源视觉和目标视觉相似性来识别源像素在目标图像中的相应位置。构建的4D成本量可以看作是一系列大小为 H × W H×W H×W的2D成本图,每个成本图测量单个源像素和所有目标像素之间的视觉相似性。我们将源像素x的成本图表示为 M x ∈ R H × W \mathbf{M}_x∈\mathbb{R}^{H×W} MxRH×W。在此类成本图中找到相应位置通常是一项挑战,因为在两幅图像中可能存在重复模式和非区分区域。当仅考虑地图局部窗口的成本时,这项任务变得更具挑战性,就像以前基于CNN的光流估计方法所做的那样。即使在估计单个源像素的精确位移时,考虑其上下文源像素的成本图也是有益的。

为了解决这一难题,我们提出了一种基于Transformer的成本体积编码器,该编码器将整个成本体积编码到成本内存中。我们的成本卷编码器包括三个步骤:1)成本映射补丁化,2)成本补丁嵌入,3)成本内存编码。我们详细阐述这三个步骤如下。

  1. 成本映射补丁化:根据现有的视觉变换器,我们修补了成本图 M x ∈ R H × W \mathbf{M}_x∈\mathbb{R}^{H×W} MxRH×W对于每个源像素 x x x的跨步卷积,从而获得成本补丁嵌入序列。具体来说,给定一个 H × W H×W H×W成本图,我们首先在其右侧和底部填充零,使其宽度和高度乘数为8。然后,填充的成本图通过三个步长为2卷积的堆栈和ReLU转换为特征映射 F x ∈ R [ H / 8 ] × [ W / 8 ] × D p \mathbf{F}_x∈\mathbb{R}^{[H/8]×[W/8]×D_p} FxR[H/8]×[W/8]×Dp。特征图中的每个特征代表输入成本图中的一个 8 × 8 8×8 8×8的补丁。三种卷积的输出通道均为 D p / 4 , D p / 2 D_p / 4, D_p / 2 Dp/4,Dp/2 以及 D p D_p Dp

  2. 基于潜在汇总(latent summarizations)的补丁特征标记:尽管拼接会为每个源像素生成一系列代价高昂的补丁特征向量,但此类补丁特征的数量仍然很大,阻碍了不同源像素之间的信息传播效率。实际上,成本图是高度冗余的,因为只有少数高代价成本才是最有用的。为了获得更紧凑的成本特征,我们通过 K K K个潜在编码(latent codewords query) C ∈ R K × D \mathbf{C}∈\mathbb{R}^{K×D} CRK×D,来进一步总结了每个源像素 x x x的补丁特征 F x \mathbf{F}_x Fx。具体来说,通过潜在编码来查询每个源像素的代价补丁特征,并通过点积注意机制将每个代价映射,进一步总结为一个 D D D维度的 K K K个潜在向量。潜在编码 C ∈ R K × D \mathbf{C}∈\mathbb{R}^{K×D} CRK×D是随机初始化的,并通过反向传播进行更新,且在所有源像素之间共享。归纳 F x F_x Fx的潜在表征 T x T_x Tx(4D cost volume)得到为:
    在这里插入图片描述
    在投影成本-补丁特征 F x F_x Fx以获取密钥 K x K_x Kx和值 V x V_x Vx之前,将补丁特征与位置嵌入序列 P E ∈ R [ H / 8 ] × [ W / 8 ] × D p \mathbf{PE}∈\mathbb{R}^{[H/8]×[W/8]×D_p} PER[H/8]×[W/8]×Dp进行拼接。给定一个2D位置 p \mathbf{p} p,我们将其编码为一个长度为 D p D_p Dp的位置嵌入,并使用COTR方法。最后,通过对查询、键和值进行多头点积注意,可以将源像素 x x x的代价图汇总为 K K K个潜在表示 T x ∈ R K × D \mathbf{T}_x∈\mathbb{R}^{K×D} TxRK×D一般来说 K × D ≪ H × W K×D≪ H×W K×DH×W的大小,并且潜在汇总 T x T_x Tx为每个源像素 x x x提供了比每个 H × W H×W H×W成本图更紧凑的表示。对于图像中的所有源像素,总共有 ( H × W ) 2 D (H×W)2D H×W2D成本图。因此,它们的汇总表示可以转换为潜在的4D成本量 T ∈ R H × W × K × D \mathbf{T}∈\mathbb{R}^{H×W×K×D} TRH×W×K×D

  3. 关注潜在cost空间:上述两个阶段将原始的4D成本体积转化为潜在的、紧凑的4D成本体积t。但是,直接对4D体积中的所有向量应用自注意仍然过于昂贵,因为计算成本随tokens数量的增加呈二次增长。如图2所示,我们提出了一种交替分组转换层(AGT),该层以两种相互正交的方式对标记进行分组,并在两组中交替应用注意,减少了注意成本,同时仍然能够在所有标记之间传播信息。
    在这里插入图片描述
    对每个源像素进行第一次分组,即每个 T x ∈ R K × D \mathbf{T}_x∈\mathbb{R}^{K×D} TxRK×D组成一个组,在每个组内进行自我注意力机制
    在这里插入图片描述
    其中, T x ( i ) T_x(i) Tx(i)表示编码源像素 x x x的成本图的第 i i i个潜在表示。在对每个源像素 x x x的所有 K K K个潜在标记进行自我注意力机制后,更新 T x T_x Tx并通过前馈网络(FFN)进一步变换,然后重新组织,形成更新的4D成本量 T T T。自我注意力机制和FFN子层都采用Transformer残差连接和层归一化的共同设计。这种自我注意力机制可以在每个成本图中传播信息,我们将其命名为内部代价图的自我注意力。

    第二种方法将所有潜在成本标记 T ∈ R H × W × K × D \mathbf{T}∈\mathbb{R}^{H×W×K×D} TRH×W×K×D根据 K K K个不同潜在表征分为 K K K组。因此,每组都有 D D D维的 ( H × W ) (H×W) (H×W)标记,用于通过Twins文章中提出的空间可分离的自我注意(SS-SelfAttention)在空间域中传播信息。
    在这里插入图片描述

    上述自我注意操作的参数在不同组之间共享,并按顺序进行操作,形成提出的交替组注意层。通过多次叠加交替组Transformer层,潜在成本令牌可以有效地跨源像素和跨潜在表示交换信息,以更好地编码4D成本体积。通过这种方式,我们的成本体积编码器将 H × W × H × W H × W × H × W H×W×H×W 4D成本体积转换为 H × W × K H × W × K H×W×K且长度为 D D D的潜在标记。我们将最终的 H × W × K H × W × K H×W×K标记称为成本存储器,用于光流的解码模块。

2.3 用于光流估计的成本记忆解码器

…详情请参照古月居

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

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

相关文章

卷积神经网络中的Conv层和BN层融合细节

BN层 批归一化层(Batch Normallization)是一种在卷积神经网络模型中大量使用,为了加速模型收敛的技术。为什么CNN 中引入 BN 层可以加速网络的收敛呢?因为将输入的样本数据或特征图,归一化后,改善了输入数…

智云通CRM:如何在初次见面识别客户机会?

有一次,我给一家公司做CRM系统培训之后,他们公司的老总请我吃饭。那是我们第一次见面,在饭桌上,我和他聊天,说:“洛老师,你们的CRM系统功能真的很不错,帮我我解决了很多销售管理上的…

设计模式面试题 一

第一题:阐述设计模式的责任链? 责任链模式定义: 使多个对象都有机会处理请求,从而避免请求的发送 者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一 个对象处理它为止。 …

Ruoyi-Cloud框架学习-【03 后端启动 + 前端启动】

打开运行基础模块(启动没有先后顺序) 记得在后台先启动Redis,不然会报错 RuoYiGatewayApplication (网关模块 必须) : 即前端所有访问需要通过网关而不是直接访问具体接口、网关会对后台的微服务进行转发 RuoYiAuth…

虹科回顾 | 虹科云科技2022年深度好文

2022年,我们一起学习了很多技术文章、优秀案例 我们的关键词是 数据库、BI、文件存储、高性能计算、数据管理、IT 下面一起来回顾虹科云科技过去一年的深度好文吧! 2022虹科云科技深度好文回顾 点击文字均可跳转到相关文章 数据库系列 ● 虹科产品 | 一文详解…

springboot1

让我们快速构建项目并且运行,他就是搭建程序的脚手架 尽可能减少一切xml的相关配置 快速创建一个spring boot的启动项目 在pom.xml中导入父类的启动器 引入父类的依赖 下面我们写一个web的启动器 这个启动器导入了之后 整个web项目需要的依赖也就导入了 并且把版…

【MIUI刷机】旧机降级记录

欢迎来到 Claffic 的博客 💞💞💞 前言: 小米MAX2是我的第一部小米手机,这款发布于2017年5月25日的小米手机已伴随我5年了,现在再次拿起这部手机,依然能勾起我对当时手机圈的记忆。 当时的我对手…

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-群集方案

群集方案 群集介绍 在大规模的外呼或者呼入系统,比如整个系统需要1万并发,单机最高也就3000-5000并发,这时候就需要多机群集了。顶顶通呼叫中心中间件使用redis数据库,多个FreeSWITCH(mod_cti)连接同一个redis就可以很容易的配置…

基于乾元通多卡聚合智能通信系统的典型应用场景分析

紧急事态处置 城市公共安全包含自然灾害事故灾难、公共卫生事件、社会安全事件、事故灾难,在城镇化快速发展的今天,作为维护公共安全的职能部门,带来了新的挑战。 乾元通科技使用多径混传、多路聚合技术,开发出的智能融合通信设备…

五款非常轻便的实用小工具

大伙们,开工大吉! 1.系统清理——WiseCare365 WiseCare365是由WiseCleaner开发的一款用来管理,维护,配置以及解决电脑故障的适用于Windows操作系统的电脑的免费软件。其实Wise Care 365就是把这个公司之前推出的所有优化工具整合…

Redmi GPro游戏本升级系统失败无法启动怎么办?

Redmi GPro游戏本升级系统失败无法启动怎么办?有用户使用Redmi GPro电脑去进行电脑系统的升级时,出现了系统升级错误。在电脑关机重新启动之后,电脑出现了蓝屏的情况。那么遇到这个问题要怎么去进行解决呢?来看看具体的解决方法吧…

美颜滤镜sdk常用的图形处理算法、代码分析

美颜滤镜sdk目前在视频、图文社交平台中的使用率是非常高的,特别是短视频平台和直播平台。今天小编就为大家讲解一下美颜滤镜sdk经常用到的算法和代码。 一、预处理算法、检测算法 在采集完图像后,首先会对图像进行预处理操作。保证图像的对比度清晰&…

c:out标签怎么是使用?

在JSP页面中&#xff0c;最常见的操作就是向页面输出一段文本信息&#xff0c;为此&#xff0c;Core标签库提供了一个<c:out>标签&#xff0c;该标签可以将一段文本内容或表达式的结果输出到客户端。如果<c:out>标签输出的文本内容中包含了需要进行转义的特殊字符&…

css字体、文本

无衬线字体(sans-serif) 特点: 1.文字笔画粗细均匀&#xff0c;并且首尾无装饰 2.场景:网页中大多采用无衬线字体 3.常见该系列字体:黑体、Arial3 衬线字体(serif) 特点: 1.文字笔画粗细不均&#xff0c;并且首尾有笔锋装饰 2.场景:报刊书籍中应用广泛 3.常见该系列字体:宋体、…

音视频处理

问题背景&#xff1a;h265格式的视频转码之后ios存在兼容问题 原转码命令&#xff1a; /usr/local/bin/ffmpeg -y -i /data/tmp/1672385812000-tks3wa.mp4 -vf scale720:1281 -r 30 /data/tmp/1672385812000-tks3wa_720.mp4 -hide_banner解决办法&#xff1a; // 原视频格式为…

可持久化线段树(主席树)详解(c++ 图片演示+ 代码)

文章目录可持久化线段树&#xff08;主席树&#xff09;建树前准备!初始化建树&#xff01;更新操作!区间查询!AC code可持久化线段树&#xff08;主席树&#xff09; 可持久化线段树指的是可持久化权值线段树&#xff0c;关于权值线段树可以看我这篇博客&#xff1a; 权值线…

Mininal BASH-like line editing is supported.

翻译&#xff1a;支持类似Mininal bash的行编辑。对于第一个单词&#xff0c;TAB列出了可能的命令补全。“其他任何地方”标签列出可能的设备或文件补全。原因分析&#xff1a;出现这个问题的原因是windows启动的时候&#xff0c;没有找到启动文件。&#xff08;我的电脑之所以…

每天一道大厂SQL题【Day01】

每天一道大厂SQL题【Day01】 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典题&#xff0c;以每日1题的形…

5.6 奇异值

对单位圆的乘法 首先我们在单位圆上遍历所有的点&#xff0c;作为二维向量&#xff0c;来研究某个矩阵乘以这些向量得到的结果&#xff0c;我们选三种矩阵&#xff0c;秩为0的矩阵&#xff0c;秩为1的矩阵和秩为2的矩阵。   秩为0的矩阵就一个&#xff0c;也就是0矩阵&#x…

【页面设计】02.CSS

CSS&#xff1a;Cascading Style Sheets 层叠样式表1.不是编程语言。2.告诉浏览器如何指定样式、布局等一、基本格式效果&#xff1a;二、三种方式添加CSS1.外部样式表&#xff08;1&#xff09;CSS保存在.css文件中&#xff08;2&#xff09;在HTML的<head>中使用<li…