ICCV 2023 | 港中文MMLab: 多帧光流估计模型VideoFlow,首次实现亚像素级别误差

news2024/10/7 6:43:22

7995fd7d3ddf25dadf305bb92b38eb82.gif

本文提出了一个多帧光流估计模型 VideoFlow,旨在充分挖掘视频中的时序信息和运动规律,避免当前主流方法只以两帧图片作为输入而面临的信息瓶颈,显著提升了光流估计的性能。

在公开的 Sintel Bechmark 上,VideoFlow 在 Clean 和 Final 两个子集分别取得了 0.9911.649 AEPE,与之前发表的最好结果(1.073 和 1.943)相比,误差下降了 7.6% 和 15.1%,并且是首个在 Clean 子集实现亚像素级别误差的模型。在自动驾驶 KITTI-2015 Benchmark 上,VideoFlow 实现了 3.65% 的 Fl-all error,相比之前发表的最好结果(4.52%)误差降低了 19.2%。模型与训练代码均已开源。

d9fe33cdd17bb0df6b6e79006e7047b3.png

论文标题:

VideoFlow: Exploiting Temporal Cues for Multi-frame Optical Flow Estimation

论文链接:

https://arxiv.org/abs/2303.08340

代码链接:

https://github.com/XiaoyuShi97/VideoFlow

71531e07ff7a383db3c5779dd28d0ece.png


是基于什么样的思考完成了这篇文章?

光流的目标是估计源图象中每个像素在目标图片的对应位置。在许多下游视频处理任务中,如视频修复、动作识别、视频压缩、视频插帧,光流是表征图片间对应关系和场景内运动信息的基础性方法。

然而,主流的光流估计模型普遍只以相邻的两帧图片作为输入,面临以下两个问题。

  1. 两帧模型面临信息瓶颈:由于遮挡、大范围移动、弱纹理等情况存在,只以两帧图片作为输入进行光流预测面临极大的歧义(ambiguity)。

  2. 两帧模型与下游任务需求不匹配:大多数下游视频任务需要对视频的所有帧进行光流估计,由于缺乏相应的多帧光流模型,下游任务只能通过多次使用两帧模型获得光流估计。

因此,在本篇文章中,我们聚焦于多帧光流模型设计,充分利用更多帧输入图片带来的信息,大幅提高光流估计的准确性。另一方面,VideoFlow 同时估计双向光流,并且可以处理任意帧数的视频,更好满足下游视频任务的需求。

c4e70b3f78382531e8077ad9bec2d5f4.png


这项工作做了什么?

VideoFlow 主要由两部分组成。我们首先考虑以相邻三帧图片作为输入时,模型应该如何设计。我们提出了 TRi-frame Optical Flow(TROF)模块,核心在于同时预测从中间帧到前后两帧的光流,因为这两个方向的光流从相同的像素出发,避免之前方法由于单向 warp 光流无法对齐而产生的误差。

当输入帧数大于三帧时,基于三帧模块 TROF,我们额外引入一个运动传递(Motion Propagation)模块(MOP),通过在相邻的三帧模块之间传递运动信息,增大了在时序维度的感受野,进一步提高光流估计的准确性。

2.1 三帧模型

e3f093ccb8282f0623eef2cbe64507b4.png

当输入为三帧相邻的图片时,使用共享权重的特征编码器获得对应特征图,然后分别构建中间帧与前后两帧的 cost volume。我们采用类似 RAFT 的结构,迭代优化光流估计。不同之处在于,在每一步迭代时,我们采用最简单的 concat 操作,将输入变为双方向的 cost feature 和当前估计的双向光流值。通过综合双向的相似性信息和运动信息,TROF 模型能利用额外的一帧提高光流估计的准确性。

2.2 多帧模型

3527ad1d72761c7ee125521fe7a37c15.png

当输入多于三帧时,我们以相邻的三帧作为基础单元(stride 为 1),在每个三帧单元中延续之前的 TROF 模型。为了实现不同单元之间信息的传递与融合,我们提出了运动传递(Motion Propagation)模块(MOP)。

具体来说,每个三帧单元额外维护一个运动状态向量 M_t,在每一步迭代更新之前,前后两个三帧单元的运动状态向量(m_fwd 和 m_bwd)会根据光流 warp 到中间的三帧单元,实现相邻单元的信息传递。每个一步结束后,运动状态向量都会更新。由于我们采用迭代更新的方式,随着迭代步数的增加,时序维度的感受野会不断变大,每个三帧单元能获得更多的信息,因而能更加准确地估计光流。

4fa024773e933a01b36cf70214504d3f.png


实验结果

7c57b0e771fee7bad267ca9cd50af39d.png

