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

本文提出了一个多帧光流估计模型 VideoFlow,旨在充分挖掘视频中的时序信息和运动规律,避免当前主流方法只以两帧图片作为输入而面临的信息瓶颈,显著提升了光流估计的性能。
在公开的 Sintel Bechmark 上,VideoFlow 在 Clean 和 Final 两个子集分别取得了 0.991 与 1.649 AEPE,与之前发表的最好结果(1.073 和 1.943)相比,误差下降了 7.6% 和 15.1%,并且是首个在 Clean 子集实现亚像素级别误差的模型。在自动驾驶 KITTI-2015 Benchmark 上,VideoFlow 实现了 3.65% 的 Fl-all error,相比之前发表的最好结果(4.52%)误差降低了 19.2%。模型与训练代码均已开源。

论文标题:
VideoFlow: Exploiting Temporal Cues for Multi-frame Optical Flow Estimation
论文链接:
https://arxiv.org/abs/2303.08340
代码链接:
https://github.com/XiaoyuShi97/VideoFlow

是基于什么样的思考完成了这篇文章?
光流的目标是估计源图象中每个像素在目标图片的对应位置。在许多下游视频处理任务中,如视频修复、动作识别、视频压缩、视频插帧,光流是表征图片间对应关系和场景内运动信息的基础性方法。
然而,主流的光流估计模型普遍只以相邻的两帧图片作为输入,面临以下两个问题。
两帧模型面临信息瓶颈:由于遮挡、大范围移动、弱纹理等情况存在,只以两帧图片作为输入进行光流预测面临极大的歧义(ambiguity)。
两帧模型与下游任务需求不匹配:大多数下游视频任务需要对视频的所有帧进行光流估计,由于缺乏相应的多帧光流模型,下游任务只能通过多次使用两帧模型获得光流估计。
因此,在本篇文章中,我们聚焦于多帧光流模型设计,充分利用更多帧输入图片带来的信息,大幅提高光流估计的准确性。另一方面,VideoFlow 同时估计双向光流,并且可以处理任意帧数的视频,更好满足下游视频任务的需求。

这项工作做了什么?
VideoFlow 主要由两部分组成。我们首先考虑以相邻三帧图片作为输入时,模型应该如何设计。我们提出了 TRi-frame Optical Flow(TROF)模块,核心在于同时预测从中间帧到前后两帧的光流,因为这两个方向的光流从相同的像素出发,避免之前方法由于单向 warp 光流无法对齐而产生的误差。
当输入帧数大于三帧时,基于三帧模块 TROF,我们额外引入一个运动传递(Motion Propagation)模块(MOP),通过在相邻的三帧模块之间传递运动信息,增大了在时序维度的感受野,进一步提高光流估计的准确性。
2.1 三帧模型

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

当输入多于三帧时,我们以相邻的三帧作为基础单元(stride 为 1),在每个三帧单元中延续之前的 TROF 模型。为了实现不同单元之间信息的传递与融合,我们提出了运动传递(Motion Propagation)模块(MOP)。
具体来说,每个三帧单元额外维护一个运动状态向量 M_t,在每一步迭代更新之前,前后两个三帧单元的运动状态向量(m_fwd 和 m_bwd)会根据光流 warp 到中间的三帧单元,实现相邻单元的信息传递。每个一步结束后,运动状态向量都会更新。由于我们采用迭代更新的方式,随着迭代步数的增加,时序维度的感受野会不断变大,每个三帧单元能获得更多的信息,因而能更加准确地估计光流。

实验结果

我们在 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%。

可视化分析

我们展示了 KITTI-2015 Benchmark 上的两个典型例子,其中白色表示预测结果为静止,不同颜色代表不同预测方向。
在第一行中,蓝框中的一束白光是典型的镜头炫光现象,FlowFormer++ 错误的将其识别成了运动的前景物体,而 VideoFlow 没有受到干扰,正确预测背景房屋的光流。
第二行蓝框中,指示牌反面与路过车辆颜色同为接近的灰色,因此 FlowFormer++ 将指示牌误认为车辆一部分(预测光流接近)。VideoFlow 得益于多帧信息,成功区分出指示牌为静止前景(蓝框内白色圆形区域),与移动的背景车辆运动不同。
更多阅读




#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
·
·

