【论文简述】Learning Optical Flow with Adaptive Graph Reasoning(AAAI 2022)
一、论文简述
1. 第一作者:Haofei Xu
2. 发表年份:2022
3. 发表期刊:AAAI
4. 关键词:光流、图神经网络、自适应
5. 探索动机:现有光流估计方法主要解决基于特征相似性的匹配问题,少有工作研究如何显式推理场景中各部分的运动情况。
6. 工作目标:本文从一个新的角度提出基于图模型的方法,充分利用场景(上下文)信息对光流估计进行引导推理。
7. 核心思想:本文提出利用自适应图推理的光流估计模型(AGFlow),采用了一种适应性学习机制,使得图模型能够利用场景特征节点之间的关系信息来引导运动特征节点进行关系推理和信息交互,关键思想是将上下文推理从匹配过程中分离出来,并利用场景信息通过学习对自适应图进行推理来有效地辅助运动估计。
- A novel graph-based approach for optical flow. To our knowledge, this is the first work that explicitly exploits scene information to assist in optical flow estimation by using graph techniques. The proposed AGFlow can go beyond the regular grids and reason over the graph space to achieve a better motion understanding, thus successfully handling different challenges in optical flow.
- An adaptive cross-domain graph reasoning approach. In order to incorporate scene information, we generalize the learning to adapt mechanism from regular grids to the graph domain. Our designed graph adapter can fast adapt scene context to guide the global (motion) graph reasoning in a one-shot manner.
8. 实验结果:还行吧
The proposed AGFlow can effectively exploit the context information and incorporate it within the matching procedure, producing more robust and accurate results. On both Sintel clean and final passes, our AGFlow achieves the best accuracy with EPE of 1.43 and 2.47 pixels, outperforming state-of-the-art approaches by 11.2% and 13.6%, respectively.
9.论文&代码下载:
https://github.com/ megvii-research/AGFlow
https://arxiv.org/pdf/2202.03857.pdf
二、实现过程
1. 问题公式化
给定一对连续的输入图像,即源图像I1和目标图像I2,光流估计的任务是预测源图像I1和目标图像I2之间的密集位移场。基于深度学习的光流网络通常采用编码器-解码器管道,首先提取上下文特征fc,获得运动线索fm,然后基于融合特征fo,以循环/粗到细的方式进行光流预测。
在AGFlow中,将解码器中的特征融合表示为基于图的推理和学习模型,其表述为fo = F(fc,fm)。具体来说,将模型定义为有向图G=(V,E),其中V表示节点集合,E表示边,G表示节点之间的连接和关系信息。运行t次图推理后,将更新后的节点映射回原始坐标空间,以预测位移场。
2. 光流的自适应图推理
上图描述了AGFlow用于光流的自适应图推理的概述。“4D CV”表示4D相关体,“C”表示连接,“L”表示加和。AGFlow基于RAFT开发。具体来说,给定一对输入图像I1和I2,使用两个基于残差块的编码器来提取特征对(f1, f2)和上下文特性fc。然后在特征对上构造4个尺度的4D相关体。在循环改进框架中,利用四次卷积在多尺度匹配代价中从9×9区域捕获运动特征fm。然后,自适应图推理(AGR)模块以运动特征fm和上下文特征fc为输入,进行整体的运动推理。
节点嵌入。第一步是将规则坐标空间中的上下文和运动特征投影到图空间中。投影运算将位置信息与原始网格特征解耦,使生成的低维节点特征表示更紧凑,表达能力更强。这里我们将图模型中映射的节点V分为两组:上下文节点vc = Vc1,···,Vcn,包含关于形状的外观特征和场景上下文的区域信息,运动节点vm = Vm1,···,Vm,存储交叉图像匹配依赖的运动特征。
具体来说,给定来自编码器网络的上下文特征fc∈c×h×w和运动特征fm∈c×h×w,采用投影函数Pf→v(·)将表示相似的特征分配给同一节点。设vc∈C×K和vm∈C×K表示图空间中的初始节点嵌入,其中C表示通道号,K为节点数。
为了在一组区域上构建一个全局图,在网格空间中制定Pf→v(·)作为特征向量的线性组合,即v = Pf→v(f),因此生成的节点能够在整体原始特征图中聚合远距离信息。这是由
其中N(·)是对每个节点向量的通道维数进行的L-2归一化函数,Ff→v(f) ∈N×K将特征图映射到节点向量的投影权重建模。该方法可以用任意输入分辨率进行训练。在实践中,首先在f∈c×h×w上使用两次卷积将信道维度从c更改为K,从而得到分辨率为K×h×w特征图。然后应用重塑函数得到分辨率为N×K的Ff→v(f),其中N = h×w, K是不依赖于空间分辨率的超参数。因此,两种类型的节点嵌入可以由vc=Pf→v(fc)和vm=Pf→v(fm)产生。
自适应图推理。给定图空间中的节点嵌入v,用于图推理的邻接矩阵通常可以通过测量所有节点向量之间的相似性来生成,如A=vTv。对邻接矩阵A建模后,用图卷积网络进行图推理定义为
其中σ(·)是一个非线性激活函数,wG是图卷积的可学习参数。v^是用图推理更新的节点表示,它可以迭代增强,通过更多的运行v^(t) = FG(v,A)(t),其中t表示更新迭代。
让我们考虑上下文节点和运动节点的表示属性。运动节点主要编码图像对之间的点的对应关系,而忽略了区域内像素之间的内部关系,而上下文节点则获得区域和形状表示的具有可分辨性的特征。因此,我们需要解决两个障碍:首先,上下文节点和运动节点之间存在不可避免的表示差距,这可能会阻碍直接整体图推理的有效信息传播。其次,运动节点缺乏对潜在位移场的形状或布局的约束,因此它们无法为单个图推理提供足够的上下文信息。
为了解决这一问题,提出了一种自适应图推理(AGR)模块,将上下文推理与匹配过程解耦,同时将场景上下文的区域和形状先验一次性转移到运动节点。关键思想是在全局上下文中利用形状和区域有判别性的表示指导具有自适应参数的运动邻接矩阵的学习。因此设计了一种邻接矩阵的自适应算法,以学习预测动态参数,根据特定于图像的上下文信息定制运动关系建模。
这是由
其中Θ(·)是一个参数学习器,A(·)表示一个配备了Θ(vc)的动态权重的上下文到运动图自适应器(GA)。在实践中,实现了Θ(·),具有softmax激活的线性投影函数。如下图所示,采用两层MLP实现A(·),其中应用第一个正则化线性函数和ReLU激活执行通道的学习,然后使用第二个具有自适应核Θ(vc)的线性函数执行节点交互,进行上下文-动作自适应关系学习。具体来说,给定上下文节点vc∈C×K,预测了自适应核Θ(vc)∈K×K在通道维度上卷积(C→K),然后转化为第二个线性函数的K × K形自适应权值,用于生成vm`。最后,在m`上进行点积相似度来预测A˘。
生成的参数Θ(vc)依赖于上下文节点来动态利用当前输入的形状和区域信息。这样,运动节点可以快速适应场景上下文,很好地利用转移的节点关系进行运动子图推理。因此,增强的上下文节点v^c(t)由
类似地,运动节点v^m(t)由
FAG(·)表示用自适应图卷积网络(AGCN)进行运动节点推理。
注意力读出。经过t次关系推理和状态更新后,提出了一个注意力读出模块,将增强的上下文节点vc(t)和运动节点v^m(t)从图空间投影回网格特征空间,使整体图交互模型与现有光流网络兼容。更新后的特征图既包含全局上下文信息,又包含局部像素级匹配代价,可以更好地预测光流场。将反投影表述为
其中Pv→f(·)是一个线性组合函数,将节点向量v^∈C×K映射到光流网络原始网格空间中的特征图f^∈C×N。在实际应用中,我们在节点嵌入过程中重用投影矩阵。投影矩阵包含像素到节点的分配,并保留空间细节,这对于恢复特征图的分辨率至关重要。此外,通过重用区域分配不涉及额外的参数,这也有助于减少计算开销。
上下文特征^fc由残差操作产生
其中α表示一个可学习的参数,初始化为0,并逐渐执行加权和。同样,运动特征^fm由
考虑到增强的特征^fc和^fm,对于特征融合一个的潜在障碍是上下文特征缺乏交叉图像匹配的对应信息,这可能导致全局位移的偏移,从而影响光流精度。为此,设计了一种注意力融合函数,该融合函数首先从运动特征^fm中学习预测一组尺度权重,然后利用它们对整个密集位移进行全局调整。具体来说,注意力融合函数定义为
其中⊕是一个连接操作,FCA(·)是一个通道注意力函数,通过两个具有ReLU和sigmoid激活的卷积实现。
7. 训练损失
7.1. 数据集
FlyingThings、Sintel、KITTI-2015、HD1K
7.2. 实现
通过PyTorch实现。训练策略延续RAFT。将上下文和运动节点的数量K设置为128。对于上下文图和运动图r,状态更新迭代t设置为2和1。模型是在2 NVIDIAGeForce GTX 2080Ti GPU上
训练,批大小设置为8。
7.3. 方法比较
7.4. 参数量及时间
相关文章:

