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(…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
