【论文简述】DIP: Deep Inverse Patchmatch for High-Resolution Optical Flow(CVPR 2022)

news2024/11/25 4:18:07

一、论文简述

1. 第一作者:Rui Li

2. 发表年份:2023

3. 发表期刊:CVPR

4. 关键词:光流、深度学习、PatchMatch、局部搜索

5. 探索动机:对于深度学习来说,除了准确性之外,性能和内存也是一个挑战,特别是在高分辨率下预测光流时。为了降低计算的复杂性和内存的使用,以前的方法使用从粗到细的策略,但可能会出现低分辨率误差恢复问题。为了在大位移,特别是快速运动的小目标上保持较高的精度,RAFT构建了一个全对四维相关体,并用卷积GRU块进行查找。然而,在预测高分辨率光流时同样有内存问题。

6. 工作目标:为了在减少内存的同时保持较高的精度,引入PatchMatch就是为了对抗RAFT的4D All Paired Correlation Volume的高冗余计算。

7. 核心思想:将Patchmatch的思想引入到相关性的计算中,而不是使用这样的稀疏全局相关策略造成精度损失。

  1. We design an efficient framework which introduces Patchmatch to the end-to-end optical flow prediction for the first time. It can improve the accuracy of optical flow while reducing the memory of correlation volume.PatchMatch求解高精度光流。
  2. We propose a novel inverse propagation module. Compared with propagation, it can effectively reduce calculations while maintaining considerable performance.提出优化的Inverse Propagation。

8. 实验结果:

At the time of submission, our method ranks 1st on all the metrics on the popular KITTI2015 benchmark, and ranks 2nd on EPE on the Sintel clean benchmark among published optical flow methods. Experiment shows our method has a strong cross-dataset generalization ability that the F1-all achieves 13.73%, reducing 21% from the best published result 17.4% on KITTI2015. What’s more, our method shows a good details preserving result on the high-resolution dataset DAVIS and consumes 2× less memory than RAFT.

9.论文下载:

https://openaccess.thecvf.com/content/CVPR2022/papers/Zheng_DIP_Deep_Inverse_Patchmatch_for_High-Resolution_Optical_Flow_CVPR_2022_paper.pdf

https://github.com/zihuazheng/DIP

二、实现过程

1. 相关体对比

局部相关体(Local Correlation Volume)。在现代基于局部相关体的光流方法,其计算公式如下:

式中F1为源特征图,F2为目标特征图,d为x或y方向的位移。X = [0,H)x[0,w),D=[−dmax,Dmax]2, h为特征图的高度,w为特征图的宽度。因此,相关体的内存和计算与hw(2dmax + 1)2呈线性关系,与搜索空间的半径呈二次关系。受限于搜索半径的大小,在高分辨率挑战性场景下难以获得高精度的光流。

全相关体(Global Correlation Volume)。最近,RAFT[36]提出了一种全对相关体积,达到了最先进的性能。F1中位置(i, j)和F2中位置(k, l)的全局相关计算定义如下:

其中m为金字塔层数。2m是池化的核大小。与局部相关体相比,全局相关体包含N2个元素,其中N = hw。当F的h或w增加时,内存和计算量将成倍增加。因此,全局方法在进行高分辨率推理时存在内存不足的问题。

块匹配(Patchmatch Method)。Patchmatch用于寻找图像间的稠密对应关系,进行结构化编辑。它背后的关键思想是,可以通过大量随机采样得到一些好的猜测。并且基于图像的局部性,一旦找到一个好的匹配点,信息就可以有效地传播到相邻的图像中。因此,提出采用传播策略来减小搜索半径,采用局部搜索来进一步提高准确率。Patchmatch方法的复杂度为hw(n + r2),其中n为传播次数,r为局部搜索半径,两个值都很小,不随位移和分辨率的增加而变化。

2. 光流的Patchmatch