【论文简述】Learning Optical Flow with Adaptive Graph Reasoning(AAAI 2022)
一、论文简述 1. 第一作者:Haofei Xu 2. 发表年份:2022 3. 发表期刊:AAAI 4. 关键词:光流、图神经网络、自适应 5. 探索动机:现有光流估计方法主要解决基于特征相似性的匹配问题,少有工作研究如何显式…...

qt QCustomPlot学习
QCustomPlot 是一个基于Qt的画图和数据可视化C控件。QCustomPlot 致力于提供美观的界面,高质量的2D画图、图画和图表,同时为实时数据可视化应用提供良好的解决方案。 该绘图库专注于制作美观、出版物质量高的2D绘图、图形和图表,并为实时可视…...

【HDFS】FsDatasetImpl系列文章(七):finalizeBlock方法和unfinalizeBlock方法
一、finalizeBlock 1.1 调用点&调用场景 主要用于完成block的写入。调用点有两处: ① BlockReceiver#receiveBlock方法里: 这个调用场景发生在:datanode在所有的packet都接收完了之后,如果是数据复制、balancer、或者stage是TRANSFER_FINALIZED的情况下,调用finaliz…...

测试部门来了个99年的卷王之王,老油条感叹真干不过,但是...
在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…...

CSS 网页动画【快速掌握知识点】
目录 前言 一、使用CSS3动画 二、使用CSS过渡 三、使用CSS变换: 前言 CSS是一种用于网页设计和排版的语言,也可以用它来制作网页动画。 一、使用CSS3动画 CSS3引入了动画属性,允许您为元素设置动画效果。您可以使用关键帧来定义动画的开始…...

