一、super slomo介绍

2023-11-19

本专题文章对super slomo进行一系列操作,降低训练时间、预测时间、导出训练模型、C++调用模型进行预测等。本章对其进行一个简单介绍,来自互联网。

2018年CVPR的论文《Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation 》. 探讨了如何将普通设备录制的视频转换为高帧率慢动作视频。这项工作的原理是在临近的两帧之间补充额外的画面帧。让我们先来看一下效果:

原视频为 30FPS。看起来没毛病吧,那慢速播放之后呢?

 

看下图上方,原来流畅的甩尾变得像是一张张照片摆拍凑出来的定格动画(P 水花比甩尾简单多了吧),但经过算法补帧变成 240FPS 之后,下方的片段立刻有了 Fast & Furious 即视感。

遗憾的是,作者发布论文的时候并没有放出数据集和代码,让想要实现这一炫酷技术的 geek 们大失所望。GitHub 一位名为 avinashpaliwal 的用户开源了自己对 Super SloMo PyTorch 实现:

结果

使用作者提供的评估脚本在 UCF101 数据集上的结果。用的脚本是 et_results_bug_fixed.sh。它在计算 PSNRSSIM IE 时使用了运动掩码(motions mask)。

先决条件

该代码库是用 pytorch 0.4.1 CUDA 9.2 进行开发测试的。

训练

准备训练数据

要使用提供的代码训练模型,首先需要以某种方式格式化数据。

create_dataset.py 脚本使用 ffmpeg 从视频中提取帧。

至于 adobe240fps,下载下面这个数据集,解压并运行以下命令:

python datacreate_dataset.py --ffmpeg_dir pathtoffmpeg --videos_folder pathtoadobe240fpsvideoFolder --dataset_folder pathtodataset --dataset adobe240fps

数据集:http://www.cs.ubc.ca/labs/imager/tr/2017/DeepVideoDeblurring/DeepVideoDeblurring_Dataset_Original_High_FPS_Videos.zip

评估

预训练模型

你可以从以下地址下载在 adobe240fps 数据集上训练的预训练模型:

https://drive.google.com/open?id=1IvobLDbRiBgZr3ryCRrWL8xDbMZ-KnpF

摘要:给定两个连续的帧,视频插值旨在生成中间帧,以形成空间和时间相干的视频序列。大多已有的方法都集中于单帧插值上,本文提出了一种用于可变长度多帧视频插值的端到端卷积神经网络,其中运动解释(motion interpretation)和遮挡推理(occlusion reasoning)是联合建模的。该研究从使用 U-Net 架构计算输入图像之间的双向光流开始。随后,这些流在每个时间步被线性组合,以近似中间双向光流。然而,这些近似流仅在局部平滑区域有用,且在运动边界周围产生伪影。

为了解决这个不足,作者利用另一个 U-Net 来细化近似流并预测软可视图(soft visibility map)。最终,两个输入图像被变形并线性融合以形成每个中间帧。通过在融合之前把可视图应用于变形的图像上,作者排除了遮挡像素对插值中间帧的贡献,以避免伪影。由于所学到的网络参数都不依赖于时间,所以本文的方法能够根据需要产生很多中间帧。作者使用 1132 个每秒 240 帧的视频片段(包含 30 万个单独的视频帧)来训练其网络。在多个数据集上的实验(预测不同数量的插值帧)结果表明本文的方法比现有的方法性能更好。

方法

研究者使用了光流插值的方法来合成中间帧,基于两个关键要素:时间一致性和遮挡推断。

时间一致性是指:中间帧 I_t 可以通过初始帧 I_0 结合光流(optic flowF)的转换 g(·) 而成,也可以通过结束帧 I_1 结合光流 F 转换而成,一般形式是两者的线性组合。

http://5b0988e595225.cdn.sohucs.com/images/20181229/414e711c9dad44c7959f394814d7e1e4.png

一般而言,随着时间流动,I_t 的图像特征会从更接近 I_0 变得更接近 I_1,所以α_0 应该是 t 的线性函数(不考虑遮挡时)。当 t=0 时,α_0=1;当 t=1 时,α_0=0

如图 2 所示:

http://5b0988e595225.cdn.sohucs.com/images/20181229/ef357f02565641ad87e1325aa8d2dc40.jpeg

2:光流插值结果的示例,其中 t=0.5。完整的场景向左移动(摄像头平移),摩托车也向左移动。最后一行展示了光流插值 CNN 的微调主要在运动边界处进行(像素越白,微调程度越高)。

