本专题文章对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。它在计算 PSNR、SSIM 和 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 flow,F)的转换 g(·) 而成,也可以通过结束帧 I_1 结合光流 F 转换而成,一般形式是两者的线性组合。

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

如图 2 所示:

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

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

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

如图 3 所示:

图 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_0、I_1 之间的光流进行近似:

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

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

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

图 9:主要 CNN 架构为 U-Net。

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

一、super slomo介绍相关推荐

  1. Super SloMo神经网络生成极慢视频(PyTorch实现)

    Super SloMo神经网络生成极慢视频(PyTorch实现) 文章目录: 一.论文相关介绍 1.论文相关地址 2.高速视频实现慢放的方式 3.Super SloMo生成中间帧的时间消耗 二.Sup ...

  2. Super SloMo:用神经网络脑补超级慢动作

    如今,人们对于视频帧率的追求越来越高,因为高帧率视频更加顺滑.流畅,能极大地提升人们的观看体验. 现有相机拍摄的视频帧率,也从 25 FPS(Frames Per Second) 不断提升到 60 F ...

  3. 二、slomo部分源码分析

    上篇文章<super slomo介绍>已经对slomo进行大概的介绍. 本章对该源码进行一个简单分析,由于本人笔记本显存不够,因此对该源码进行部分修改,可以减少显存占用和训练速度的提升.并 ...

  4. 光流Optical Flow介绍与OpenCV实现

    光流Optical Flow介绍与OpenCV实现 文章目录: 一.光流Optical Flow介绍 二.OpenCV实现光流 在学习Super SloMo神经网络生成极慢视频 的时候提到了光流的概念 ...

  5. python的super函数详解

    python基础知识 用于类继承的super函数介绍 目录 python基础知识 一.super函数的用途 二.了解super函数的基本信息 三.多继承不重复调用 四.多继承重复调用 总结 一.sup ...

  6. wordpress优化加速缓存插件:WP Super Cache

    就本身而言,一个完善的WordPress主题就可以解决很多需要安装插件的问题,就例如一个完善的主题可以完全不用安装任何的SEO主题,因为安装SEO相关的插件会占用大量的数据库,生成一些根本调用不多的数 ...

  7. 漏洞分析 | WP Super Cache远程代码执行漏洞分析

    0x01 WP Super Cache 介绍 WP Super Cache是WordPress的一个插件,主要用来缓存加速网页数据的. 笔者发现管理后台再向缓存配置文件写入数据时过滤不严谨导致可以植入 ...

  8. 清朝人如何变戏法?带你来看AI修复的1904年老电影(滑稽慎入)

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 清朝人如 ...

  9. 最先进的计算机视觉|AI和工业4.0之间,还有多远的差距?

    https://www.toutiao.com/a6646959085440729608/ 行业级最先进的 计算机视觉技术 如今,人工智能在工业领域有着蓬勃发展趋势,因为自动化以及优化仍是数字革命的主 ...

  10. 音视频技术开发周刊 81期

    『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新闻投稿,每周一期.点击『阅读原文』,浏览第81期内容,祝您阅读愉快. 架构 舞台现场直播技 ...

最新文章

  1. 安装了低版本Jdk后eclipse无法打开的终极解决方法
  2. 编程的精髓:发现问题,解决问题
  3. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(三)码农网
  4. Pandas中的 transform() 结合 groupby() 用法示例
  5. bootstrap组件
  6. [转载] Java中静态成员变量,静态代码块,静态内部类何时被初始化?
  7. Egret资源管理解决方案
  8. micro_macro
  9. Python实例讲解 -- 认识wxpython 的 Frame
  10. 2021年净利润同比增长75.9% 孟晚舟称华为已穿过劫难黑障区
  11. 敏捷 - #2 原则:欢迎更改要求 ( #2 Agile - Principle)
  12. [翻译]SharePoint2007中创建Forms认证方式的站点
  13. luogu2014 选课
  14. 信捷XC PLC与施耐德ATV12变频器通讯程序
  15. 【飞控开发基础教程3】疯壳·开源编队无人机-串口(基础收发)
  16. Android 游戏引擎libgdx之Box2D Hello Box2D
  17. Reference SoftReference WeakReference PhantomReference Cleaner 的研究与实践
  18. 【ABAP】-TSV_TNEW_PAGE_ALLOC_FAILED因ADRV底表数据过多,导致BP维护视图超资源瓶颈
  19. 筛选状态下进行复制粘贴为数值
  20. 架构设计文档模板之1:备选方案模板

热门文章

  1. ibus 五笔输入法 极点五笔6.1词库hack
  2. Java线程状态RUNNABLE详解
  3. 系统设计.如何设计一个秒杀系统(完整版)
  4. html与css知识点集合
  5. 多线程m3u8下载器 v1.0
  6. ArcGIS 地类净面积计算工具
  7. 百度拾取坐标系统平台根据点名获取坐标
  8. BME280嵌入式设计-基于STM32F103的温湿度气压控制板-支持蓝牙串口输出数据!!!
  9. 软件测试工程师在不同阶段需要掌握的技能
  10. 电脑软件推荐安装列表