传统的Patchmatch方法主要有三个组成部分。1)随机初始化。通过大量随机采样得到一些很好的猜测。2)传播。基于图像的局部性,一旦找到一个好的匹配点,信息就可以有效地从它的邻居传播出去。3)随机搜索。在后续传播中使用它来防止局部优化,使其在其邻域不存在良好匹配时能够获得良好匹配。

迭代传播和搜索是解决光流问题的关键。在传播阶段,将特征图中的一个点作为一个patch,并选择4个相邻的种子点。因此,每个点都可以通过将光流图移向4个邻居来从其邻居处获得候选光流。然后根据邻近候选光流及其光流计算出一个5维相关体。给定所有光流的位移∆p,则传播的相关计算可定义为:

S(flow,∆p)为根据∆p的位移光流。W为用移动光流变化的F2。毫无疑问,选择的种子点越多,需要的操作就越多。当传播迭代m次选择n个种子点时,传播需要光流移动n×m次,源特征变化n×m次。这增加了内存操作和插值计算,特别是在预测高分辨率光流时。为了减少选项的数量,第一次用逆传播代替传播。在搜索阶段,将随机搜索改为更适合端到端网络的局部搜索方法,达到了更高的准确率。

3. 深度反向块匹配

逆传播。在传播中,光流位移和特征warp是串行耦合的,因为warp过程取决于光流的位移。此外,每次迭代都需要进行多次光流位移,因此计算量增加。理论上,将流移到右下的空间相对位置与将目标移到左上的空间相对位置相同。两种方法的相关图在绝对空间坐标上有一个像素偏移。我们将目标移位的方式称为逆传播,逆传播可以表示为:

由于∆p很小,在实现中忽略了反向传播的过程。即得到:

在反向传播中,目标特征点被分散到它的种子点上,并被种子点的光流warp。因此,可以提前对目标特征进行移位和叠加,然后在每次迭代中只进行一次warp,以获得warp后的目标特征。

在这项工作中,种子点是静态的,不会随着迭代的增加而改变。因此,目标特征只需要移动到种子点一次,并且移动的目标特征可以在每次迭代中重用。这样,如果有n个种子点进行m次传播迭代,只需要移动目标特征n次,并将移动的目标特征变化m次。逆传播阶段可分为两个子阶段:

初始化阶段:输入源特征、目标特征。根据种子点对目标特征进行移位,然后沿深度维度将移位的目标特征作为共享目标特征进行叠加。

运行阶段:输入一个流,根据流warp共享目标特征,计算源特征与warp目标特征的相关性。

局部搜索。由于随机初始化的光流值范围非常稀疏,仅通过块传播难以获得非常精确的光流。因此,在本工作中,每个块传播后都会进行局部邻域搜索。不像Patchmatch,它在每次传播后进行随机搜索,并随着迭代的增加而减小搜索半径。本文在每次传播后只执行一个固定的小半径搜索,称之为局部搜索。给定一个光流增量∆f,局部搜索可以用公式表示:

在本工作中,根据实验结果将最终搜索半径设置为2。为此,逆Patchmatch模块主要由逆传播块和局部搜索块组成。在每次迭代中,逆传播之后是局部搜索。值得注意的是,两个块都使用GRU代价聚合。

4. 网络结构

为了在高分辨率图像上获得高精度的光流,设计了一种新的光流预测框架DIP。概述如下图所示。主要分为两个阶段:(1)特征提取;(2)多尺度迭代更新。

特征提取。首先,对输入图像使用特征编码器网络,提取1/4分辨率的特征图。与之前的工作不同,它们使用上下文网络分支来提取上下文。DIP直接激活源特征图作为上下文图。然后使用平均池化模块将特征图降到1/16的分辨率。对于1/4分辨率和1/16分辨率,使用相同的主干和参数。因此,DIP可以分两个阶段进行训练,在处理大型图像时,使用更多的阶段进行推理。

多尺度迭代更新。该方法基于邻域传播,必须对光流进行迭代更新。网络由两个模块组成,一个反向传播模块和一个局部搜索模块。在训练阶段,以1/16大小的随机光流开始网络,然后使用金字塔方法迭代优化大小为1/16和1/4的光流。在推理阶段,可以执行与训练阶段相同的过程。为了获得更精确的光流,还可以在1/8尺度下对光流进行改进,然后在1/4尺度下对结果进行优化。