遮挡推断是指:在 I_0 中出现的像素(或物体),在 I_1 中可能不出现,反之亦然。那么就要考虑 I_t 在遮挡情况下对两个输入帧的权重,用可视图(visibility mapsV)表示。

所以,最终的中间帧合成等式为(Z 是归一化因子):

http://5b0988e595225.cdn.sohucs.com/images/20181229/a7b8579a8f7c4b8db8d0b61f87f4faae.png

如图 3 所示:

http://5b0988e595225.cdn.sohucs.com/images/20181229/2d769a9a2d174d3bb888cf0e5e8d60db.jpeg

http://5b0988e595225.cdn.sohucs.com/images/20181229/0f56e1a2789647cea4d49bad9463d45b.jpeg

3:预测可视图的样本,其中 t=0.5。运动员的手从 T=0 T=1 往上举。因此手臂右上方区域在 T=0 时是可见的,在 T=1 时是不可见的(被遮挡)。第四行的可视图清晰地展示了这个现象。V_t←0 中手臂周围的白色区域表示 I_0 中的这些像素对合成ˆI_t 的贡献最大,黑色区域表示这些像素对合成ˆI_t 的贡献最小。V_t←1 也是同样的道理。

由于中间帧本身是需要预测的,不是预先存在的,因此需要用 I_0 I_1 之间的光流对 I_t I_0I_1 之间的光流进行近似:

http://5b0988e595225.cdn.sohucs.com/images/20181229/29fdccce97ab4aab95ddd76a69296a29.jpeg

此外关于遮挡推断,同样很自然地假设:当 t 接近 0 的时候,I_t 更接近 I_0;当 t 接近 1 的时候,I_t 更接近 I_1

http://5b0988e595225.cdn.sohucs.com/images/20181229/afa030facdb741b69c02e1d65c3e3411.png

所以,最终的架构设计如下:其分为两个阶段,第一个阶段将 I_0I_1 输入到光流计算 CNN 中,得到两者之间正向和反向的光流;第二个阶段再以 I_0 I_1 之间的光流、I_0 I_1I_0 I_1 I_t 的变换函数、I_0 I_1 I_t 的近似光流为输入,得到可视图以及 I_0 I_1 I_t 的近似光流的增量。结合这些量,就可以直接算出最终的 I_t,如下图所示。

http://5b0988e595225.cdn.sohucs.com/images/20181229/40b56f45056c4c0384fe4cf4f796efa9.jpeg

损失函数分为四个项:重建损失(Reconstruction loss),合成帧和数据集中间帧的 L1 损失;感知损失(perceptual loss),减少图像模糊;转换损失(Warping loss.),图像帧和经其它帧光流变换输出之间的 L1 损失;平滑度损失(Smoothness loss),限制光流函数的梯度。

http://5b0988e595225.cdn.sohucs.com/images/20181229/8abe4d37d8e545d68da9d8bdf9bfb996.jpeg

9:主要 CNN 架构为 U-Net

 

 

 

转载:https://www.sohu.com/a/285435820_129720

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一、super slomo介绍 的相关文章

  • 网络安全体系方法论

    安全牛整合多位资深安全顾问的一线咨询经验 首次公开发布 网络安全体系方法论 旨在给企业或机构提供一个最佳实践的参考 以帮助企业真正提升对网络安全工作的认识 并在安全建设和运营中不断成长 本架构方法论参考了NIST Cybersecurity

