【论文简述】Learning Optical Flow with Kernel Patch Attention(CVPR 2022)

news2024/9/27 9:22:42

 一、论文简述

1. 第一作者:Ao Luo

2. 发表年份:2022

3. 发表期刊:CVPR

4. 关键词:光流、局部注意力、空间关联、上下文关联

5. 探索动机:现有方法主要将光流估计视为特征匹配任务,即学习在特征空间中将相似度高的像素进行匹配。然而,运动理解相关任务的另一个重要组成部分--空间相似性(平滑度约束)被忽视了。

However, most contemporary works address the cross-image matching problem by learning and measuring feature similarities, overlooking another core component for motion understanding — the spatial relations which reveal the underlying affinities during motion.

6. 工作目标:明确地考虑特征相似性和空间关系将有助于建立一个强大的深度模型,可以在更高的层次上理解运动。

Using deep learning techniques to capture and model local relations is challenging.

  1. First, because the motion of object(s) appears locally in the visual scene, effectively capturing the local relations (affinities) is vital for motion analysis. However, common relation modeling approaches, such as non-local operations and graph reasoning, focus on solving the global or long-range dependencies. How to reasonably model the local relations is still under-explored.
  2. Second, the local relations should be end-to-end learnable, so as to best mine pairwise relationships described by the affinity value. Third, optical flow estimation is a per-pixel matching task, thus it is difficult to efficiently obtain the pixel-wise relations.
  3. Last but not the least, the designed module is expected to be easily plugged into contemporary optical flow architectures.

7. 核心思想:本文提出了基于块注意力的光流估计方法(Kernel Patch Attention, KPA),对特征图的每个局部块进行操作,通过显式地利用局部场景内容和空间关系信息来缓解由像素特征匹配困难造成的误差。

  • A fully-differentiable approach for explicitly conducting the smooth constraint. To the best of our knowledge, we are the first to explicitly handle the local relations for optical flow based on the context and spatial affinities. We present a kernel-based function to effectively mine local relations and use the mined information to infer the flow fields.
  • A novel operator for comprehensive optical flow estimation. We propose kernel patch attention (KPA) operator with a specific patch-based sliding window strategy, which is simple yet effective for reliable motion understanding.

8. 实验结果:通过实验验证该方法可以充分利用局部特征关联性进行更准确的运动分析,在标准光流估计数据集上达到 SOTA 效果。

State-of-the-art results on widely-used benchmarks. The fully-equipped KPA-Flow can reliable infer the optical flow in challenging scenes, which sets new records on both Sintel and KITTI benchmarks with limited extra computational cost.

9.论文&代码下载:

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

https://github.com/megvii-research/KPAFlow

二、实现过程

1. 方法

给定一对输入的连续图像,即源图像I1和目标图像I2,光流估计的任务是预测源图像I1和目标图像I2之间的密集位移场。基于深度学习的光流网络通常采用编码器-解码器管道,首先提取上下文特征fc和运动特征fm,然后基于这两个特征的组合,以循环/粗到细的方式进行光流预测。

本文提出核块注意力(KPA),并将其插入到特征融合过程中,其表述为fm= FKPA (fc,fm)。具体而言,KPA算子明确地考虑了场景上下文和空间密切性,并利用学习到的特征相关更好地推断光流场。在运动特征改进后,上下文和更新的运动特征被输入到解码器模块中,进行几次残差光流估计。

2. 光流的核块注意力

KPA-Flow结构如图。基于RAFT以循环优化方案开发的模型。“C”表示连接,“×”表示乘法。“CV”表示4D相关体。Dec表示光流解码过程。具体来说,给定一个输入图像对(I1,I2),首先使用两个基于基于6个残差块构建的编码器来提取特征对(f1,f2),上下文编码器与运动编码器共享相同的结构,提取特征fc,输出特征映射的通道维数设置为256。然后,建立4个尺度的4D相关体。基于预定义的搜索窗口,通过在分割的匹配代价上应用运动编码器来获得运动特征fm

在残差更新方案中,利用运动编码器从匹配代价中获取运动特征fm。上下文特征和运动特征的通道C均设置为128,空间维度为输入形状的1/8。然后将上下文和运动特征输入到所提出的KPA算子中进行特征改进。设置循环迭代N = 12进行训练。

2.1. 基于核函数的定义

基于编码器网络提取的Fcc×h×w中的上下文特征fcFmc×h×w中的运动特征fm,设计KPA从场景上下文中提取特征相关,并将挖掘出的相关作为平滑约束来指导运动特征的学习。具体来说,受图像卷积和点卷积的启发,将KPA表述为基于核的算子,一般为:

其中xi表示x周围邻域Nx(也称为核窗口)在二维网格空间中的位置iK(xi−x)(·)是以相邻点作为输入的核函数,ρ(·)是将输入运动特征映射到嵌入空间的线性投影。~fc表示Nx的中心块窗口中的上下文特征。从注意力机制来看,使用~fc生成查询向量,对应的键和值向量可以从Nxfcfm嵌入。

核函数是KPA中的核心组件,通常可以定义为:

其中ti = xi−x, x^n表示核区域n位置的坐标。然后,S(ti,x^n)表示尺度函数,它根据网格空间中tix^n之间的欧氏距离生成尺度图。权函数W(ti)(~fc,fc)用于生成核权重。

类似于广泛使用的二维卷积核,设计W(ti)(·)ti的每个位置提供不同的权值。然而,与仅仅定义一个可学习矩阵Wi的图像卷积核不同,本文进一步考虑了核区域的上下文关系。具体地说,给定上下文特性~fcfc,使用归一化的嵌入高斯函数来测量它们之间所有对之间的相关性,可以表示为:

其中θ(f)=Wθfφ(f)=Wφf是两个线性投影,用于进行特征嵌入。生成的自适应权重的维数为N×K,其中N=h×w表示整个特征图的像素级空间维数,K=K×K表示核窗口的大小。

核函数的另一个分量是尺度函数S(ti,x^n)。在图像卷积中,对于核中的所有位置,标量都简单地设置为1。一个原因是W(ti)(·)的可学习权重可以被训练成适合进行加权和,它固有地包含了所有点的尺度平衡。此外,VGGResNet等广泛使用的网络通常倾向于堆栈几个卷积,其核大小为1×13×3,因此tix^n之间的距离应该很小,不能提供额外的独特信息。相反,单个KPA操作符能够获得一个大的感受野,以覆盖实例级别的信息。因此,它应该配备一个基于tix^n之间距离的比例因子掩码,以满足空间限制。具体来说,采用线性相关,将尺度函数表示为:

其中k表示核窗口的大小,l是基本标量,a是一个可学习的参数,表示点距离的影响。该函数生成一个标量图,其中每个点的值与欧几里得距离||ti−x^n||成反比。

2.2. 滑动窗口的核块注意力

以往的研究表明,利用全局运动约束进行光流特征改进是一种有效的光流估计策略。但是,直接应用基于上下文特征的非局部方法对运动特征的改进可能会有一些不可靠的指导。

在此,KPA使光流模型有一个合适的感受野来平滑约束运动特征,并避免来自远距离上下文的误导信息。具体来说,设计了一种基于滑动窗口的运动特征平滑方案。给定特征图fc×h×w,首先将其分割成不重叠的块,每一个大小为p×p的块视为一个特征组。因此,特征图中的所有特征向量被划分为h¯×w¯块窗口,其中h¯=d/pw¯= d/p。将块窗口内的每一组特征向量视为一个大小为c×p×p的基元素¯f。就像图像卷积通常使用奇数核大小的基本设置一样,将核窗口的大小定义为k=k¯×p,其中1,3,2i+1。因此,块核形状被表示为(k¯×k¯)