网络也接受初始化的光流作为推理阶段的输入。在这种情况下,根据初始化光流的最大值来调整金字塔的推断层数。例如,在对视频图像的光流进行处理时,将前一图像的光流前向插值作为当前图像的输入。利用之前光流的信息,可以对大位移使用两个或多个金字塔来保证精度,对小位移使用一个金字塔来减少推理时间。

5. 损失

损失函数类似于RAFT。DIP每次迭代输出两个光流。当在1/16和1/4分辨率下使用N次迭代时,在整个训练过程中输出数的预测N = 迭代× 2 × 2。由于监督有多个输出,使用与RAFT类似的策略,计算一个加权序列并将预测序列的损失求和。总损失可表示为:

 其中N为预测序列的长度,M(x)表示矩阵x的均值,wi可以通过计算,在训练中使用γ=0.8。 

6. 实验

6.1. 实现细节

使用16 RTX 2080 Ti gpu、AdamW和OneCycle。

6.2. 与先进技术的比较

6.3. 消融实验

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

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

相关文章

基于 FFlogs API 快速实现的 logs 颜色查询小爬虫

文章目录 找到接口解析响应需要平均颜色和过本次数? 找到接口 首先试了一下爬虫,发现和wow一样官网上有暴露的 API,链接在:FFlogs v1 API 文档链接 通过查询官方提供的 API 接口得知: user_name 角色名字 api_key …

解决安装VMware Tools灰色问题,解决重新安装VMware Tools灰色问题

一、环境 vmware 版本:17.0.0 build-20800274 centos 9 二、问题 安装VMware Tools 按钮为灰色 三、解决方法 网上很多写这些如何解决该问题的,如:配置CD/DVD(SATA)为自动检测,或者指定其CD镜像文件为…

3个命令定位CPU飙高

top 指令找出消耗CPU最厉害的那个进程的pid top -H -p 进程pid 找出耗用CPU资源最多的线程pid printf ‘0x%x\n’ 线程pid 将线程pid转换为16进制 结合jstack 找出哪个代码有问题 jstack 进程pid | grep 16进制的线程pid -A 多少行日志 jstack 进程pid | grep 16进制的线程…

DP-GAN-判别器代码