电脑技巧:分享六个非常实用的资源网站
今天小编给大家分享六个非常实用的资源网站,大家一起来看看吧! 1、高清壁纸:Wallhaven 一个免费的高清壁纸下载网站,里面的壁纸资源丰富,更新速度也快,各种类型的壁纸都能找到,尤其是动漫壁纸。…...

【Java基础 下】 027 -- 异常、File、综合案例
目录 一、异常 1、异常的分类 ①、Error ②、Exception ③、小结 2、编译时异常和运行时异常 ①、编译时异常 ②、运行时异常 ③、为什么异常要分成编译时异常和运行时异常? ④、小结(运行时异常和编译时异常的区别) 3、异常的作用 ①、查看b…...

教师管理系统的设计与实现
技术:Java、JSP等摘要:1.1 计算机管理教师的意义近年来,随着经济的发展,教育正面向着大型化、规模化的方向发展,教师数量急剧增加,有关教师的各种信息量也成倍增长。在这种情况下用计算机可使人们从繁重的劳…...

【Java】线程使用方式
(1)继承 Tread 类 继承Thread类,创建一个新的线程类重写run()方法,将需要并发执行的业务代码编写在run()方法中 //继承Thread来创建一个线程类 class MyThread extends Thread{Overridepublic void run(){System.out.println("hello Thread"…...

