XVFI: eXtreme Video Frame Interpolation
原文地址:https://arxiv.org/pdf/2103.16206.pdf
Github 地址:https://github.com/JihyongOh/XVFI
Abstract
在这篇文章中,我们首先向研究界展示了一个数据集( X4K1000FPS ),该数据集包含 4K 分辨率、1000 fps 帧率的,具有极端运动情况的视频,将其用于视频插帧( VFI )。我们还提出了一个极端的视频插帧网络,叫做 XVFI-Net,该网络首次处理了大运动 4K 视频的插帧问题。
XVFI-Net 基于一个递归的多尺度共享结构,该结构由两个级联模块所组成,这两个模块分别用于两个输入帧之间的双向光流学习( BiOF-I ),以及目标帧到输入帧的双向光流学习( BiOF-T )。光流通过 BiOF-T 模块中提出的互补流逆转( CFR )实现稳定地近似。模型推理期间, BiOF-I 模块能够以任意尺寸的输入开始,而 BiOF-T 模块则只能在原始输入尺寸下运行,这样就可以在加速推理的同时,保持高度精确的视频插帧性能。
大量实验结果表明,我们的 XVFI-Net 能够成功捕获到具有极端大运动和复杂纹理的物体的重要信息,而目前最先进的方法则展现出了较差的性能。此外,我们的 XVFI-Net 框架还在之前更低分辨率的基准数据集上具有相当的表现,这也体现出了我们算法的鲁棒性。
所有的源码、预训练模型,以及所提出的 X4K1000FPS 数据集,均公开发布于 https://github.com/JihyongOh/XVFI。
1. Introduction
视频插帧技术通过在给定的两个连续帧之间合成一至多个中间帧,将低帧率( LFR ) 内容转换为高帧率( HFR ) 视频,然后,高速运动的视频就能够在增加的帧率中平滑渲染,从而缓解运动抖动。因此,它被广泛用于各种实际应用中,例如自适应流媒体,新视图插值合成,帧率提升与转换,慢动作生成,以及视频修复。然而,视频插帧具有很大的挑战性,它由多种因素所导致,如遮挡,大运动,光线变化。最近,对基于深度学习的视频插帧领域的研究呈现积极态势,表现卓越。然而,他们通常只为那些现有的低帧率基准数据集做优化,这可能会导致较差的插帧性能,特别是对于那些 4K 分辨率( 4096×2160 )或是拥有更大运动、更高分辨率的视频来说。这样的 4K 视频通常包含具有极大像素位移的快速运动的帧,对于此类情况,传统的卷积神经网络无法在有限大小的感受野中有效地进行工作。
为了解决基于深度学习的视频插帧方法所拥有的上述问题,我们直接拍摄了 4K 视频来构建一个高质量的高分辨率、高帧率数据集 X4K1000FPS。图 1 展示了我们数据集中的一些示例。如图所示,我们的 4K 分辨率视频包含了极大运动和遮挡的情况。
我们还首次提出了一个极端的视频插帧模型 XVFI-Net,改模型设计旨在有效地处理如此具有挑战性的 4K 1000fps 数据集。我们的 XVFI-Net 是简单而有效的,它基于一个递归多尺度共享结构,而不是像最近视频修复的趋势那样,用可变形卷积的连续特征空间直接捕获极端运动,或是采用含有如上下文,深度,流,边缘等额外信息的大尺寸预训练网络。这个 XVFI-Net 包含两个级联模块:一个用于两个输入帧之间的双向光流学习( BiOF-I ),另一个用于目标帧到输入帧的双向光流估计( BiOF-T )。这两个模块结合多尺度损失进行训练。然而,一旦经过训练, BiOF-I 模块能从任意缩小的输入向上启动,而推理过程中, BiOF-T 模块则只能在原始输入尺寸下运行,这样计算是很有效的,并且有助于在任意目标时刻生成中间帧。从结构方面来看, 即使训练已经结束了,XVFI-Net 也可以根据输入的分辨率或是运动大小,对推理的尺度数量进行调整。我们还提出了一个新的从时间 t 到那些输入的光流估计算法,叫做互补流逆转( CFR ),它能通过互补流有效地填补空洞。为了公平比较,我们进行了大量实验,结果证明,在 X4K1000FPS 数据集上,我们的 XVFI-Net 拥有相对较小的复杂度,表现优于先前的视频插帧算法 SOTA,尤其是对于如图 2 所示的极端运动情况而言。我们还在先前的 LR-LFR 基准数据集上做了进一步实验,这也证明了 XVFI-Net 的鲁棒性。
我们的贡献可以总结为:
-
我们首次提出了一个高质量的 4K 高帧率视频数据集 X4K1000FPS,该数据集包含各种纹理,极大运动,缩放和遮挡。
-
我们提出了 CFR 互补流逆转法,从时间 t 到输入帧生成稳定的光流估计结果,提高定性和定量的性能。
-
我们所提出的 XVFI-Net 可以从任意缩放尺寸的输入向上启动,它能根据输入的分辨率或运动幅度对推理的尺度数量进行调整。
-
与先前的 SOTA 算法相比,我们的 XVFI-Net 在 X4K1000FPS 测试集上实现了最先进的性能,并且与之拉开了很大的差距,同时具有少量过滤器参数的计算效率。所有源码和提出的 X4K1000FPS 数据集均公开发布于 https://github.com/JihyongOh/XVFI。
2. Related Work
2.1. Video Frame Interpolation
大多数的视频插帧方法可以分为基于光流或内核的以及基于像素幻觉的方法。
基于流的视频插帧. Super-SloMo 首次对两个输入帧之间的预测光流进行线性组合,以近似于从目标中间帧到输入帧的流。二次视频插帧利用四个输入帧,通过二次近似来应对非线性运动的建模,当只给定两个输入帧时,视频插帧的一般化情形就受到了限制。它还提出了流逆转(投影)以实现更精准的图像变形。另一方面,DAIN 通过流投影层,根据场景的物体深度,给予重叠流向量不同的权重。然而,DAIN 同时采用了 PWC-Net 和 MegaDepth 并对它们进行了微调,这对于推导中间的高分辨率帧来说,计算量是很大的。AdaCoF 提出了一种通用的变形模块来处理复杂运动。然而,一旦训练完成,由于固定的膨胀度,它便无法自适应地去处理更高分辨率的帧。
基于像素幻觉的视频插帧. FeFlow 受益于中间帧生成器的可变形卷积,采用偏移向量来替代光流。Zooming Slow-Mo 也通过特征域可变形卷积的帮助进行插帧。然而,这些方法与基于流的视频插帧方法不同,由于它们直接幻化了像素,因此当快速运动的物体出现时,预测帧往往会变得模糊。
最重要的是,由于计算复杂度很高,上述视频插帧方法很难一次性对整个 HR 帧进行操作。另一方面,我们对 XVFI-Net 的设计,旨在用更少的参数,高效地对完整的 4K 输入帧一次性完成操作,并且能够有效地捕获大运动。
2.2. Networks for Large Pixel Displacements
PWC-Net 是一种最先进的光流估计手段,它已经被一些视频插帧算法采纳,用于预训练光流估计器。由于 PWC-Net 拥有 6 层特征金字塔结构和更大尺寸的感受野,因此它能有效预测大运动。IM-Net 也采用了多尺度结构来覆盖相邻帧中物体的大幅度位移,但覆盖范围受限于自适应滤波器的尺寸。尽管有多尺度金字塔结构,但上述方法缺乏自适应性,因为每个网络中最粗略的层在训练后是固定的,即每个尺度层都由其自身的(而非共享的)参数组成。RRPN 在一个灵活的循环金字塔结构中,跨越不同尺度层共享权重参数。然而,它只能推导中间时刻的帧,而不能在任意时刻进行推导。所以它只能在以2为幂的时间点递归地合成中间帧。因此,中间帧在两个输入帧之间进行递归合成的过程中,预测所产生的误差就会被不断累积。因此, 对于在任意目标时刻 t 进行的视频插帧任务来说,RRPN 受限于时间上的灵活性。
与上述方法不同的是,我们所提出的 XVFI-Net 拥有一个可扩展的结构,对于各种输入分辨率都有可共享的参数。不同于 RRPN,XVFI-Net 在结构上分为 BiOF-I 和 BiOF-T 模块,它能借助互补流逆转的方式,有效地预测任意时刻 t 的中间帧。也就是说,BiOF-T 模块可以在推导过程中跳过缩小层级,这样我们的模型就可以一次性推导出 4K 的中间帧,而无需像所有其他之前的方法那样进行任何的块迭代,使其可以被用于现实世界的应用当中。
3. Proposed X4K1000FPS Dataset
尽管许多视频插帧方法已经在不同的基准数据集上得到了训练和评估,例如 Adobe240fps,DAVIS,UCF101,Middlebury 和 Vimeo90K,但没有一个数据集包含大量的 4K 高帧率视频。这限制了某些复杂插帧算法的研究,这些算法服务于针对高分辨率视频的插帧应用。
为了解决这一具有挑战性的极端 VFI 任务,我们提供了一组丰富的 4K@1000fps 视频,视频由 Phantom Flex4KTM 相机所拍摄,其 4K 空间分辨率为 4096×2160,帧率为 1000fps,共生产了 175 个视频场景,其中每个场景均由 5000 帧组成,拍摄时长为 5 秒。
为了能为 VFI 任务选择有价值的数据样本,我们使用 IRR-PWC 估计了每 32 帧场景的双向遮挡图和光流。遮挡图预示着在下一帧中将要被遮挡的物体部分。遮挡使得光流估计和插帧变得很有挑战性。因此,综合考量遮挡程度,光流大小和场景多样性,我们人工选择了 15 个场景作为测试集 X-TEST。X-TEST 中的的每个场景都仅包含一个测试样本,该样本由时间距离为 32 帧中的两个输入帧组成,近似对应于 30fps 的帧率。测试评估被设定为插入 7 个中间帧,从而得到 240fps 连续帧的结果。对于训练集 X-TRAIN,通过考虑遮挡的数量,我们裁剪并选择了 4408 个 768×768 大小的片段,片段长度为 65 个连续帧。更多细节将在 补充材料 中进行描述说明。
表 1 比较了几个数据集的统计结果:Vimeo90K,Adobe240fps,X-TEST 和 X-TRAIN。我们在 [0,255] 的范围内对遮挡进行了估计,还估计了输入对之间的光流大小,并计算了每个数据集的百分比。如表1所示,与先前的 VFI 数据集相比,我们的数据集包含与之相当的遮挡,但运动幅度明显更大。
4. Proposed Method : XVFI-Net Framework
4.1. Design Considerations
我们的 XVFI-Net 旨在两个连续的输入帧 I0 和 I1 之间的任意时间点 t 插入一个包含极端运动的高分辨率中间帧 It。
尺度自适应. 诸如 PWC-Net 那样的具有固定数量尺度层级的架构很难适应输入视频的各种空间分辨率,因为每个尺度层级的结构在不同尺度层级之间是不共享的,所以需要为了一个新增尺度深度的新架构进行重新训练。为了能够拥有尺度自适应性,以应对输入帧的各种空间分辨率,我们的 XVFI-Net 被设计为可以从任意需要的粗糙尺度层级开始进行光流估计,以适应输入帧中的运动幅度。为了做到这一点,我们的 XVFI-Net 在不同的尺度层级之间共享它们的参数。
捕获大运动. 为了有效地捕捉两个输入帧之间的大运动,XVFI-Net 中的特征提取块首先通过跨步卷积,将两个输入帧的空间分辨率按照模块比例系数 M 进行缩减,从而得到空间上被缩小的特征,然后将其转换为两个上下文特征图 C 0 0 C^0_0 C00 和 C 1 0 C^0_1 C10。图 3 中的特征提取块是由跨步卷积和两个残差块所组成的。接下来,在每个尺度层级,XVFI-Net 都在以 M 为比例缩小的空间尺寸下,对目标帧 It 到两个输入帧进行光流估计。预测光流将被放大( × M \times M ×M ),从而将每个尺度层级的输入帧变形至时间 t。
4.2. XVFI-Net Architecture
BiOF-I 模块. 图 4 展示了我们的 XVFI-Net 在尺度层级 s 上的架构,其中 Is 表示缩小 1 / 2 s 1/2^s 1/2s 次幂。首先,上下文金字塔 C = { C s } C = \{C^s\} C={ Cs} 是通过步距为 2 的卷积从 C 0 0 C^0_0 C00 和 C 1 0 C^0_1 C10 开始循环提取的,随后,它将被用作 XVFI-Net 每一尺度层级 s ( s = 0, 1, 2, … ) 的输入,其中,s = 0 表示原始输入帧的尺度。 F t a t b s F^s_{t_at_b} Ftatbs 表示在尺度 s 下,时间 ta 到 tb 的光流。 F 01 s F^s_{01} F01s 和 F 10 s F^s_{10} F10s 是尺度 s 下,输入帧之间的双向光流。 F t 0 s F^s_{t0} Ft0s 和 F t 1 s F^s_{t1} Ft1s 分别是从 I t s I^s_t Its 到 I 0 s I^s_0 I0s 和 I 1 s I^s_1 I1s 的双向光流。
从前一个尺度 (s + 1) 估计的光流 F 01 s + 1 F^{s+1}_{01} F01s+1, F 10 s + 1 F^{s+1}_{10} F10s+1 经过 × 2 \times2 ×2 双线性放大后,被设置为当前尺度 s 的初始光流,即, F ~ 01 s = F 01 s + 1 ↑ 2 \widetilde{F}^s_{01} = F^{s+1}_{01} \uparrow_2 F 01s=F01s+1↑2, F ~ 10 s = F 10 s + 1 ↑ 2 \widetilde{F}^s_{10} = F^{s+1}_{10} \uparrow_2 F 10s=F10s+1↑2。为了更新当前尺度的初始光流,首先,通过初始光流对 C 0 s C^s_0 C0s 和 C 1 s C^s_1 C1s 进行变形,也就是说, C ~ 01 s = W ( F ~ 01 s , C 1 s ) \widetilde{C}^s_{01} = W(\widetilde{F}^s_{01}, C^s_1) C 01s=W(F 01s,C1s), C ~ 10 s = W ( F ~ 10 s , C 0 s ) \widetilde{C}^s_{10} = W(\widetilde{F}^s_{10}, C^s_0) C 10s=W(F 10s,C0s),其中,W 是一个向后变形操作。接下来, C ~ 01 s \widetilde{C}^s_{01} C 01s, C ~ 10 s \widetilde{C}^s_{10} C 10s, C 0 s C^s_0 C0s, C 1 s C^s_1 C1s,将连同 F ~ 01 s \widetilde{F}^s_{01} F 01s, F ~ 10 s \widetilde{F}^s_{10} F 10s 一起被传入一个基于自动编码器的 BiFlownet,如图 4 所示,输出得到初始光流的残余流量和一个可训练的重要性掩码 z。然后得到 F 01 s F^s_{01} F