随机推荐

  • 什么是流程图

    什么是流程图 流程图是对过程 算法 流程的一种图像表示 在技术设计 交流及商业简报等领域有广泛的应用 通常用一些图框来表示各种类型的操作 在框内写出各个步骤 然后用带箭头的线把它们连接起来 以表示执行的先后顺序 用图形表示算法 直观形象 易
  • How does double arrow (=>) operator work in Perl?

    原文链接 https stackoverflow com questions 4093895 how does double arrow operator work in perl The use of the gt operator ca
  • Ant Design Pro从零到一(认识AntD)

    废话 在我们第一次接触AntD的时候 会遇到两个东西 一个是Ant Design 另一个是Ant Design Pro 他们的官网分别是 Ant Design 一套企业级 UI 设计语言和 React 组件库 Ant Design Pro
  • 商品期货策略-ATR通道突破策略

    实现平台 BigQuant 人工智能量化投资平台 可在文末前往原文一键克隆代码进行进一步研究 导语 商品期货交易上线啦 听闻这个消息的小编当然坐不住了 决定立刻商品期货走一波 本文选择实现的是经典的ATR通道突破策略 也被称为波动性突破策略
  • C++——详解类模板与友元函数

    纵有疾风起 人生不言弃 本文篇幅较长 如有错误请不吝赐教 感谢支持 文章目录 类模板与友元函数 1 非模板友元函数 2 约束模板友元函数 3 非约束模板友元函数 类模板与友元函数 模板类的友元函数有三类 1 非模板友元函数 友元函数不是模板
  • 【2023秋招面经】深信服 前端 一面(1h)

    自我介绍 项目比较有难度的地方 你刚刚说Vue3按功能来组合 不是按Option API组合 你简单写一下伪代码 实现一个计时器 进入这个模块计时器开始计时 离开页面则销毁 在中间过程中 获取计时的时间 function useTime 实
  • JavaScript动态生成表格

    源代码
  • 修改 TeamViewer ID 的方法:

    TeamViewer 使用频繁后会被判定为商业用途 不可用 此软件的账号和设备mac地址绑定 修改TeamViewer ID后可以重新开始使用 下述方法可以成功修改TeamViewer ID 关闭TeamViewer 开始 gt 运行 录入
  • element-table新增 以input框形式输入

    工作遇到的问题记录下 代码如下 选了其中一行做例子
  • 好用的在线画图工具processon

    ProcessOn是一款基于SaaS的前沿 高效线上作图工具 它将Visio Xmind等专业作图工具搬到了 云端 注册链接 https www processon com i 564bf42ce4b0a080c6d1b18f 保存 分享都
  • go字符串详解

    文章目录 摘要 1 byte和rune类型 2 字符串 string 3 练习 反转字符串 摘要 go字符串结构体包含 指向底层存储数组的指针 字符串长度 字符串按utf 8将字符编码成二进制数 然后存储在byte数组中 因为utf 8编码
  • gin jwt-go 生成token及jwt中间件验证

    一 定义jwt中间件 同时将 生成token 验证token token中间件handlerfunc都写在中间件文件中 基于 github com dgrijalva jwt go 包 gin框架 obj middleware jwt go
  • 回声消除(AEC)原理、算法及实战——AEC背景介绍

    回声就是声音信号经过一系列反射之后 又听到了自己讲话的声音 这就是回声 一些回声是必要的 比如剧院里的音乐回声以及延迟时间较短的房间回声 而大多数回声会造成负面影响 比如在有线或者无线通信时重复听到自己讲话的声音 回想那些年我们开黑打游戏时
  • EL表达式向select中赋值

    在使用el表达式的时候 有时需要向select下拉菜单中赋值 可以使用三目运算法进行赋值
  • 3. ClickHouse数据类型和表结构

    3 1 数据类型 整数类型 整数类型有Int8 Int16 Int32 Int64 分别表示8位 16位 32位和64位有符号整数 适用场景 存储整数值 如年龄 数量等 浮点类型 浮点类型有Float32和Float64 分别表示32位和6
  • Jenkins自动化部署项目

    Jenkins史上最详细的使用教程 jenkins官网 jenkins简单部署Vue项目 jenkins部署springboot项目 jenkins详细部署说明 后续小编会写上自己的使用心得 jenkins官网 https www jenk
  • 计算机用于更新无法卸载补丁,出现windows 系统补丁无法卸载该怎么解决?简单几步即可解决...

    电脑已经成为我们日常生活中的必备品 长期使用电脑肯定会碰到win10系统kb4034674无法卸载提示 没有成功卸载全部更新的问题 很多用户之前从未遇到win10系统kb4034674无法卸载提示 没有成功卸载全部更新这样的问题 其实win
  • 【前端基础知识复习】

    js基础知识复习 原型链 继承 原型链继承 经典继承 借用构造函数 组合继承 1和2结合 常用 原型式继承 ES5 Object create 寄生式继承 寄生组合继承 最理想 作用域与作用域链 闭包 立即执行函数 typeof和insta
  • 服务器内核有未知文件,【原创文章】CENTOS kernel panic无法对未知的块安装根文件系统的解决办法...

    今天突然发现维护的linux系统无法访问了 网站打不开 SSH无法登陆 后台面板也没有响应 打开机房的管理后台 reboot服务器 过了一会还是没有反应 有点纳闷 这是商业网站 不敢怠慢 马上开工找问题 打开机房准备的KVM KVM是基于j
  • 一、super slomo介绍

    本专题文章对super slomo进行一系列操作 降低训练时间 预测时间 导出训练模型 C 调用模型进行预测等 本章对其进行一个简单介绍 来自互联网 2018年CVPR的论文 Super SloMo High Quality Estimat