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

一、论文简述

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.mzph.cn/news/17050.shtml

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

相关文章

基于深度学习的CCPD车牌检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于CCPD数据集的高精度车牌检测系统可用于日常生活中检测与定位车牌目标,利用深度学习算法可实现图片、视频、摄像头等方式的车牌目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据集…

回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现GRNN广义回归神经网络多输入单输出回归…

GitLab备份升级

数据备份(默认的备份目录在/var/opt/gitlab/backups/下,生成一个以时间节点命名的tar包。) gitlab-rake gitlab:backup:create新建repo源,升级新版本的gitlab vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] namegitlab-ce baseurlhttps://mirrors.…

解决el-table打印时数据重复显示

1.表格数据比较多加了横向滚动和竖向滚动,导致打印出问题 主要原因是fixed导致,但是又必须得滚动和打印 方法如下: 1. 2. is_fixed: true,//data中定义初始值 3.打印时设置为false,记得要改回true if (key 2) { this.is_fixed false //打…

虹科活动 | 走进宇通客车-汽车新供应链技术展精彩回顾

引言 7月27日,走进宇通客车-汽车新供应链技术展于宇通研发中心成功举办,本次展会中虹科为大家带来了一体化车载天线与车辆GNSS仿真测试方案,感谢您前来探讨与交流! 精彩产品一览 车辆GNSS仿真测试方案 虹科高性能GNSS模拟器具有灵…

Eureka 学习笔记3:EurekaHttpClient

版本 awsVersion ‘1.11.277’ EurekaTransport 用于客户端和服务端之间进行通信,封装了以下接口的实现: ClosableResolver 接口实现TransportClientFactory 接口实现EurekaHttpClient 接口实现及其对应的 EurekaHttpClientFactory 接口实现 private …

Golang之路---01 Golang VS Code创建项目

Golang VS Code创建项目 代码组织 Golang使用包和模块来组织代码,包对应到文件系统就是文件夹,模块就是xxx.go的go源文件。一个包中会有多个模块,或者多个子包。 早期使用的是gopath来管理项目,不方便,比较麻烦&…

电子技术的发展

本资料仅用于学习和讨论如有侵权请反馈 1.1 第一台只能存储640M 什么是模拟信号: 2.1 把声波转化为电信号 2.2 微音器输出的某一段信号的波形 3、最简单有个蜂鸣器,再好一点有个喇叭 4、人说话的声音是个很复杂的声音 5、嵌入式实时操作系统: 6、结构到函数 6.1 学习环境…

深度学习,神经网络介绍

目录 1.神经网络的整体构架 2.神经网络架构细节 3.正则化与激活函数 4.神经网络过拟合解决方法 1.神经网络的整体构架 ConvNetJS demo: Classify toy 2D data 我们可以看看这个神经网络的网站,可以用来学习。 神经网络的整体构架如下1: 感知器&…

二叉树的前,中,后序的非递归实现(c++)

前言 对于二叉树来说,遍历它有多种方式,其中递归遍历是比较简单的,但是非递归的实现就有一定的难度,在这里介绍一种非递归实现二叉树遍历的方式。 1.前序遍历 1.1思路 其实对于二叉树的非递归实现,实际上就是用代码来…

Android HTTP使用(详细版)

前言 在面试过程中,HTTP 被提问的概率还是比较高的。 小林我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 + 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP 协议。 HTTP 基本概念 Get 与 Post HTTP 特性…

Linux系统使用(超详细,暑假弯道超车!!)

目录 Linux操作系统简介 Linux和windows区别 Linux常见命令 Linux目录结构 Linux命令提示符 常用命令 ls cd pwd touch cat echo mkdir rm cp mv vim vim的基本使用 grep netstat Linux面试题 Linux操作系统简介 Linux操作系统是和windows操作系统是并列的关系。只不过只…

GitHub上怎么寻找项目?

前言 下面由我精心整理的关于github项目资源搜索的一些方法,这些方法可以帮助你更快更精确的搜寻到你需要的符合你要求的项目。 写文章不易,如果这一篇问文章对你有帮助,求点赞求收藏~ 好,下面我们直接进入正题——> 首先我…

90%的测试工程师是这样使用Postman做接口测试的

一:接口测试前准备 接口测试是基于协议的功能黑盒测试,在进行接口测试之前,我们要了解接口的信息,然后才知道怎么来测试一个接口,如何完整的校验接口的响应值。 那么问题来了,那接口信息从哪里获取呢&…

选择排序算法

选择排序 算法说明与代码实现&#xff1a; 以下是使用Go语言实现的选择排序算法示例代码&#xff1a; package mainimport "fmt"func selectionSort(arr []int) {n : len(arr)for i : 0; i < n-1; i {minIndex : ifor j : i 1; j < n; j {if arr[j] < a…

杨辉三角,给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

题记&#xff1a; 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: …

Jenkins通过OpenSSH发布WinServer2016

上一篇文章> Jenkins集成SonarQube代码质量检测 一、实验环境 jenkins环境 jenkins入门与安装 容器为docker 主机IP系统版本jenkins10.10.10.10rhel7.5 二、OpenSSH安装 1、下载 官网地址&#xff1a;https://learn.microsoft.com/zh-cn/windows-server/administration/op…

JavaWeb教程笔记

JavaWeb Java Web 1、基本概念 1.1、前言 web开发&#xff1a; web&#xff0c;网页的意思 &#xff0c; www.baidu.com静态web html&#xff0c;css提供给所有人看的数据始终不会发生变化&#xff01; 动态web 淘宝&#xff0c;几乎是所有的网站&#xff1b;提供给所有人…

综合能源系统(5)——综合能源系统优化控制技术

综合能源系统关键技术与典型案例  何泽家&#xff0c;李德智主编 综合能源系统优化控制技术是打破原有各能源供用系统单独规划、单独设计和独立运行的既有模式&#xff0c;实现多能协同互补和综合能源系统稳定运行的关键技术&#xff0c;以实现能源高效利用与可再生能源消纳为…

3ds Max建模教程:模拟布料拖拽撕裂和用剑撕裂两种效果

推荐&#xff1a; NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 1. 拖拽撕布 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 在透视视口中创建平面。保持其长度 后座和宽度后座为 100。 创建平面 步骤 3 转到助手>假人并在 飞机的两侧。 助手>假人 步骤 4 选…