零基础想转行学习Python,该如何学习,有学习路线分享吗?(2023年给初学者的建议)
Python属于一种面向对象、解释性的高级语言,它如今在众多领域都被应用,包括操作系统管理、Web开发、服务器运维的自动化脚本、科学计算、桌面软件、服务器软件(网络软件)、游戏等方面,且Python在今后将被大规模地应用到大数据和人工智能方面。…...

IDEA Maven install Failed to execute goal org.apache.maven.plugins异常处理
目录一、异常错误二、原因三、解决方法修改pom.xml资源配置文件一、异常错误 由于服务器编译拦截了静态资源,导致出现异常,需要重新打包编译 打开IDEA带的Maven管理,双击clean清除由项目编译创建的target 再双击install安装jar包到本地仓库…...

TensorFlow-Keras - FM、WideAndDeep、DeepFM、DeepFwFM、DeepFmFM 理论与实战
目录 一.引言 二.浅层模型概述 1.LR 2.FM 3.FMM 4.FwFM 5.FmFM 三.常用推荐算法实现 Pre.数据准备 1.FM 2.WideAndDeep 3.DeepFM 4.DeepFwFM 5.DeepFmFM 四.总结 1.函数测试 2.函数效果与复杂度对比[来自FmFM论文] 3.More 一.引言 推荐系统中常见的 CTR 模型…...

Java浅析电信数据采集
技术:Java等摘要:电信运营系统中,电信计费系统是主要的支撑系统,占有重要地位。对于电信计费系统是电信运营商的核心竞争力之一这一观点愈来愈被业界认同。电信计费系统中的数据蕴含着企业经营态势、客户群分布特征及消费习惯、各…...

那些开发中需要遵守的产研开发规范
入职新公司第三天,没干啥其他活,基本在阅读产研开发规范。公司在技术方面沿用的是阿里的一套技术,所以入职之前需要先阅读《阿里巴巴开发规范》。今天整理一些平时需要关注的阿里规约和数据库开发规范,方便今后在开发过程中查阅。…...

