今年 6 月份,英伟达发布了一篇生成高质量慢动作视频的论文——《Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation》,探讨了如何将普通设备录制的视频转换为高帧率慢动作视频。这项工作的原理是在临近的两帧之间补充额外的画面帧。让我们先来看一下效果:
额... 英伟达给出的视频中展示了一个用网球拍快速打破水球的例子,正常速度下的视频如下:
下图分别是用原始 SloMo 和 Super SloMo 软件制作的慢速视频。
从图中可以可出,用原始 SloMo 软件制作出的慢速视频虽然也让我们看到了一些肉眼无法捕捉到的细节,但相比之下,用 Super SloMo 制作的慢速视频还原的细节更多,画面也更加流畅。这是因为二者有着本质的区别,前者并没有生成新的视频帧,而后者则利用神经网络生成了新的视频帧,使得画面包含的帧数更多,从而增加了视频细节和流畅度。
在看看下方的赛车甩尾,原视频为 30FPS。看起来没毛病吧,那慢速播放之后呢?
看下图上方,原来流畅的甩尾变得像是一张张照片摆拍凑出来的定格动画(P 水花比甩尾简单多了吧),但经过算法补帧变成 240FPS 之后,下方的片段立刻有了 Fast & Furious 即视感。
遗憾的是,作者发布论文的时候并没有放出数据集和代码,让想要实现这一炫酷技术的 geek 们大失所望。但是(划重点),群众的力量是伟大的。近日,GitHub 一位名为 avinashpaliwal 的用户开源了自己对 Super SloMo 的 PyTorch 实现:
Github 地址:https://github.com/avinashpaliwal/Super-SloMo
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 path ofmpeg --videos_folder path oadobe240fpsideoFolder --dataset_folder path odataset --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
这个模型怎么玩才好玩呢?拿出过去渣手机拍摄的珍藏片段,慢动作回放一下是不是更有味道?
那些为自制电影设备费用发愁的是不是来劲了?
还有,那些每次一到高速战斗情节就经费严重不足的动画制作组是不是觉得相见恨晚?
有了它,一些动画是不是能多更新半年了?
原文地址:https://www.cnblogs.com/chuangye95/p/10199450.html