乐趣区

关于深度学习:Super-SloMo用神经网络脑补超级慢动作

现在,人们对于视频帧率的谋求越来越高,因为高帧率视频更加顺滑、晦涩,能极大地晋升人们的观看体验。

现有相机拍摄的视频帧率,也从 25 FPS(Frames Per Second) 一直晋升到 60 FPS,再到 240 FPS 甚至更高。

在绝大多数电影帧率 24 的当下,李安的《双子杀手》,以 120 的帧率实现电影技术的变革

然而,高帧率的摄像设施,对于内存需要十分大,而且老本昂扬,尚不能遍及。为了在没有业余设施的状况下,可能失去高帧率的视频,视频插帧技术应运而生。

而英伟达提出的 AI「脑补」大法 Super SloMo,则在泛滥视频插帧技术中一骑绝尘,即便帧率仅仅为 30 帧的视频,也能够 Super SloMo 补成 60 帧、240 帧甚至更高。

传统插帧办法优劣势一览

为了更好地了解 Super SloMo,咱们首先来理解一下现有的较为传统的视频插帧技术。

帧采样

帧采样就是用关键帧来做弥补帧,其实质就是拉长每一个关键帧的显示工夫,相当于并没有插帧。除了取得文件属性更高的帧率和在同视频品质下更大的文件体积外,不会带来任何视觉观感上的晋升。

长处: 帧采样耗费资源少,速度快。

毛病: 可能会使得视频看起来不是很晦涩。

帧混合

帧混合,顾名思义,就是晋升前后关键帧的透明度,再将其混合成一个新的帧,来填补空缺。

长处: 计算所需时长短。

毛病: 成果不佳。因为只是简略的把原关键帧变成半透明状,静止物体轮廓在前后两帧交叠的时候,就会产生显著的含糊场景,对视频的视觉效果晦涩水平晋升很小。

静止弥补

静止弥补(Motion Estimation and Motion Compensation,简称 MEMC),其原理是在程度和垂直两个方向上,对两帧之间的差别寻找呈现静止的块,通过剖析图像块的静止趋势,再辅以计算失去两头帧

MEMC 次要被利用于电视、显示器和挪动端,晋升视频帧率,给观众更加晦涩的观感。

长处: 减小静止抖动,削弱画面拖尾与虚影,晋升画面清晰度。

毛病: 对于静止物体背景比较复杂的状况,就会呈现物体边缘运动的 bug。

光流法

光流法是计算机视觉钻研中的一个重要方向,其依据高低帧来推断像素挪动的轨迹,主动生成新的空缺帧。有点相似于静止含糊计算方法。

长处: 画面更晦涩、卡顿感弱。

毛病: 计算量大, 耗时长;对光线敏感,在光线变动较大的状况下,容易呈现画面错乱的谬误。

Super SloMo:AI 插帧法,堪称业界经典

在 2018 年计算机顶会 CVPR 上,英伟达公布的论文 《Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation》 中,提出了 Super SloMo,在业界引起宽泛关注。

《超级慢动作:用于视频多个两头帧插值的的高质量预计》

查看论文:请点击此处

Super SloMo 不同于传统办法,它利用深度神经网络来实现补帧,基本思路为:应用大量一般视频与慢动作视频进行训练,而后让神经网络学会推理,依据失常视频生成高质量的超级慢动作视频。

Super SloMo 办法框架图,包含光流计算模块(左)与特定工夫流插值模块(右)

Super SloMo 团队提出的办法,其整个框架依赖于两个全卷积神经网络  U-Net。

首先,用一个 U-Net 来计算相邻输出图像之间的双向光流。而后,在每个工夫步长上对这些光流进行线性拟合,以近似两头帧的双向光流。

为了解决静止边界呈现伪影的问题,应用另一个 U-Net 来对近似的光流进行改善,并且预测柔性可见性映射关系。最初,将输出的两张图像进行扭曲和线性交融,从而造成两头帧。

此外,Super SloMo 的光流计算网络和插值网络的参数,都不依赖于被插值帧的特定工夫步长(工夫步长被做为网络的输出)。因而,它能够并行地在两帧之间的任意工夫步长上插帧,从而冲破了很多单帧插值办法的局限性。

原始 SloMo 视频(上),Super SloMo 补帧后的超级慢动作视频(下)

作者示意,应用他们未经优化的 PyTorch 代码,在单个 NVIDIA GTX 1080Ti 和 Tesla V100 GPU 上,生成 7 个分辨率为 1280*720 的两头帧,别离只须要 0.97 秒和 0.79 秒。

为了训练网络,作者从 YouTube 和手持摄像机上收集了多个 240 帧的视频。总计收集了 1100 个视频段,由 30 万张 1080×720 分辨率的独立的视频帧组成。 这些视频从室内到室外,从动态相机到动静相机,从日常流动到业余静止,蕴含了各类场景。

之后在其它数据集上对模型进行了验证,结果表明,该钻研在这些数据集上比现有的办法性能上有了显著的进步。

戳下方官网演示视频,观看更多成果展现:教程传送门

跟着教程,一键实现 Super SloMo

尽管英伟达这一论文的作者尚未公开数据集和代码,不过,高手在民间,GitHub 上一位名为为 avinashpaliwal 的用户,曾经开源了本人对 Super SloMo 的 PyTorch 实现,其后果与论文形容相差无几。

该我的项目具体信息如下:

Super SloMo 超级慢动作镜头补帧

运行环境: PyTorch 0.4.1

语言版本: Python 3.6

训练可视化: TensorboardX

训练数据集: Adobe 240 fps

我的项目地址: 请点击此处

因为模型训练和测试是在 PyTorch 0.4.1 和 CUDA 9.2  上实现的,所以装置这两个软件必不可少,另外你还须要有一张 NVIDIA 的显卡。

此外,模型不能间接应用视频训练,因而还须要装置 ffmpeg 从视频中提取帧。这些筹备工作所有就绪后,方可下载 adobe 240fps 数据集进行训练。

不过,你也能够不须要筹备这些,做一个安安静静的「伸手党」,一键实现 Super SloMo。

咱们在国内的机器学习算力容器服务平台 OpenBayes,找到了相应的教程。从数据集到代码再到算力,一应俱全,即便是小白,也能够轻松上手。

教程传送门链接:请点击此处

教程使用指南

首先注册并登录 OpenBayes,在「公共资源」菜单下的 「公共教程」 中,抉择本教程——「Super-SloMo 超级慢动作镜头的 PyTorch 实现」。

教程中样例展现文件是 Super-SloMo.ipynb,运行这个文件,会装置环境,并展现最终补帧而来的超级慢动作成果。

大家也能够应用本人的视频素材,将下方生成代码中的 lightning-dick-clip.mp4 改为你的视频文件名。

属性「scale」用于管制生成视频的倍速,比方:设为 4,即 4 倍速慢放。

生成代码:

!python3 'Super-SloMo/eval.py' 
    'lightning-dick-clip.mp4' 
    --checkpoint='/openbayes/input/input0/SuperSloMo.ckpt' 
    --output='output-tmp.mp4' 
    --scale=4
print('Done')

转换视频格式代码:

!ffmpeg -i output-tmp.mp4 -vcodec libx264 -acodec aac output.mp4

该教程中,应用了网络上的某段视频,进行 Super SloMo 插帧,失去如下后果:

4 倍速慢放,看清武术动作的每一步

目前,该平台还能薅羊毛,每周都赠送 vGPU 的应用时长,人人都可轻松实现,赶快入手试试吧!

亲自动手,制作神奇的超级慢动作

参考资料:

查看教程

查看论文

我的项目主页

其余参考

退出移动版