晓查 发自 凹非寺
量子位 报道 公众号 QbitAI
连手机都开始用上 120 帧的显示屏,但是网上大部分的视频居然还是 30 帧。
视频的帧率已经远远赶不上人民群众的需求了,所以有不少人都在研究如何把普通视频变成高帧率视频。
去年,英伟达开源了Super SloMo,从普通的视频“脑补”出高帧率的画面,从 30fps 插帧到 240fps,即使放慢 8 倍也不会感到卡顿。
最近,来自上海交大的一个新的插帧算法DAIN开源。它比英伟达的算法效果更清晰、帧率更高,可以把 30fps 的进一步插帧到 480fps,这已经超过了很多手机的慢动作录像帧率。
更重要的是,英伟达的 Super SloMo 只用在了真实拍摄的视频上,而这项研究却可以扩展到常见的任何类型视频:电影、定格动画、动漫卡通等等。
如果你觉得上面效果还不够明显,可以再看一张。
羽毛的摆动是不是变得更流畅自然了?
可以想象,如果未来把 DAIN 用于动漫的制作,只要用低帧的动画就可以生成丝滑的效果,或许能大大减少插画师的工作。
DAIN 的代码已经开源,甚至研究人员还打包了一份Windows 安装程序,即使没有任何 AI 基础的用户也可以直接拿来用。
安装
Windows 系统的用户有现成的 exe 文件安装(地址见文末),不过现在仍处于 Alpha 阶段,软件可能存在一定的不稳定性。
其他平台的用户安装起来也不复杂。
首先确保你的 PyTorch 版本不低于 1.0.0,将项目克隆到本地:
git clone https://github.com/baowenbo/DAIN.git
安装 PyTorch 的各个扩展包:
cd DAIN
cd my_package
./build.sh
还要安装英伟达预测光流网络 PWCNet 的软件包:
cd ../PWCNet/correlation_package_pytorch1_0
./build.sh
由于作者已经提供了预训练模型,我们不必再花费大量精力去训练。创建目录 model_weights,并且将预训练模型的权重下载到相应的文件夹中:
cd model_weights wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/best.pth
运行命令以下命令,就可以开始给视频插帧啦!
CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py —netName DAIN_slowmotion —time_step 0.25
—time_step 之后的参数就是视频的放慢倍数,0.25 代表视频帧率扩展为原来的 4 倍。如果要生成 8x 和 10x 慢动作,参数就改成 0.125 和 0.1,依此类推。
深度加光流,图像更清晰
之前已经有很多给视频插帧的算法,DAIN 和它们有什么不同呢?
DAIN 的全称是 Depth-Aware Video Frame Interpolation,即深度感知视频帧插值。
视频帧插值的目的是在原始帧之间合成不存在的帧。但是由于大的物体运动或遮挡,插帧的质量通常会比较低。
在这篇研究中,研究人员提出了一种通过探索深度信息来检测遮挡的方法。
具体来说,作者开发了一个深度感知光流投影层来合成中间流,中间流对较远的对象进行采样。此外,学习分层功能以从相邻像素收集上下文信息。
上图是 DAIN 的体系架构:给定两个时刻的输入帧,先估计光流和深度图,然后使用建议的深度感知流投影层生成中间流。
然后,模型基于光流和局部插值内核对输入帧、深度图和上下文特征进行扭曲,合成输出帧。
这种模型紧凑、高效且完全可微分。定量和定性的结果表明,DAIN 在各种数据集上均优于最新的帧插值方法。
作者
这篇文章的第一作者 Bao Wenbo,是上海交通大学电子信息与电气工程学院的博士生。
他目前的研究领域集中在图像/视频处理,计算机视觉和机器学习。另外在硬件设计、嵌入式系统和并行编程方面也很有经验。
传送门
论文地址:
https://sites.google.com/view/wenbobao/dain
项目地址:
https://github.com/baowenbo/DAIN
Windows 版软件下载:
https://drive.google.com/file/d/1uuDkF4j4H1AI1ot88XdqzwMdvAPhxKN8/view