我们在 Sintel 和 KITTI-2015 两个数据集上评测 VideoFlow。其中 Sintel 有 Clean 和 Final 两个子集,它们内容相同的,但是 Final 子集中的图象存在运动模糊,因而更加困难。

我们的三帧模型已经超越了之前所以发表的方法。五帧模型进一步提高了准确度。值得注意的是,VideoFlow 是首个在 Sintel Clean 子集实现亚像素级别误差的方法。

具体而言,在 Sintel Bechmark 上,VideoFlow 在 Clean 和 Final 两个子集分别取得了 0.991 与 1.649 AEPE,与之前发表的最好结果(1.073 和 1.943)相比,误差下降了 7.6% 和 15.1%。在自动驾驶 KITTI-2015 Benchmark 上,VideoFlow 实现了 3.65% 的 Fl-all error,相比之前发表的最好结果(4.52%)误差降低了 19.2%。


51cea2f98a0af1196d398e88431dcb2a.png


可视化分析

01c2c3bba472f0c13d32354e079cb2bb.png

我们展示了 KITTI-2015 Benchmark 上的两个典型例子,其中白色表示预测结果为静止,不同颜色代表不同预测方向。

在第一行中,蓝框中的一束白光是典型的镜头炫光现象,FlowFormer++ 错误的将其识别成了运动的前景物体,而 VideoFlow 没有受到干扰,正确预测背景房屋的光流。

第二行蓝框中,指示牌反面与路过车辆颜色同为接近的灰色,因此 FlowFormer++ 将指示牌误认为车辆一部分(预测光流接近)。VideoFlow 得益于多帧信息,成功区分出指示牌为静止前景(蓝框内白色圆形区域),与移动的背景车辆运动不同。

更多阅读

9c414734e77cd36fcc98750b4ee3a00e.png

514568fa88f85f3412d758fba55685ab.png

0dd7a49af0d2d190bdf91d2c7c21b4cb.png

dd4fc9cb40560ba40945ca42882a7e0a.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

a445c1c8e7abddd3327c2ae24384aa71.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

752ca247a4d3046bb8f4c2f11d1e3c56.jpeg

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

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

相关文章

过期订单关闭

