【论文简述】GMFlow: Learning Optical Flow via Global Matching(CVPR 2022)

news2024/10/5 17:23:17

一、论文简述

1. 第一作者:Haofei Xu

2. 发表年份:2022

3. 发表期刊:CVPR oral

4. 关键词:光流、代价体、Transformers、全局匹配、注意力机制

5. 探索动机:过去几年中具有代表性的光流学习框架的核心估计方式没有太大本质区别,即利用卷积从局部相关性中回归光流。这种方式由于其内在的局部性,难以处理光流领域中长期存在的一个挑战:大运动的估计。为了缓解这一问题,当前的代表性框架 RAFT 利用大量的迭代改价来逐步提升光流的预测效果,但这种序列化的处理方式带来了线性的推理时间增长。

6. 工作目标:本文主要要验证这样一个假设:无需大量迭代,同样可以取得很好的光流估计效果,同时速度更快。

7. 核心思想:在本文中,将光流重新定义为一个全局匹配问题,即通过直接比较所有特征之间的相似度来得到稠密对应关系。这种问题定义依赖于较强的特征,为此利用了Transformer来实现。

  1. 重新审视了已有的光流估计方法。尽管很多不同的网络结构被提出,但它们没有太大本质区别,即利用卷积从局部相关性中回归光流,并指出了这种方式的局限性;

  2. 将光流重新定义为一个全局匹配的问题,彻底改造了主流光流回归管道,能够更好的处理大运动这一挑战。整体框架简洁有效,易于实现;

  3. 提出了一个GMFlow框架来实现全局匹配公式,该框架由三个主要部分组成:用于特征增强的Transformer层、用于全局特征匹配的correlation和softmax层以及用于光流传播的self attention层;

  4. 进一步提出了一个改进步骤来利用更高分辨率的特性,通过重用相同的GMFlow框架来处残差光流估计;

  5. 代码及模型已全部开源,方便复现及做进一步的拓展。

8. 实验结果:一般

GMFlow outperforms 31-refinements RAFT on the challenging Sintel benchmark, while using only one refinement and running faster, suggesting a new paradigm for accurate and efficient flow estimation.

 9.论文&代码下载:

https://github.com/haofeixu/gmflow

https://openaccess.thecvf.com/content/CVPR2022/papers/Xu_GMFlow_Learning_Optical_Flow_via_Global_Matching_CVPR_2022_paper.pdf

二、实现过程

1. 背景

近年来,深度学习在许多领域展现出了巨大的潜力,它的快速发展也使得直接从数据中学习光流成为可能。基于深度学习估计光流的开创性工作 FlowNet,设计了一个卷积神经网络架构可以直接将两张视频帧作为输入,并输出稠密的光流。基于学习方法的进一步发展使得光流估计的效果在稳固提升,同时很多不同的光流网络结构被提出。然而,如果我们仔细考量下各种不同的光流网络,可以发现,基本的光流估计方式与最早的 FlowNet 无太大本质区别,即利用卷积从局部相关性中回归光流。

这种方式由于其内在的局部性,难以处理光流领域中长期存在的一个挑战:大运动的估计。为了缓解这一问题,当前的代表性框架 RAFT 利用大量的迭代精细化来逐步提升光流的预测效果。可以用下图来抽象地表达 RAFT 框架:

相较之前的算法,RAFT 取得了巨大的性能提升,也由此获得了 ECCV 2020 的最佳论文奖。RAFT 也产生了广泛的影响力,在最近一两年中各种 RAFT 变体层出不穷。然而,尽管这种迭代框架的取得了出色的性能,但由于本质上是一种序列化的处理方式,它也带来了线性的推理时间增长,使其难以做速度上的优化。在本文研究一个问题:RAFT框架是否不可替代?是否有可能高效高精度地估计光流但不依赖于这种大量的迭代精细化?

首先参考下我们人类是如何完成找对应点这一任务的。如下图所示:

