DAIN(Depth-Aware Video Frame Interpolation)是一个视频帧插值模型,发表于 CVPR 2019,论文作者为 Wenbo Bao、Wei-Sheng Lai、Chao Ma、Xiaoyun Zhang、Zhiyong Gao 和 Ming-Hsuan Yang。其核心思路是通过探索深度线索来显式检测遮挡,并开发了深度感知的光流投影层,用于合成中间光流,使采样更倾向于较近的物体而非较远的物体。该方法在 Middlebury 数据集上取得了当时最先进的性能。该项目基于作者此前的 TPAMI 工作 MEMC-Net,其中提出了自适应扭曲层。
主要能力包括:视频帧插值、慢动作生成(通过设置 time_step 为 0.25 可生成 4 倍慢动作,0.125 或 0.1 分别生成 8 倍和 10 倍慢动作,甚至可进行 100 倍慢动作)、在 UCF101、Vimeo90K 和 Middlebury 数据集上的插值结果下载,以及训练新模型。仓库还提供了 Google Colab 演示,能够从源视频到目标视频进行完整插值演示。
使用方式方面,项目需要满足以下环境依赖:Ubuntu 16.04.5 LTS、Python 3.6.8(Anaconda3 4.1.1)、CUDA 9.0 与 Cudnn 7.0、PyTorch 1.0.0(自定义的深度感知光流投影等层需要 PyTorch 1.0.0 的 ATen API)、GCC 4.9.1 与 nvcc 9.0 编译器,以及 NVIDIA GPU(作者使用 Titan X Pascal,计算能力 6.1,支持 compute_50/52/60/61 设备)。使用步骤包括:下载仓库、构建 PyTorch 扩展、生成 PWCNet 所需的 Correlation 包、创建模型权重目录和 Middlebury 数据集目录、下载预训练模型和 Middlebury 数据集,然后运行测试。插值结果保存在 MiddleBurySet/other-result-author/[随机数]/ 目录下。训练新模型需要下载 Vimeo90K 三元组数据集、预训练的 MegaDepth 和 PWCNet 模型,运行训练脚本后优化模型保存在 model_weights/[随机数] 目录,替换预训练模型后即可测试。Google Colab 演示的使用步骤:下载 Colab_DAIN.ipynb 文件、访问 Google Colaboratory、选择上传并上传该文件、按说明逐个运行单元格。
适用场景包括视频帧插值研究、慢动作视频生成、视频质量提升等。限制方面,项目对环境和硬件有明确要求,需要特定版本的 Ubuntu、Python、CUDA、Cudnn、PyTorch、GCC 和 NVIDIA GPU,且自定义层依赖 PyTorch 1.0.0 的 ATen API。许可证为 MIT。