一个很小的样例实现了KPA的滑动窗口,如图所示,其中块大小p=2,核形状k¯×k¯3×3, h¯分别设置为45。左边的子图描述了一个滑动的核窗口Nx(橙色的)在步骤t中处理一个分组的特征图。这里将每个块视为一个基本元素,并使用ej,其中j∈{1;2,……,9},表示在核窗口的每个元素()可以看到,步骤t中的核心元素是e5,中间块窗口中的特征表示(红色的)将被更新。在实践中,我们首先在fc e5和fcE(其中E表示Nx中的所有ej)上使用权重函数W(ti)(·)来产生自适应权重,如Eqn. 3所示。具体来说,在这个过程中涉及到两种点积相似性度量,即一些块窗口之间的块内和块间的相似性。例如,e5中的特征向量可以与自身进行自注意力相似度测量,同时通过交叉注意力相互作用获得与其他8个块窗口中的特征的相关性。然后用构建核K(ti)。最后,我们用对运动特征进行核块注意力,即f0me5 = Pti2E K(ti)ρ(fm)。输出运动特征f^me5最终由残差操作产生,即f^me5 = fme5 + α f`me5,其中α表示一个可学习的参数,初始化为0,并逐渐执行加权求和。

3中的右子图说明了核窗口在步骤t + 1中滑动到下一个区域。由于将每个块视为基本元素,因此核窗口的滑动步幅应该相当于块大小p。此外,为了保证特征图的大小可以被p整除,并且中心块窗口能够滑动覆盖整个特征图中的所有位置,对特征进行了零填充。因此,运动特征fm中的所有块都可以通过KPA算子进行改进平滑。值得注意力的是,每一个KPA操作中的滑动步不依赖于其他的结果。因此,像图像卷积一样,整个算子可以并行处理,进行端到端训练。

讨论:与卷积的比较。图像卷积函数一般可以表述为:

其中,a表示核区域Nt中的所有像素,w(·)表示核函数。虽然KPA与基于核的运算具有相同的图像卷积模式,但固有的公式完全不同。首先,图像卷积简单地将核函数w(·)定义为可学习的权重w,而KPA用一个scale函数来定义它,以提供可学习的标量和一个基于上下文关系的自适应权重函数。在推理过程中,我们的权函数W(ti)(~fc,fc)能够提供动态核映射,其中每个权重随相应的上下文特征而变化。相比之下,W是一个静态的权重,在训练后的所有滑动位置中共享。其次,图像卷积在通道维度和空间维度上都需要更多的参数。然而,我们的KPA只需要在通道维度上进行线性投影,这有助于在核区域较大时显著减少计算开销。

讨论:与类NL算子的比较。本文提出的KPA算子能够捕捉基于区域的场景上下文,以指导运动特征的学习。因此,与全局非类局部操作符相比,KPA消耗的计算开销更少。例如,给定一个维数为c×h×w的特征,我们的KPANL的计算复杂度为:

N = h × w表示空间维度,K = k × k表示核窗口的尺寸。特征大小通常比内核大小大很多,即:N 》K。此外,KPA中注意力图的形状为N×K,小于NL的注意力N×N,表示GPU内存成本更低。此外,NL注意力图可能包含许多来自无约束场景上下文的全局噪声,不适合用于运动引导

3. 实验

3.1. 数据集

FlyingThings、Sintel、KITTI-2015、HD1K

3.2. 实现

基于PyTorch工具箱实现。核形状k¯× k¯设置为3 × 3。在sinintel和KITTI上,块大小p分别设置为19和9。使用4个GeForce GTX 2080Ti gpu来训练型,并采用一个gpu进行评估和时间测试。批大小分别设置为8和1。

3.3. 基准结果:SOTA

3.4. 方法比较

局限性是,固定的核形状对于处理一些具有挑战性的情况是不灵活的,比如两个相似的物体在不同的运动中相互纠缠。在这种情况下,上下文和空间亲和性都不能为运动引导提供有效的信息。这个问题的一个可能的解决方案是学习用于自适应运动推理的可变形核。

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

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

相关文章

软件设计师教程(十)计算机系统知识-结构化开发

软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(…

Zookeeper3.5.7版本——客户端命令行操作(节点删除与查看)

目录一、节点删除示例1.1、节点删除1.2、递归节点删除二、查看节点状态示例一、节点删除示例 1.1、节点删除 在客户端上创建 test 节点,并查看该节点 [zk: localhost:2181(CONNECTED) 5] create /test "123456"删除 test 节点,并查看该节点 […

初识rollup 打包、配置vue脚手架

rollup javascript 代码打包器,它使用了 es6 新标准代码模块格式。 特点: 面向未来,拥抱 es 新标准,支持标准化模块导入、导出等新语法。tree shaking 静态分析导入的代码。排除未实际引用的内容兼容现有的 commonJS 模块&#…

Sqoop详解

目录 一、sqoop基本原理 1.1、何为Sqoop? 1.2、为什么需要用Sqoop? 1.3、关系图 1.4、架构图 二、Sqoop可用命令 2.1、公用参数:数据库连接 2.2、公用参数:import 2.3、公用参数:export 2.4、公用参数&#xff…

MySQL数据库和表管理

MySQL数据库和表管理一、常用的数据类型1、int(N)2、float(m,d)3、char与varchar二、查看数据库结构1、查看当前服务中的数据库2、查看数据库中存在的表3、查看表结构三、SQL语句1、SQL语言规范2、SQL语言分类四、创建、删除数据库和表1、创建数据库2、创建表3、删除数据表4、删…

云医疗信息系统源码(云HIS)商业级全套源代码

云his系统源码,有演示 一个好的HIS系统,要具有开放性,便于扩展升级,增加新的功能模块,支撑好医院的业务的拓展,而且可以反过来给医院赋能,最终向更多的患者提供更好地服务。 私信了解更多&…

HTTPS加密流程

什么是HTTPSHTTPS是加密后的HTTP,相当于:HTTPS HTTP SSL/TLSHTTPS是基于"密钥"来实现的,客户端将发送的数据用密钥进行加密,服务器将收到的数据用密钥解密.对称加密和非对称加密对称加密是指:交互双方共同使用同一个密钥进行加密 或 解密.如下(图中的客户端和服务器…

还不会CAD批量打印图纸?学会这招再也不怕

各位工程师,相信大家在工作过程中,经常会遇到需要打印大量图纸文件的时候,那么多的图纸,一张张打印太麻烦,此时便需要用到CAD批量打印功能啦!可是,总有些新手设计师不直达奥CAD批量打印&#xf…

Spring事务及传播机制

概念 在MySQL中介绍过,当同一时间出现一起读写数据的情况,可能会导致最终的结果出错,因此可以使用事务来提高隔离级别 而Spring中也可以实现事务 手动添加事务 使用SpringBoot中的DataSourceTransactionManager对象可以获取事务&#xff0…

计算机科学导论笔记(六)

目录 八、算法 8.1 概念 8.1.1 非正式定义 8.1.2 示例 8.1.3 定义动作 8.1.4 细化 8.1.5 泛化 8.2 三种结构 8.2.1 顺序 8.2.2 判断 8.2.3 循环 8.3 算法的表示 8.3.1 UML 8.3.2 伪代码 8.4 更正式的定义 8.5 基本算法 8.5.1 求和 8.5.2 求积 8.5.3 最大和最…

Egg:使用joi进行参数校验以及注册接口小demo

目录 前言: 准备工作: 前端代码: 后端目录截图: 1.获取参数 2.校验参数 3.查询数据库中是否已经存在该用户 4.用户入库 5.测试一哈 添加用户成功 同样的用户名再注册一遍 ​编辑总结: 前言: 在阅…

C#基础之基础语法(一)

总目录 文章目录总目录前言一、C#简述1 C#是什么?2 .Net平台3. C# 和.Net的关系4. 集成开发环境(IDE)二、控制台应用程序1. 常用代码2.注意事项三、基础语法1.编写C#代码注意事项2.C#注释2. 变量&标识符&关键字4. 变量,字…

unity 面试汇总

1、什么是协同程序?答:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个可以与程序并行的逻辑。可以用来控制运动、序列以及对象的行为。2、Unity3D中的碰撞器和触发器的区别&#xff…

【C++进阶】四、AVL树(二)

目录 前言 一、AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 四、AVL树的旋转 4.1 左单旋 4.2 右单旋 4.3 左右双旋 4.4 右左双旋 五、AVL树的验证 六、AVL树的性能 七、完整代码 前言 前面对 map/multimap/set/multiset 进行了简单的介绍,在其文…

2023年湖北武汉安全员C证报考条件是什么?考试题型是什么 启程别

2023年湖北武汉安全员C证报考条件是什么?考试题型是什么 启程别 武汉安全员C证报考条件: 1.注册地在本市的施工单位在职“三类人员”可申请参加安全生产考核; 2、职业道德良好,身体健康,年龄不超过60周岁&#xff08…

pdf多页合并为一页方法总结,你觉得哪个最好?

PDF格式的文件在现代办公中是不可或缺的,许多人在工作中需要频繁处理PDF文档。然而,当我们需要阅读多个PDF文件时,不断切换不同的文件并一个一个地打开查阅会非常麻烦。为了提高阅读效率,人们一般会将pdf多页合并为一页。那么&…

传输线的物理基础(四):传输线的驱动和返回路径

驱动一条传输线对于将信号发射到传输线的高速驱动器,传输线在传输时间内的输入阻抗将表现得像一个电阻,相当于线路的特性阻抗。鉴于此等效电路模型,我们可以构建驱动器和传输线的电路,并计算发射到传输线中的电压。等效电路如下图…

虹科分享 | 网络流量监控 | 数据包丢失101

什么是数据包? 数据包是二进制数据的基本单位,在网络连接的设备之间编号和传输,无论是在本地还是通过互联网。一旦数据包到达其目的地,它就会与其他数据包一起按编号重新组合,回到最初传输的较大消息中。 数据包是我们…

2022(二等奖)C2594江淮分水岭植被碳汇时空可视化系统

作品介绍 一、需求分析 1.1 设计背景 气候变化是全球性问题,随着二氧化碳排放的增加生物的生存与生命受到威胁。人类活动对自然界生态系统的破坏,不仅降低了地球生物圈的生产力,威胁到人类社会未来经济的发展,同时还破坏了陆地与…

WireShark如何抓包,各种协议(HTTP、ARP、ICMP)的过滤或分析,用WireShark实现TCP三次握手和四次挥手

WireShark一、开启WireShark的大门二、如何抓包 搜索关键字2.1 协议过滤2.2 IP过滤2.3 过滤端口2.4 过滤MAC地址2.5 过滤包长度2.6 HTTP模式过滤三、ARP协议分析四、WireShark之ICMP协议五、TCP三次握手与四次挥手5.1 TCP三次握手实验5.2 可视化看TCP三次握手5.3 TCP四次挥手5.…