将输出的rgb作为输入,输入到判别器中。接着执行一个for循环,看一下body_down列表的组成和x经过body_down之后的值。 body_down是由残差块D组成的列表: 残差块的参数为:(3,128),(128,128),(128,256),(256,256),(256,512),(512,5…

虹科分享 | 关于内存取证你应该知道的那些事

什么是内存取证? 内存取证是指在计算机或其他数字设备运行时,通过对其随时存储的内存数据进行采集、分析和提取,以获取有关设备状态、操作过程和可能存在的安全事件的信息。内存取证是数字取证的一个重要分支,用于从计算机的RAM&…

前端自动化测试:确保质量和稳定性的关键步骤

文章目录 测试金字塔与前端测试层级1. 单元测试(Unit Testing)2. 组件测试(Component Testing)3. 集成测试(Integration Testing)4. 端到端测试(End-to-End Testing) 单元测试、集成…

学习购药系统源码:从前端到后端的技术探索

本文将带领读者探索购药系统源码,从前端到后端逐步深入,了解其核心功能和实现方式。我们将使用常见的Web技术,包括HTML、CSS、JavaScript、以及Python的Django框架,展示购药系统的技术奥秘。 前端技术探索 HTML结构搭建 购药系…

3ds Max如何进行合成的反射光泽通道渲染

推荐: NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 1. 准备场景 步骤 1 打开 3ds Max。smart_phone.max打开已 随教程提供。 打开 3ds Max 步骤 2 按 M 打开材质编辑器。选择空材料 槽。单击漫射通道。它将打开材质/贴图浏览器窗口。选择位图&#xff0…

DAY01_Spring简介IOC、DI入门案例Bean基础配置Bean实例化Bean生命周期依赖注入(DI配置)

目录 一 Spring1 Spring简介1.1 为什么要学1.2 学什么1.3 怎么学 2 初识Spring2.1 Spring家族2.2 Spring发展史 3 Spring体系结构问题导入3.1 Spring Framework系统架构图3.2 Spring Framework课程学习路线 4 Spring核心概念问题导入4.1 目前我们代码存在的问题4.2 核心概念 二…

【Linux 网络】 传输层协议之UDP协议

UDP协议 UDP协议的位置UDP协议的特点UDP协议的格式UDP使用注意事项 UDP协议的位置 在网络套接字编程时用到的各种接口,是位于应用层和传输层之间的一层系统调用接口,这些接口是由系统提供的。我们可以通过这些接口来搭建上层应用,比如HTTP协议…

如何解决制造业数字化改造的障碍?

制造业的数字化转型可能是一个复杂且具有挑战性的过程,但解决以下障碍有助于为成功实施铺平道路: 抵制变革:数字化转型中最常见的挑战之一是员工的抵制,尤其是那些习惯传统方法的员工。为了克服这一问题,组织需要培养一…

Redis 简介

文章目录 Redis 简介 Redis 简介 Redis(Remote Dictionary Server),远程词典服务器,基于 C/S 架构,是一个基于内存的键值型 NoSQL 数据库,开源,遵守 BSD 协议,Redis 由 C语言 实现。…

深入理解设计模式之门面模式

深入理解设计模式之门面模式 什么是门面模式? 门面模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口,用于访问复杂子系统中的一组接口。门面模式通过封装子系统的复杂性,提供了一个更简…

解决联想小新耳机孔没声音问题

联想小新电脑AMD,今天突然遇到扬声器有声音、蓝牙耳机也有声音、耳机孔插上耳机没有声音。 话不多说,直接上解决办法,亲测有用: (1)“此电脑”右键,选“管理” (2)进入…

第1集丨Vue 江湖 —— Hello Vue

目录 一、简介1.1 参考网址1.2 下载 二、Hello Vue2.1 创建页面2.2 安装Live Server插件2.4 安装 vue-devtools2.5 预览效果 一、简介 Vue(读音 /vjuː/, 类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设…

idea插件开发-自定义语言5-References and Resolve

实现自定义语言 PSI 中最重要和最棘手的部分之一是解析References。解析References使用户能够从 PSI 元素的使用(访问变量、调用方法等)导航到该元素的声明(变量的定义、方法声明等)。其实就是实现Navigate | Declaration or Usag…

OpenCVForUnity(十)扩张与侵蚀效果

文章目录 前言扩张案例展示 侵蚀案例展示 结语: 前言 在这个教程中,您将学习两种常见的图像形态运算符:侵蚀和膨胀。为此,您将使用OpenCV库中的两个函数:erode 和 dilate。 形态操作是一组基于形状的图像处理操作。形态…

java+springboot+mysql校园宿舍报修管理系统

项目介绍: 使用javaspringbootmysql开发的校园宿舍报修管理系统,系统包含管理员、维修员、学生角色,功能如下: 管理员:楼栋管理、宿舍管理、维修人员管理、学生管理;报修管理(派单给维修员&am…

k8s概念-StatefulSet

StatefulSet 是用来管理有状态应用的控制器 StatefulSet 用来管理某Pod集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符StatefulSet | KubernetesStatefulSet 运行一组 Pod,并为每个 Pod 保留一个稳定的标识。 这可用于管理需要持久化存储或稳…

系统架构师---UP统一过程常考概念

前言: 在 计算机诞生的年代,计算机是一种 只有天才才能掌握的工具。人们对软件的 认知仅仅停留在程序的层面上,所谓的软件开发就是那些能够掌握计算机的天才们写的一些只有计算机才能理解的二进制序列 。但是随着技术的发展,软件…