相关文章:
ICCV 2023 | 港中文MMLab: 多帧光流估计模型VideoFlow,首次实现亚像素级别误差
本文提出了一个多帧光流估计模型 VideoFlow,旨在充分挖掘视频中的时序信息和运动规律,避免当前主流方法只以两帧图片作为输入而面临的信息瓶颈,显著提升了光流估计的性能。 在公开的 Sintel Bechmark 上,VideoFlow 在 Clean 和 Fi…...
【python爬虫】—图片爬取
图片爬取 需求分析Python实现 需求分析 从https://pic.netbian.com/4kfengjing/网站爬取图片,并保存 Python实现 获取待爬取网页 def get_htmls(pageslist(range(2, 5))):"""获取待爬取网页"""pages_list []for page in pages:u…...
自动化运维工具—Ansible
一、Ansible概述1.1 Ansible是什么1.2 Ansible的特性1.3 Ansible的特点1.4 Ansible数据流向 二、Ansible 环境安装部署三、Ansible 命令行模块(1)command 模块(2)shell 模块(3)cron 模块(4&…...
uniapp 安卓平台签名证书(.keystore)生成
安装JRE环境 下载jre安装包:https://www.oracle.com/java/technologies/downloads/#java8安装jre安装包时,记录安装目录(例:C:\Program Files\Java\jdk-20)打开命令行(cmd),将JRE安装路径添加到系统环境变量 d: se…...
缓存中间件Redis常考知识点
缓存中间件Redis常考知识点 1 什么是RDB和AOF2 Redis的过期键的删除策略3 简述Redis事务实现4 Redis 主从复制的核⼼原理5 Redis有哪些数据结构?分别有哪些典型的应⽤场景?6 Redis分布式锁底层是如何实现的?7 Redis主从复制的核⼼原理8 Redis…...
detour编译问题及导入visual studio
Detours是经过微软认证的一个开源Hook库,Detours在GitHub上,网址为 https://github.com/Microsoft/Detours 注意版本不一样的话也是会出问题的,因为我之前是vs2022的所以之前的detours.lib不能使用,必须用对应版本的x64 Native To…...
江西武功山旅游攻略(周末两日游)
一、 往返路线 1: 出发路线 周五晚上上海出发坐火车🚄到江西萍乡(11.5小时,卧铺550左右) 打车到江西武功山景区,120-150元左右,人均30元,1小时10分左右到达 或者 🚗到达萍乡北之后 出站后步行200米到长途汽车站,乘旅游巴士直达武功山游…...
Django静态文件媒体文件文件上传
文章目录 一、静态文件和媒体文件1.在django中使用静态文件实践2.在django中使用媒体文件 二、文件上传单文件上传实践多文件上传 一、静态文件和媒体文件 媒体文件: 用户上传的文件,叫做media 静态文件:存放在服务器的css,js,image,font等 叫做static1.在django中…...
mysql 分库分表实现思路
MySQL的分库分表是一种常用的数据库拆分方案,它可以提高数据库的性能和扩展性。下面是一般的实现步骤: 数据库设计:首先,需要对数据库进行良好的设计。确定要分库分表的实体和关系,并根据业务需求进行合理的拆分。 数…...
Android深思如何防止快速点击
前言 其实快速点击是个很好解决的问题,但是如何优雅的去解决确是一个难题,本文主要是记录一些本人通过解决快速点击的过程中脑海里浮现的一些对这个问题的深思。 作者:流浪汉kylin 链接:https://juejin.cn/post/7197337416096055…...
PHP自己的框架cookie()使用(完善篇七)
1、PHP自己的框架cookie() 2、cookie类(CookieBase.php) <?php class CookieBase {/*** 设置cookie*/public static function set($name, $value, $expire 3600, $path , $domain , $secure false, $httponly false) {setcookie($name, $valu…...
Spring Boot Dubbo Zookeeper(含ZK安装脚本)
文章目录 Spring Boot Dubbo Zookeeper(含ZK安装脚本)简介DubboCommonProviderConsumer Zookeeper Spring Boot Dubbo Zookeeper(含ZK安装脚本) 简介 Dubbo Common 公共依赖 <!-- Spring Boot Starter --> <dependen…...
BigDecimal百科全书
一、BigDecimal简述 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。 一般情况下,…...
【30天熟悉Go语言】11 数组的全方位使用与解析
作者:秃秃爱健身,多平台博客专家,某大厂后端开发,个人IP起于源码分析文章 😋。 源码系列专栏:Spring MVC源码系列、Spring Boot源码系列、SpringCloud源码系列(含:Ribbon、Feign&…...
静态路由(详细理解+实例精讲)
系列文章目录 华为数通学习(6) 前言 一,静态路由 二,静态路由配置 三,缺省路由 四,缺省路由应用场景 总结 前言 随着华为公司的不断发展,数据通信这门技术也越来越重要,很多人…...
leetcode做题笔记118. 杨辉三角
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 思路一:动态规划 int** generate(int numRows, int* returnSize, int** returnColumnSizes){int **returnnum(int **)…...
stm32之24.RTC闹钟usart端口修改配置
(需要修改) 源码 while(1){//rtc唤醒事件if(g_rtc_wakeup_event){//获取日期RTC_GetDate(RTC_Format_BCD,&RTC_DateStructure);printf("20%02x/%02x/%02xWeek:%x\r\n",RTC_DateStructure.RTC_Year,RTC_DateStructure.RTC_Month,RTC_Date…...
Spring Security无法调用接口错误解决
之前在写程序的时候,发现有个接口使用postmapping发送请求一直无法进行调用 PostMapping("/user/login")public ResponseResult login(User user){//登录,这里登录的时候需要传入用户名和密码System.out.println("user "user.toSt…...
运维Shell脚本小试牛刀(二)
运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 一: if---else.....fi 条件判断演示 [rootwww shelldic]# cat checkpass.sh #!/bin/bash - # # # # FILE: ch…...
飞天使-python的模块与包与装饰器
文章目录 模块与包标准模块第三方模块自定义模块 高级语法切片迭代器/生成器高级模式(闭包)高级模式(装饰器) 参考视频 模块与包 标准模块 import os print(os.getcwd())import sys print(sys.argv) print(sys.platform) print(…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