假设我们要在第二张图中找第一张图蓝色点的对应点,一般地,我们通常会浏览第二张图中的所有像素点,并比较这些点与蓝色点的相似度,最终将相似度最高的点作为对应点,即黄色点。这一观察启发我们重新审视光流这一任务的本质:光流究竟是一个回归问题还是匹配问题?

光流直观上是一个匹配问题,目的是寻找对应的像素。为了实现这一点,可以比较每个像素的特征相似性,并确定具有最高相似性的对应像素。这样的过程要求特征具有足够的辨别性。将图像本身的空间上下文和来自另一张图像的信息聚合在一起,可以直观地缓解歧义,提高其辨别性。这样的设计理念使得稀疏特征匹配框架取得了巨大的成就。我们还从另外一个相关任务中得到一些启发,即两张图像 (未必是视频帧) 之间的稀疏对应关系,往往用于运动恢复结构和相机位姿估计等应用。这个任务的特点是通常两张图片之间的视角差异较大。我们注意到在主流的稀疏框架中,对应点往往是通过匹配得到的。基于这些观察,我们提出将光流重新定义为一个全局匹配问题,以期能更好地解决大运动这一难题。

2. 方法

给定两个连续的视频帧I1I2,首先采用权重共享卷积网络提取稠密特征F1,F2∈H×W×D。然后通过全局相关性计算所有点与点之间的相关性,通过矩阵乘法现:

其中相关矩阵C中的每个元素表示F1中p1 = (i,j)和F2中p2=(k,l)的相关值,1/D为归一化因子,避免点积运算后值较大。

要确定对应关系,一种可行的方法是直接取相关性最高的位置。然而,这个操作是不可微的,阻碍了端到端训练。为了解决这个问题,我们使用了一个可微匹配层。具体来说,我们用softmax操作归一化C的最后两个维度,这给了我们一个匹配的概率分布:

F1中的每个位置相对于F2中的所有位置。然后,将像素网格G的二维坐标加权平均,得到对应的G∈H×W×2与匹配的分布M

最后,通过计算对应像素坐标的差值就可以得到光流V

这种基于softmax的方法不仅可以实现端到端训练,而且还可以提供亚像素精度。

3. 特征增强

公式的关键在于获得高质量的判别特征进行匹配。特征F1和F2是从权重共享卷积网络中独立提取的。为了进一步考虑它们的相互依赖性,一个自然的选择是Transformer,特别适合用注意力机制对两个集合之间的相互关系进行建模,如稀疏匹配方法。由于F1F2只是两组特征,它们没有空间位置的概念,首先将固定的二维正弦和余弦位置编码添加到特征中。加入位置信息后,匹配过程不仅考虑特征的相似性,还考虑特征之间的空间距离,有助于消除模糊,提高性能

在添加位置信息后,进行了六种叠加的自网络、交叉注意力网络和前馈网络(FFN)来提高初始特征的质量。具体来说,对于自注意力,注意力机制中的查询、键和值是相同的特征。对于交叉注意力,键和值相同但与查询不同,以引入它们的相互依赖关系。这个过程对F1和F2都是对称的,即:

其中T是Transformer,P是位置编码,T的第一个输入是查询,第二个输入是键和值。标准Transformer结构中的一个问题是由于成对注意力操作造成的二次计算复杂度。为了提高效率,采用了Swin Transformer的局部窗口注意力转移策略。然而,与Swin使用固定窗口大小不同的是,将特征分割为固定数量的局部窗口,以使窗口大小与特征大小相适应。具体来说,将大小为H × W的输入特征分割为K × K个窗口(每个窗口大小为H/K×K/W),并在每个局部窗口内分别进行自注意力和交叉注意力。对于每两个连续的局部窗口,我们将窗口分区移动(H/2K,W/2K)来引入跨窗口连接。在框架中,分成2×2个窗口(每个窗口的大小为H/2×W/2),实现了速度精度权衡

4. 光流传播