由于Redis具有过期监听的功能,于是就有人拿它来实现过期订单关闭,但是这个方案并不完美。今天来聊聊11种实现订单定时关闭的方案,总有一种适合你! 在电商、支付等系统中,一般都是先创建订单(支付单&#x…

七牛云OSS存储

前言: 七牛云的存储项目的附件,需要开发一套七牛云的工具类,可以使用该工具类进行七牛云服务器进行文件的上传与下载操作; 七牛云的文档学习: 相关的依赖项的配置: <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3…

如何改善客户服务?

提供优质的客户服务是经营成功企业的一个重要方面。满意的客户更有可能成为回头客&#xff0c;并向他人推荐你的产品或服务。在当今竞争激烈的市场中&#xff0c;良好的客户服务可能是一家繁荣的企业与一家艰难生存的企业的区别。今天&#xff0c;我们就改善客户服务6个行之有效…

面试官眼中的理想候选人:如何成为他们的首选

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

测试理论与方法----测试流程第五个步骤:测试总结报告

10、通用测试技术 1、测试总结报告概述 定义&#xff1a;把测试过程和结果整理成文档&#xff0c;对发现的问题和缺陷进行分析&#xff0c;为纠正软件的质量提供依据&#xff0c;同时为后续的验收和交付打下基础。测试报告是测试阶段最后的产出&#xff0c;一份详细的测试报告…

【已解决】为什么RAR压缩包里的文件无法删除?

小伙伴们是否遇到过这样的问题&#xff1f;打开RAR压缩包&#xff0c;想要删除里面的文件却发现无法删除&#xff0c;提示“不支持当前操作”。 其实&#xff0c;这是文件在压缩的时候设置了“锁定压缩文件”&#xff0c;设置后&#xff0c;除了无法删除压缩包里的文件&#xf…

控制ATOS/HYDAC/VICKERS比例插装阀线圈放大器

驱动各种国产或进口品牌开环控制比例插装式阀的线圈&#xff0c;如SUN/ATOS/HYDAC/VICKERS/REXROTH/HYDRAFORCE等品牌比例插装式方向阀、流量阀、压力阀、叠加阀等。 比例放大器参数&#xff1a; 电源24VDC标准&#xff1b; 输入指令0-10V、4-20 mA、0-5V可选&#xff1b; …

线上排查定位OOM问题的记录

整体思路&#xff1a;把机器上的快照文件下载到本地电脑&#xff0c;用eclipse analyzer打开它&#xff0c;找到是哪一行导致oom。 注&#xff1a;日志里看不到报错信息是因为 还没有来得及记录到日志文件&#xff0c;就down了。 把该文件下载到本地电脑&#xff0c;可以借助x…

八、代理模式

一、什么是代理模式 代理模式的定义&#xff1a;由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0c;代理对象作为访问对象和目标对象之间的中介。 代理模式的主要角色如下: 抽象主题&#xff08…

OutOfMemoryError内存溢出和StackOverFlowError栈溢出及解决方法

前一篇&#xff1a;JVM 内存结构 StackFlowError&#xff08;栈溢出&#xff09; 线程的堆栈存储 线程局部原始数据类型、变量、对象的引用、返回值。如果线程堆栈大小超出分配的内存限制&#xff0c;就会出现栈溢出错误。 这里用递归调演示错误 解决方法&#xff1a; 1、修…

初始Linux进程间通信(单机)

目录 1、前言 2、进程间通信的分类 管道 System V IPC POSIX IPC 3、管道 3.1 匿名管道 pipe 实例代码 管道读写规则&#xff1a; 管道特点 3.2 命名管道 创建一个命名管道 两个进程间使用命名管道进行通信示例代码 4、system V共享内存 4.1 共享内存数据结构 …

【档案专题】八、电子档案鉴定与销毁

导读&#xff1a;主要针对电子档案鉴定与销毁相关内容介绍。对从事电子档案管理信息化的职业而言&#xff0c;不断夯实电子档案管理相关理论基础是十分重要。只有通过不断梳理相关知识体系和在实际工作当中应用实践&#xff0c;才能走出一条专业化加职业化的道路&#xff0c;从…

Java虚拟机内部组成

1、栈区 public class Math {public int compute(){//一个方法对应一块栈帧内存区域int a l;int b 2;int c (a b)*10;return c; } public static void main(String[] args){Math math new, Math() ;math.compute() ;System.out.println("test");}} 栈是先进后出…

29 - restful - 套叠结构

套叠结构的两种方式: 1. marshal(数据,返回的格式) 函数 2. marshal_with(加工后的返回格式)装饰器 返回格式必须是符合json格式,如果直接返回不能用自定义的对象:User,Friend... 需要 marchal(),marchal_with()帮助进行转换 一. 定义模型类 一. marshal(数据,返回的结构) …

ssh访问远程宿主机的VMWare中NAT模式下的虚拟机

1.虚拟机端配置 1.1设置虚拟机的网络为NAT模式 1.2设置虚拟网络端口映射(NAT) 点击主菜单的编辑-虚拟网络编辑器&#xff1a; 启动如下对话框&#xff0c;选中NAT模式的菜单项&#xff0c;并点击NAT设置&#xff1a; 点击添加&#xff0c;为我们的虚拟机添加一个端口映射。…

java八股文面试[数据库]——MySQL索引的数据结构

知识点&#xff1a; 【2023年面试】mysql索引的基本原理_哔哩哔哩_bilibili 【2023年面试】mysql索引结构有哪些&#xff0c;各自的优劣是什么_哔哩哔哩_bilibili

巨擘科技|国内数据交易现状梳理及典型交易平台对比分析(附建设方案)

近年来,在国家促进要素市场化配置系列政策指导下,各地方政府有关部门单位均在积极探索数据要素市场化运行机制,在推进数据要素价值体系建立、数据要素市场规则构建等工作方面已初具成效。 基于此,本文选取国内相关典型政府主导型的数据交易平台进行案例分析,并揭示其特点…

【高性能计算】opencl语法及相关概念(三)事件,内存

opencl中的事件概念 当谈到OpenCL中的事件时&#xff0c;它们代表了执行的各个阶段或操作的状态信息。通过使用事件&#xff0c;您可以跟踪和管理内核执行以及内存操作的进度和顺序。以下是与OpenCL事件相关的关键概念&#xff1a; 创建事件&#xff1a;您可以使用clCreateUse…

动态数组 Vector(难度1)(V)

C数据结构与算法实现&#xff08;目录&#xff09; 前驱课程 C 精简教程 目录&#xff08;必读&#xff09; 堆数组 heap array 面相对象的堆数组 1 原始堆数组的缺点&#xff1a; 1&#xff09; 原始堆数组 其长度是固定不变的。 2&#xff09; 使用指针管理元素&#…

数据大小无限制!海量倾斜摄影三维模型在线查看及分享

通常&#xff0c;倾斜摄影三维模型数据量都较大&#xff0c;这是由其高精度、对地表全覆盖的真实影像所决定的。如何将海量倾斜摄影模型数据加载到地图中并进行在线查看是行业用户一直关心的内容&#xff0c;现在通过「四维轻云」就可以在线查看及分享倾斜摄影三维模型。 1、倾…