一文深入分析-内核并发消杀器(KCSAN)
一、KCSAN介绍 KCSAN(Kernel Concurrency Sanitizer)是一种动态竞态检测器,它依赖于编译时插装,并使用基于观察点的采样方法来检测竞态,其主要目的是检测数据竞争。 KCSAN是一种检测LKMM(Linux内核内存一致性模型)定义的数据竞争(data race…...

Java学习-IO流-字符缓冲流
Java学习-IO流-字符缓冲流 字符缓冲流↙ ↘ BufferedReader BufferedWtrier 字符缓冲输入流 字符缓冲输出流底层自带长度为8192的缓冲区提高性能 public BufferedReader(Reader r):把基本流包装成高级流 public BufferedWtrier(Wtrier w):把…...

Java的一维数组遍历、求最值、冒泡排序
一.数组遍历: Example: import java.util.ArrayList; public class App { public static void main(String[] args) { int[]arr{1,2,3,4,5}; for(int i0;i<arr.length;i){ System.out.println(arr[i]); } } 运行结果:12345 定义了一…...

Free for photo container detection, container damage detect PaaS
集装箱箱号识别API免费,飞瞳引擎集装箱人工智能平台,可通过API二次开发或小程序拍照使用,可二次开发应用码头港区海关仓库口岸铁路场站船公司堆场,实现云端集装箱信息识别/集装箱箱况残损检测/好坏箱检验,高检测率/高实…...

【golang】【源代码】reflect.DeepEqual(x,y)函数
reflect.DeepEqual(x, y)函数 功能是比较x和y是否一致,x和y不仅限于基础类型,也可以是像array、 slice、 map、 ptr、struct、interface类型,在代码中经常能见到。 一起看下是怎么实现的吧~ func DeepEqual(x, y interface{}) bool {if x …...

Python实现定时执行脚本(4)
前言 本文是该专栏的第16篇,后面会持续分享python的各种干货知识,值得关注。 在项目开发中,难免会需要用到定时任务。比如说,在某个时间段,甚至是达到某时某分某秒自动运行你部署好的功能脚本。而在本专栏的前面,笔者有详细介绍过3种使用python执行定时脚本的方法。 1.…...

量子力学(4) 全同粒子
如果势能与时间无关,那么Ψψe−iEt/ℏ\Psi\psi e^{-iEt/\hbar}Ψψe−iEt/ℏ,EEE是系统的总能量。 全同粒子分为玻色子和费米子。所有电子是全同的费米子。所有质子是全同的费米子。全同就是说不可能区分出其中的一个,比如说你摇了五个骰子…...

13、Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
简介 主页:https://github. com/microsoft/Swin-Transformer. Swin Transformer 是 2021 ICCV最佳论文,屠榜了各大CV任务,性能优于DeiT、ViT和EfficientNet等主干网络,已经替代经典的CNN架构,成为了计算机视觉领域通用…...

C++基础入门丨8. 结构体——还需要知道这些
Author:AXYZdong 硕士在读 工科男 有一点思考,有一点想法,有一点理性! 定个小小目标,努力成为习惯!在最美的年华遇见更好的自己! CSDNAXYZdong,CSDN首发,AXYZdong原创 唯…...

算法第十六期——动态规划(DP)之线性DP
【概述】 线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题、区间DP等有固定的模板。 线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式或等式,目…...

智慧新零售网络解决方案,助力新零售企业数智化转型
随着数字化时代的不断发展,新零售连锁业务模式“线上线下”融合发展,数据、设备在逐渐增加,门店数量也会随着企业规模的扩大而增加,但由于传统网络架构不稳定、延时、容量小影响服务质量(QoS)、分支设备数量…...

Go语言规范中的可赋值
了解可赋值规范的重要性当使用type关键字定义类型的时候,会遇到一些问题,如下:func main(){var i int 2pushInt(i) } type MyInt int //基于int定义MyInt func pushInt(i MyInt){}结果:调用函数pushInt报错 cannot use i (variab…...

外盘国际期货招商:原油市场热点话题
原油市场热点话题 问:目前美国原油库存如何? 答:EIA原油库存数据显示,由于美国炼油厂季节性检修,开工率继续下降,原油库存连续九周增长至2021年5月份以来最高水平,同期美国汽油库存减少而精炼…...

[蓝桥杯 2018 省 A] 付账问题 贪心题
几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。现在有 n 个人出去吃饭,他们总共消费了 S 元。其中第 i 个人带了 ai 元。幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出…...

微机原理复习(周五),计算机组成原理图
1.计算机由运算器,控制器,存储器,输入设备,输出设备等5大基本部件组成。 2.冯诺依曼提出存储设计思想是:数字计算机的数制采用二进制,存储程序,程序控制。 3.计算机的基本组成框图:…...

用了10年Postman,意想不到它的Mock功能也如此强大
最近在做一些app,前后端分离的开发模式是必须的。一直用的python flask做后端的快速POC,python本身就是一门胶水语言,开发起来方便快捷,而flask又是一个极简的webserver框架(比Django简洁)。但在这里推荐的…...