我们所提出的光流估计方式隐式地假设了对应点在两张图片中都可见,因此它们可以通过比较相似进行匹配。但是,这个假设对于遮挡的和边界外的像素点是无效的。为缓解这一问题,观察到光流和图像本身有一定的结构相似性,进而提出通过特征的自相似性将匹配区域的高质量光流估计结果传播到未匹配区域。这个操作可以通过一个简单的自注意力层实现:

 其中

softmax层的光流预测,是将增强的特征代入softmax匹配层得到的。下图为GMFlow概述。

首先用权重共享卷积网络从两个输入视频帧中提取8×下采样的密集特征。然后将特征输入到Transformer中进行特征增强。接下来,我们通过计算所有对的特征来比较特征相似性,并使用softmax匹配层获得光流。考虑特征自相似性,引入一个额外的自注意力层,将匹配像素的高质量光流预测传播到未匹配像素。

5. 改进

到目前为止提出的框架(基于1/8特征)已经可以实现具有竞争力的性能。通过引入额外的更高分辨率(1/4)特征可以进一步改进。具体来说,首先将之前的1/8光流预测上采样到1/4分辨率,并用当前光流预测形变第二个特征。然后,改进任务被简化为残差光流学习,可以使用上图所示的相同GMFlow框架,但在局部范围内。具体来说,我们在Transformer中分割为8×8个局部窗口(每个窗口的分辨率为原始图像的1/32),并为每个像素执行9×9个局部窗口匹配。在获得softmax层的光流预测后,我们进行3×3局部窗口自注意力操作用于光流传播。

在改进步骤中与全局匹配阶段共享Transformer自注意力权重,这不仅减少了参数,而且提高了泛化性。生成1/41/8的特征,也共享主干特征。具体来说,采用与TridentNet类似的方法,但分别使用步长为1和步长为2的权重共享卷积。这种权重共享设计也比特征金字塔网络具有更好的性能。

6. 训练损失

使用L1损失监督所有光流预测:

其中N是光流预测的数量,包括中间和最终的预测,γ(设置为0.9)是指数级增加的权重

7. 训练损失

7.1. 数据集

FlyingThings、Sintel、KITTI-2015、HD1K

7.2. 实现

通过PyTorch实现。训练策略延续RAFT。对于GMA,选择通道尺寸Din = Dc = Dm = 128。

7.3. 方法论比较

本文首先将所提出的基于 Transformer 和全局匹配的光流估计方法与之前的基于局部相关性和卷积的方法进行比较。我们堆叠不同数量的卷积残差块或者 Transformer 块来观察性能的变化,结果如下表:

相较之前的方法,本文所提出的框架取得了明显的性能提升,尤其是在大运动 (s40+),验证了方法的有效性。此外,该方法还简化了反向光流的计算:通过直接转置全局相关性矩阵即可,而无需过两次网络。双向光流可以通过前后一致性检验用来检测遮挡。

7.4. 消融实验

为了探究方法有效的原因,对框架中的不同模块进行了对比实验。首先是 Transformer 的各个组件,可以看出,cross-attention 帮助最大,这是因为从 CNN 提取的初始特征中缺乏特征间相互依赖关系的建模,cross-attention 机制可以很好地弥补这一点。Transformer 的其他组件对性能也有帮助。

进一步比较了全局匹配与局部匹配的差异。对大运动 (s40+) 而言,全局匹配比局部匹配具有相当明显的优势,同时可以利用一个简单的矩阵乘法快速计算得到。

7.5. 和RAFT比较

RAFT 进行一个系统级别的比较。GMFlow框架只需一次改进,即可超过RAFT 31次精细化的结果,同时速度更快。

具体数值结果如下表:

还比较了在V100和A100(括号中的数字)上的推理时间。在高端A100 GPU上,由于不需要大量的迭代改进,GMFlow 有更多的速度增益 (2.29x vs.1.87x RAFT),这也说明了GMFlow更加受益于硬件性能的提升,同时未来具有进一步速度优化的潜力。

在Sintel测试集上和之前工作也做了比较,GMFlow同样展现出优异的性能:

参考

https://zhuanlan.zhihu.com/p/532681825icon-default.png?t=N176https://zhuanlan.zhihu.com/p/532681825

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

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

相关文章

Java文件IO及其案例分析

目录 1. 文件概述 1.1 狭义和广义上的文件 1.2 文件的路径 1.3 文件的类型 2. 针对文件系统的操作 3. 针对文件内容的操作(文件的读和写) 3.1 IO流对象 3.2 文件的读操作(字节流) 3.3 文件的写操作(字节流&#…

内存取证常见例题思路方法-volatility (没有最全 只有更全)

目录 1.从内存文件中获取到用户hacker 的密码并且破解密码,将破解后的密码作为 Flag值提交; 2.获取当前系统的主机名,将主机名作为Flag值提交; 3.获取当前系统浏览器搜索过的关键词,作为Flag提交; 4.获取当前内存文件的 ip地址 5.当前系…

pycharm和navigator打开时出现报错,无法正常打开

1、navigator打开时出现提示: 原因是:python.exe有多个任务在占用。 解决办法: (1)打开cmd (2)输入:tasklist | findstr “pythonw” (3)有几个线程就kill几个…

qt qchart学习

Qt Charts主要由QChartView、QChart、QLegend图例、坐标轴(由QAbstractAxis子类实现)、**数据源(由QAbstractSeries子类实现)**等组成使用QChart的前期准备1. Qt5.9及以上版本;2. .pro文件中添加QT charts3. 在使用QChart的各个控件之前,引用头文件并必…

【前缀和】和为k的子数组 路径总和 III

文章目录和为k的子数组路径总和 III和为k的子数组 动态规划算法&#xff08;超时&#xff09; class Solution { public:int subarraySum(vector<int>& nums, int k) {int n nums.size();vector<vector<int>> dp(n, vector<int>(n, 0));int ans …

b2b b2c o2o分布式电子商务平台源码 mybatis+spring cloud

鸿鹄云商大型企业分布式互联网电子商务平台&#xff0c;推出PC微信APP云服务的云商平台系统&#xff0c;其中包括B2B、B2C、C2C、O2O、新零售、直播电商等子平台。 分布式、微服务、云架构电子商务平台 java b2b2c o2o 技术解决方案 开发语言&#xff1a; java、j2ee 数据库&am…

注解@Transactional 原理和常见的坑

这篇文章&#xff0c;会先讲述 Transactional 的 4 种不生效的 Case&#xff0c;然后再通过源码解读&#xff0c;分析 Transactional 的执行原理&#xff0c;以及部分 Case 不生效的真正原因1 项目准备下面是 DB 数据和 DB 操作接口&#xff1a;uidunameusex1张三女2陈恒男3楼仔…

百万医疗险是什么

一、百万医疗险是什么 从名字可以看出&#xff0c;这是一款医疗险。因为保额高&#xff0c;最高能报销百万&#xff0c;所以叫百万医疗险。 二、百万医疗险有什么用 可以报销被保险人因意外伤害和疾病导致的医疗费用 三、如何挑选 虽然高达几百万的保额&#xff0c;但保额却并非…

cas单点登录-自定义登录界面 / 自定义主题风格(三)

cas单点登录-自定义登录界面 / 自定义主题风格&#xff08;三&#xff09; 在前面的文章中&#xff0c;介绍了使用cas实现SSO单点登录&#xff0c;静态登录&#xff0c;使用mysql数据库登录。但是在登录时都是跳转到了同一个登录界面。 假设现在我有两个子站点app1.com&#x…

【Docker】初识Dcoker以及镜像操作(一)

目录 1.初识Docker 1.1.什么是Docker 1.1.1.应用部署的环境问题 1.1.2.Docker解决依赖兼容问题 1.1.3.Docker解决操作系统环境差异 1.1.4.小结 1.2.Docker和虚拟机的区别 1.3.Docker架构 1.3.1.镜像和容器 1.3.2.DockerHub 1.3.3.Docker架构 1.3.4.小结 1.4.安装D…

Three.js铅笔手绘效果实现

在这个教程中&#xff0c;我们将学习如何使用 Three.js 后处理创建铅笔手绘效果。 我们将完成创建自定义后处理渲染通道、在 WebGL 中实现边缘检测、将法线缓冲区重新渲染到渲染目标以及使用生成和导入的纹理调整最终结果的步骤。 这就是最终结果的样子&#xff0c;让我们开始…

NLP学习笔记(九) 分词(上)

大家好&#xff0c;我是半虹&#xff0c;这篇文章来讲分词算法 1 概述 分词是自然语言处理领域中的基础任务&#xff0c;是文本预处理的重要步骤 简单来说&#xff0c;就是将文本段落分解为基本语言单位&#xff0c;亦可称之为词元 ( token\text{token}token ) 按照粒度的不…

day50【代码随想录】动态规划之不同的子序列、两个字符串的删除操作、编辑距离

文章目录前言一、不同的子序列&#xff08;力扣115&#xff09;【hard】二、两个字符串的删除操作&#xff08;力扣583&#xff09;思路一思路二三、编辑距离&#xff08;力扣72&#xff09;【hard】前言 1、不同的子序列 2、两个字符串的删除操作 3、编辑距离 一、不同的子序…

网页扫描图像并以pdf格式上传到服务器端

本文描述如何通过网页驱动扫描仪、高拍仪等图像扫描设备进行图像扫描&#xff0c;扫描结果经编辑修改后以pdf压缩格式上传到后台java程序中进行服务器端落盘保存。图像扫描上传如文字描述顺序所介绍&#xff0c;先要驱动扫描设备工作&#xff0c;进行纸张数据的光学扫描操作形成…

Impacket工具使用

Impacket工具说明 Impacker是用户处理网络协议的Python类集合,用于对SAB1-3或IPv4/IPv6 上的TCP/UPD/ICMP/IGMP/ARP/IPv4/IPv6/SMB/MSRPC/NTLM/Kerberos/WMI/LDAP 等进行低级的编程访问,数据包可以从头开始构建,也可以从原始数据包中解析, 面向对象API使用处理协议的深层结构变…

Action Segmentation数据集介绍——Breakfast

文章目录简介细节Cooking actibitiesillustration of the actions论文讲解Breakfast&#xff08;The Breakfast Action Dataset&#xff09;简介 早餐动作数据集包括与早餐准备相关的10个动作&#xff0c;由18个不同厨房的52个不同的人执行。该数据集是最大的完全带注释的数据…

CCIE 350-401-实验全

实验 VRRP&#xff08;hello packettimes advertise&#xff09; This is a lab item in which tasks will be performed on virtual devices. Refer to the Tasks tab to view the tasks for this lab item.Refer to the Topology tab to access the device console(s) and p…

Spring Boot自动装配的原理

Spring Boot自动装配的原理自动装配的实现EnableAutoConfigurationAutoConfigurationImportSelectorSpring Boot中的自动装配&#xff0c;它是Starter的基础&#xff0c;也是Spring Boot的核心。那么什么叫自动装配呢&#xff1f;或者说什么叫装配呢&#xff1f; 简单来说&…

Vulnhub靶场----4、DC-4

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-4下载地址&#xff1a;https://download.vulnhub.com/dc/DC-4.zip kali&#xff1a;192.168.144.148 DC-4&#xff1a;192.168.144.152 二、渗透流程 端口扫描&#xff1a;nmap -T5 -p- -sV -sT -A 192.168.144.1…

ISIS协议

ISIS协议基础简介应用场景路由计算过程地址结构路由器分类邻居Hello报文邻居关系建立DIS及DIS与DR的类比链路状态信息的载体链路状态信息的交互路由算法网络分层路由域![在这里插入图片描述](https://img-blog.csdnimg.cn/9027c43b614a4399ae1f54e87a37f047.png)区域间路由简介…