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(…...

linux shell脚本利用 kill -0 检查进程是否存在
1.kill -0介绍 kill -0 pid用来检查进程是否存在,kill -0 pid解释(来自man kill):“If sig is 0, then no signal is sent, but error checking is still performed.”不发送任何信号,但是系统会进行错误检查。 kill -0 pid ->若存在&am…...

抖音视频删了怎么在电脑上找回来
【昨天整理电脑文件时,不小心将剪辑好的抖音作品误删了,但是回收站中找不回来了,这些视频是我花了很多心血制作的,如果没了真的十分可惜!希望大家能帮帮我,告诉我应该如何恢复这些文件。】 现在人们都喜欢…...

方面级别情感分析之四元组预测
情感四元组预测现有方法 阅读本文之前我们默认你对情感分析有基本的认识。 如果没有请阅读文章(https://tech.tcl.com/post/646efb5b4ba0e7a6a2da6476) 情感分析四元组预测涉及四个情感元素: 方面术语a,意见术语(也叫观点术语)o, 方面类别ac,…...

算法 稀疏数组 数组优化 数组压缩 二维数组转稀疏数组 算法合集(二)
1. 五子棋游戏,玩家对战一半停战休息,此时需要存储当前对战双方棋子信息 a. 采用二维数组存储: 0为空, 1代表黑棋 2代表蓝色棋子 b. 棋盘为11行,11列 > int [][] chessArray new int [11][11]; c. 出现的问题&am…...

交换机端口安全实验
文章目录 一、实验的背景与目的二、实验拓扑三、实验需求四、实验解法1. PC配置IP地址部分2. 在SW1上开启802.1X身份验证3. 创建一个用户身份验证的用户。用户名为wangdaye,密码为1234564.创建一个端口隔离组,实现三台PC无法互相访问 摘要: 本…...

c# 本地化中英文切换
区域 线程默认区域为当前计算机所选区域 设置当前区域: Thread.CurrentThread.CurrentCulture new CultureInfo(“zh-cn”); 获取当前区域: Console.WriteLine(Thread.CurrentThread.CurrentCulture.ToString()); 区域名称: “zh-cn” 中文…...

rabbitmq的优先级队列
在我们系统中有一个 订单催付 的场景,我们的客户在天猫下的订单 , 淘宝会及时将订单推送给我们,如果在用户设定的时间内未付款那么就会给用户推送一条短信提醒,很简单的一个功能对吧,但是,tianmao商家对我们来说&#…...

SpringBoot的Cacheable缓存注解
当我们的应用程序需要频繁地读取和写入数据时,为了提高应用程序的性能,我们通常会使用缓存技术。Spring Boot 提供了一种简单而强大的缓存框架,它可以轻松地将数据缓存到 Redis 中。 在 Spring Boot 中可以在方法上简单的加上注解实现缓存。…...

uniapp的 picker 日期时间选择器
效果图: dateTimePicker.js function withData(param){return param < 10 ? 0 param : param; } function getLoopArray(start,end){var start start || 0;var end end || 1;var array [];for (var i start; i < end; i) {array.push(withData(i))…...

element ui-Pagination
页面分为两个表格,当两边的表格数据量大时,分页样式就会受到影响,可以将跳转按钮的个数减少 页面分页代码如下 页面效果...