论文 | Video Frame Interpolation via Adaptive Separable Convolution

Abstract

标准视频帧插值方法首先估计输入帧之间的光流,然后合成运动引导的中间帧。最近的方法通过将输入帧与空间自适应内核进行卷积来将这两个步骤合并为单个卷积过程,这些内核同时解决了运动和重新采样问题。这些方法需要大内核来处理大运动,这限制了由于大内存需求而可以一次估计其内核的像素数量。为了解决这个问题,本文将帧插值作为使用一对一维内核的输入帧的局部可分卷积。与常规2D内核相比,1D内核需要的参数估计要少得多。我们的方法开发了一个深度完全卷积神经网络,它采用两个输入帧并同时估计所有像素对的一维核函数。由于我们的方法能够一次估计内核并合成整个视频帧,因此它可以考虑将听觉损失纳入训练神经网络来产生可视的帧。这种深度神经网络是使用广泛可用的视频数据进行端对端培训的,无需任何人工注释。定性和定量实验都表明,我们的方法为高质量视频帧插值提供了一个实用的解决方案。

1. Introduction

传统的视频帧插值方法估计输入帧之间的光流,并合成由光流引导的中间帧。然而,它们的性能在很大程度上取决于光流的质量,这对于在具有遮挡,模糊和突然亮度变化的区域中准确估计具有挑战性。

基于观察到帧插值的最终目的是产生高质量的视频帧,而光流估计只是一个中间步骤,最近的方法是制定帧插值或插值作为卷积过程。具体而言,他们为每个输出像素估计空间自适应卷积核,并将内核与输入帧进行卷积以生成新帧。卷积核联合解释了传统帧插值方法中涉及的两个独立的运动估计和重新采样步骤。为了处理大的运动,需要大的内核。例如,Niklaus等人采用神经网络为每个输出像素输出两个41×41内核[36]。要为1080p视频帧中的所有像素生成内核,仅输出内核就需要26 GB的内存。内存需求随着内核大小的增加而二次增加,因此限制了要处理的最大运动。鉴于这种限制,Niklaus等人训练了一个神经网络来逐个像素输出内核。

本文提出了一种用于视频帧插值的空间自适应可分离调整方法。我们的工作灵感来自于使用可分离滤波器来为其他计算机视觉任务逼近完整的2D滤波器,如图像结构提取[41]。对于帧合成,需要两个2D卷积核来生成输出像素。我们的方法使用一对一维的内核,一个水平和一个垂直来逼近每一个。这样,一个n×n卷积核可以仅使用2n个变量进行编码。这使得我们的方法可以采用一个完全神经网络,它将两个视频帧作为输入,并一次为所有输出像素生成可分离的内核。对于1080p视频帧,使用大约41×41的可分离内核仅需要1.27 GB而不是26 GB的内存。由于我们的方法能够生成全帧输出,因此我们可以合并感知损失函数[11,22,27,42,65]以进一步提高插值结果的视觉质量,如图1所示。

我们的深层神经网络是完全卷积的,可以使用广泛可用的视频数据端对端地进行训练,而不需要任何难以获取的元数据(如光流)。我们的实验表明,我们的方法能够在代表性的和定量的方面比较代表性的现代插值方法在代表具有挑战性的场景中的优势,并为高质量视频帧插值提供了一个实用的解决方案。

2. Related Work

视频帧插值是计算机视觉和视频处理中的一个经典主题。常用帧插值方法估计两个输入帧之间的密集运动(通常为光流),然后插入由运动引导的一个或多个中间帧[3,53,60]。这些方法的性能通常取决于光流和特殊照顾,如流量插值,对于处理光流问题是必要的[3]。通用的基于图像的渲染算法也可以用来改善帧合成结果[33,66]。与基于光流的方法不同,Meyer等人开发了一种基于相位的插值方法,它表示单个像素相移中的运动,并通过每像素相位修改生成中间帧[35]。这种基于阶段的方法能产生令人印象深刻的插值结果;但是,它有时无法保留具有较大时间变化的视频中的高频细节。
我们的研究受到深度学习成功应用于光流估计[2,12,16,19,50,51,52],艺术风格转换[17,22,28]和图像增强[6, 9,10,46,47,55,57,62,65]。我们的工作属于采用深度神经网络进行视图合成的研究类别。这些方法中的一些方法为输入图像中的面部和椅子等物体提供了不可见的视角,而不是复杂的真实世界场景[13,26,49,59]。 Flynn等人开发了一种方法,通过将输入图像投影到多个深度平面上并结合这些深度平面来创建一种新颖的视图[15]。 Kalantari等人提出了一种用于光场成像的视图扩展方法,该方法使用两个连续的卷积神经网络来对视图插值的视差和颜色估计步骤进行建模,并同时训练这两个网络[23]。谢等人。开发了一种神经网络,它可以合成单眼视频的额外视图,将其转换为立体视频[54]。
最近,周等人。开发了一种方法,采用卷积神经网络来估计外观流量,然后使用这种估计来扭曲输入像素以创建新视图[64]。他们的方法可以扭曲单独的输入帧并将它们混合在一起以在输入帧之间产生帧。深层体素流方法是我们论文的一个重要工作,它开发了一个深度神经网络来输出密集的体素流优化的帧插值结果[29]。 Long等人还开发了卷积神经网络来在两个输入之间插入帧;然而,他们的方法生成插值帧作为估计光流的中间步骤[30]。

我们的方法与最近的帧插值[36]或外推[14,21,58]方法最为相关,该方法将运动估计和帧合成组合到单个卷积步骤中。这些方法为每个输出像素估计空间变化的内核,并将它们与输入帧进行卷积以生成新帧。由于这些卷积方法需要较大的内核来处理较大的运动,因此它们无法同时合成高分辨率视频的所有像素,这受限于可用内存。例如,Niklaus等人的方法逐个像素地插入帧。虽然他们采用移位和针迹策略在每次通过中生成多个像素,但可同时合成的像素数量仍然有限[36]。其他方法仅生成相对低分辨率的图像。我们的工作通过估计可分离的1D内核来近似2D内核来扩展这些算法,这大大减少了所需的内存量。因此,我们的方法可以一次内插1080p帧。此外,我们的方法还支持纳入感知损失函数,这需要在连续的图像区域上进行约束,以提高插值帧的视觉质量。

3. Video Frame Interpolation

为了使这篇文章自我完成,我们首先简要介绍了最近的视频帧插值自适应卷积方法[36]并定义了符号。然后我们描述了我们如何开发基于可分离卷积的帧插值方法。
我们的目标是将帧I暂时插入两个输入视频帧I1和I2的中间。对于P1(x,y)和P2(x,y)分别为I1和I2中以(x,y)为中心的片。依赖于像素的内核K1和K2捕获插值所需的运动和重新采样信息。为了捕捉大的运动,需要大尺寸的内核。 Niklaus等人使用了41×41内核[36],并且由于大量的参数和有限的内存,很难同时对高分辨率帧的所有像素进行估计。他们的方法因此使用深度卷积神经网络逐个像素地估计每个单独的内核对。

我们的方法通过估计一对2D内核近似的一维内核来解决这个问题。也就是说,我们通过k1,v * k1,h和K2估计k1,v,k1,h⟩和⟨k2,v,k2,h⟩使K1近似为k1,v * k2,h。因此,我们的方法将每个内核的内核参数数从n2减少到2n。这使得能够一次合成高分辨率视频帧,并且引入感知损失,从而进一步提高插值结果的视觉质量,详见以下小节。

3.1. Separable kernel estimation

我们设计了一个完全卷积神经网络,给定输入帧I1和I2,估计输出帧I中每个像素的两对1D内核⟨k1,v,k1,h⟩和⟨k2,v,k2,h⟩ 如图2所示。我们均匀处理每个颜色通道,并将相同的1D内核应用于每个RGB通道以合成输出像素。 请注意,将估计的内核应用于输入图像是一种本地卷积,我们将它实现为网络层我们的神经网络类似于近期工作中的位置变化动力学卷积层[14,21,58];因此我们的神经网络是端对端可训练的。
我们的神经网络由一个提取特征的合同组件和一个包含上采样层以执行密集预测的扩展部分组成。我们进一步使用跳过连接[5,31]让扩展层融合来自神经网络收缩部分的特征,如图2所示。为了估计四组1D核,我们将信息流引导到最后扩展层分成四个子网,每个子网估计一个内核。我们可以用四个内核的组合来代替这个模型;然而,我们注意到在使用四个子网络时,培训期间收敛更快。

我们发现3×3卷积层叠加整流线性单元有效。像赵等人。 [63],我们注意到平均池在像素级预测的情况下表现良好,并据此在我们的网络中使用。扩展部分中的上采样层可以以各种方式实现,例如转置卷积,子像素卷积,最近邻居和双线性插值[10,43,61]。 Odena等人报道,如果上采样层没有被很好地选择,棋盘伪影可能发生在图像生成任务[37]。有趣的是,虽然我们的方法通过首先估计卷积内核来生成图像,但这些工件仍可能发生,如图所示在图3中。我们遵循Odena等人的建议。 并通过使用双线性插值来处理这些伪影以在我们的网络的解码器中执行上采样。

损失函数。 我们考虑两种类型的损失函数来度量内插帧I与其相应的真实值之间的差异。 第一个是计算像素差,如下所定义。

或者,可以使用l2范数; 但是,我们找到了它通常会导致模糊的结果,这在其他图像生成任务中也有报道。

这项工作探讨的第二种损失函数是感知损失,这种损失经常被认为对产生视觉上令人愉快的图像有效[11,22,27,42,65]。 感知损失通常基于图像的高级特征,并被定义如下。

φ从图像中提取特征。 我们尝试了基于不同特征提取器的各种损失函数,如SSIM损失[40]和特征重建损失[22]。 我们在实验中发现,基于VGG-19网络的relu4_4层的特征重构损失[44]为我们的帧插值任务产生了良好的结果。

3.2. Training

我们使用卷积感知初始化方法[1]初始化我们的神经网络参数,并使用AdaMax [25]对其进行训练,其中β1= 0.9,β2= 0.999,学习率为0.001,最小批量为16个样本。我们选择了小批量的小批量,因为我们经历了Keskar等人描述的训练模型质量的降低。 [24]每小批量使用更多样品时。我们使用尺寸为128×128的补丁代替整个帧的训练。这使我们可以避免不包含有用信息的补丁,并导致不同的小批量,如Bansal等人所述。 [4]改善训练。
训练数据集。我们从广泛可用的视频中提取训练样本,每个训练样本包含三个连续帧,中间帧为基础事实。由于视频质量对训练模型的质量有很大影响,因此我们从选定的YouTube频道(如“Tom Scott”,“Casey Neistat”,“Linus Tech Tips”和“Austin Evans”)购买了视频材料,始终如一地拥有高品质。请注意,我们以1920×1080的分辨率下载了这些视频,但将其缩放到1280×720以减少视频压缩的影响。
继尼克劳斯等人。 [36],我们没有使用跨越视频镜头边界的样本,而是丢弃了缺乏纹理的样本。为了增加我们的训练数据集的多样性,我们避免了时间相近的样本。我们不是使用全帧,而是随机裁剪150×150块,并选择运动足够大的块。为了计算每个样本中的运动,我们使用SimpleFlow [48]估计了第一个和最后一个贴片之间的平均光流。
我们从抽取的样本中随机选取250,000个数据集,而不需要替换。随机选择以估计的平均光流为指导,确保具有大流量的样品更可能被包括在内。总体而言,生成的训练数据集中10%的像素具有至少17个像素的流动大小,其中5%的大小至少为23个像素。最大的运动是39个像素。

数据增强。我们在训练过程中随时进行数据增强。虽然训练数据集中的每个样本的大小为150×150像素,但我们使用了128×128像素大小的块进行训练。这使得可以通过随机裁剪来执行数据增强,防止网络学习可能存在于训练数据集中的空间先验。我们通过移动第一帧和最后一帧中的裁剪窗口,同时保持地面实况的裁剪窗口不变,来增强每个样本的运动。通过系统地做到这一点,并将第一帧和最后一帧的裁剪窗口向相反的方向移动,地面实况仍然是健全的。我们发现,执行最多6个像素的移动效果很好,这将流量大小增加了大约8.5个像素。我们还随机翻转裁剪的补丁水平或垂直,并随机交换其时间顺序,这使得训练数据集内的运动是对称的,并防止网络偏见。

3.3. Implementation details

下面我们讨论关于速度,边界处理和超参数选择的实现细节。
计算效率。我们使用Torch [8]来实现我们的卷积神经网络。为了实现高计算效率并允许我们的网络直接渲染插值帧,我们在CUDA中编写了自己的图层,该图层应用了估计的一维内核。如果适用,我们使用基于cuDNN [7]的实现来实现网络的其他层,以进一步提高速度。使用Nvidia Titan X(Pascal),我们的系统能够在0.5秒内插入1280x720帧,并在0.9秒内插入1920x1080帧。培训我们的网络大约需要20小时使用四个Nvidia Titan X(Pascal)。
边界处理。由于使用基于卷积的插值公式,因此需要填充输入以便可以处理边界像素。我们尝试了零填充,反射填充和重复填充。在实践中,我们发现通过重复填充可以很好地工作并相应地使用它。请注意,在训练过程中不需要边界处理,但尺寸减小的输出仍可接受。
超参数选择。我们使用验证数据集来为我们的网络体系结构以及培训选择合理的超参数。该验证数据集与训练数据集不相交,但是以类似的方式创建。
除了学习率等常用参数之外,我们的模型还带有一个关键的特定于领域的超参数,它是用于插值的1D内核的大小。我们发现大小为51像素的内核可以很好地工作,这归因于数据集中最大的流量大小(39像素)以及来自增强的额外运动的8.5像素。尽管增加内核大小对于处理较大的运动是有利的,但受限于数据集中的流量,我们没有观察到较大内核的改进。

我们方法的另一个重要的超参数是pooling图层的数量。汇聚层对卷积神经网络的接受场[32]有很大的影响,在我们的上下文中,它与运动估计中的孔径问题有关。较大数量的汇聚层增加了接受范围,以潜在地处理大的运动;另一方面,训练数据集中最大的流量大小为有用的池层数提供了一个上限。经验上,我们发现使用五个合并层可以产生很好的插值结果。

4. Experiments

我们将我们的方法与具有代表性的最新方法进行比较,并对其进行定性和定量评估。 对于基于光流的方法,我们选择了MDP-Flow2 [56],它目前在Middlebury基准和Deep-Flow2 [52]中实现了最低的内插误差,这是基于神经网络的插值误差最低的方法[3]。 我们遵循最近的帧插值论文[29,35],并使用Middlebury基准[3]的算法从估计的光流合成帧。 我们还将我们的方法与Meyer等人的基于相位的帧插值方法进行了比较。 [35]以及基于Niklaus等人的自适应卷积的AdaConv方法。 [36]作为基于光流法的替代方法。 对于所有这些方法,我们使用来自原始论文的代码或经过训练的模型。 请参阅我们的视频以获取更多结果。

4.1. Loss functions

我们的方法包含两种类型的损失函数:L1损失和特征重建损失LF。 为了检查它们的影响,我们训练了两个版本的神经网络。 对于第一种情况,我们只使用了L1损耗,并且为了简化本文,将此网络称为“L1”。 对于第二个,我们使用了L1损耗和LF损耗,并且为了简单起见将该网络称为“LF”。 我们尝试了不同的训练方案,包括使用不同权重的L1和LF的线性组合,首先用L1损失训练网络,然后使用LF损失对其进行微调。 我们发现后者导致了最佳的视觉质量并相应地使用了这种方案。 如图4所示,合并LF损失会导致更清晰的图像和更高频率的细节。 这与近期有关图像生成和超分辨率的研究结果一致[11,22,27,42,65]。

4.2. Visual comparison

我们研究了我们的可分离卷积方法如何处理视频帧插值的具有挑战性的情况。
图5中的第一行显示了一个例子,其中精致的蝴蝶腿使得难以精确估计光流,导致基于流的结果中的伪影。由于腿部运动也很大,所以基于相位的方法不能很好地处理它,并产生重影伪影。 AdaConv的结果看起来很模糊。我们的结果都很清晰,没有鬼影伪影。
第二行显示了一条繁忙街道的例子。随着人们向相反的方向移动,存在显着的遮挡。我们的两种方法都比其他方法更好地处理遮挡。我们将其归因于卷积方法和使用更少参数的1D内核。
在第三行中,我们展示了最右侧聚光灯开启的舞台示例。这违反了光流方法的亮度恒定性假设,导致帧内插结果中可见的伪像。最后一行显示了一个浅景深的例子,这在专业视频中很常见。模糊的背景使流量估计变得困难并且损害基于流的帧插值结果。对于这些例子,其他方法(包括我们的方法)运行良好。内核。我们研究了如何通过我们的LF方法估计的内核与来自AdaConv的内核相比较。我们在图6中显示了一些具有代表性的内核。请注意,我们从我们的方法中对每对1D内核进行了卷积,以生成用于比较的等效2D内核。由于我们的内核比AdaConv的内核大,因此我们裁剪边界值以获得更好的可视化,因为它们都是零。
在蝴蝶的例子中,我们展示了腿上像素的内核。 AdaConv仅从第二个输入帧中的相应像素获取颜色。虽然我们的方法主要从第二个输入中的相同像素获取颜色,但它也会从第一个输入框中的相应像素获取颜色。由于该像素的颜色在两个输入帧中保持不变,因此两种方法都会产生适当的结果。
注意两种方法如何将编码的运动捕获为内核中心非零内核值的偏移量。
第二个例子显示亮度在两个输入帧之间变化的区域中的像素的内核。这两种方法都会输出相同的内核,由于缺少运动,所以在中心只有非零值。因此,输出颜色被估计为输入帧中对应像素的平均颜色。

最后一个例子显示了由于叶片向上移动而导致遮挡区域中的像素。该区域仅在第二个输入帧中可见,并且两种方法都会生成正确选择仅从第二帧采样的内核。因此它们产生了很好的结果,并且能够适当地处理遮挡,而不像明确需要在输入帧的像素之间建立对应关系的方法。

4.3. Quantitative evaluation

我们对Middlebury光学流量基准的插值集进行了定量评估[3]。请注意,我们没有以任何方式微调我们的模型。结果如表1所示。我们的L1模型和我们的LF模型在不连续运动的区域表现得特别好。就整体平均而言,我们的L1模型达到了最先进的成果。请注意,我们的LF模型在这个定量评估中表现不如我们的L1模型,因为它的损失函数优化了感知质量。为了进行更广泛的定量评估,我们进行了交叉验证,并对不同方法的内插能力进行了评估。结果显示在表2中。对于前者,我们在我们的两种方法的训练数据集上进行了10次交叉验证,并让其他方法直接内插250,000个样本具有150×150像素的分辨率。请注意,这个实验主要是为了评估我们的方法如何生成。我们没有调整其他方法的参数或对它们进行微调,这可能会限制它们在交叉验证实验中的性能,我们将它们作为基线。对于后者,我们从Wiz Khalifa获得了视频“See You Again”,该视频目前是YouTube上观看次数最多的视频。我们处理的视频尺寸为960×540,因为此解析度是所有方法及其参考实现支持的最大解析度。我们扣留了其他每一帧,并使用剩余的帧来插入版主。这样,每个方法内插2,801帧。在这两个额外的实验中,我们的L1模型表现最好,不管所包含的误差度量如何。就像在Midlebry基准评估中一样,我们的LF模型由于其优化的不同损失函数的性质而在数量上低于我们的L1模型。

4.4. User study

我们进行了一项用户研究,以进一步比较LF方法的帧插值结果的视频质量与我们的L1方法以及其他四种方法。我们招募了15名参与者,他们是计算机科学与统计学的研究生或本科生。这项研究使用了Middlebury测试集的全部8个例子。在每个例子中,我们的LF结果与其他5个结果逐一比较。这样,每个参与者比较了40对结果。我们为这项研究开发了一个基于网络的系统。在每个试验中,网站只显示一个结果,并支持参与者使用键盘上的箭头键在两个结果之间来回切换,使他们能够轻松检查结果之间的差异。参与者被要求为每个试验选择更好的结果。时间顺序以及两个结果出现的顺序是随机的。

图7显示了这项研究的结果。对于每个假设,用户更喜欢用我们的LF方法插值的帧相对于其中一个基线生成的帧,我们得到的p值<0.01,因此可以确认它们。请注意,参加者首选我们的L1成绩,而不是我们的篮球例子的低频成绩,如图8所示。我们将这归因于引入的篮球不连续性。

4.5. Comparison with AdaConv

我们的方法基于AdaConv [36],通过估计一维内核而不是二维内核,并开发一个专用的编码器 - 解码器神经网络来一次估计帧中所有像素的内核。这提供了一些优点。首先,当插入1080p视频时,我们的方法比AdaConv快20倍以上。其次,如前面的定量比较(表1和表2)所示,我们的方法在数值上产生了更好的结果。第三,我们的方法,特别是LF,通常产生比AdaConv更具吸引力的结果,如图5,10和我们的研究所示。我们将这些优势归因于可分离的卷积。首先,它允许我们一次合成全帧,并使用感知损失,这种损失最近在生成视觉上令人满意的结果方面显示出效果[11,22,27,42,65]。其次,1D内核需要的参数明显较少,这对强大的内核实施了有用的约束。第三,我们的方法能够使用比AdaConv更大的内核,因此可以处理更大的运动。如图9所示,AdaConv无法捕捉汽车的运动并产生模糊的结果。

4.6. Discussion

通过使用不同的损失函数,我们有效地优化了我们的模型以实现不同的目标。尽管我们的L1方法能够提供更好的数值结果,正如表1和表2中的定量评估所报告的那样,但我们的LF方法实现了更高的视觉质量,如用户研究中所评估的感知质量。
迄今为止还没有答案的一个问题是如何通过可分离卷积进行插值来比较使用神经网络直接合成帧。因此,我们调整了我们的网络,以获得直接合成的基线。具体而言,我们在编码器 - 解码器之后使用了一个子网络,并且让它直接估计插值帧而不是核系数。我们还在每个卷积层块之后添加了批量标准化[20]层,这提高了这个直接合成网络的质量。我们用相同的方式训练了这个模型,这与wetrainedourLF方法一致。如图9所示,直接合成导致模糊的结果。此外,我们将我们的方法与Long等人的图像匹配方法进行了比较。 [30]执行直接合成以产生中间帧作为中间结果。如图10所示,我们的结果更加清晰。这与Zhou等人的研究结果一致。 [64]他们认为从头开始合成图像是困难的。
我们的方法可以处理的运动量受到内核大小的限制,该大小在我们的系统中为51像素。虽然这大于最近的AdaConv方法[36],但我们计划通过从光流研究中借鉴多尺度方法来处理更大的运动[38]。
像AdaConv一样,我们的方法当前在两个输入帧中间的t = 0.5处插入一帧。我们无法在输入框之间的任意时间生成框架。为了解决这个问题,我们可以递归地构造

在t = 0.25和t = 0.75时合成帧,或者从头开始训练一个新的模型,以不同的时间偏移返回帧。这两种解决方案都不理想,并且不像基于光流的插值那样灵活。将来,我们计划加强我们的神经网络,以明确处理时间偏移作为控制变量。

5. Conclusion

本文提出了一种高质量视频帧插值的实用解决方案。所提出的方法通过估计每个输出像素的空间自适应可分离内核并将输入帧与它们进行卷积来渲染中间帧,将运动估计和帧合成组合为单个卷积过程。使这种卷积方法具有实际意义的关键是使用一维核函数来近似完整的二维核函数。 1D内核的使用显着减少了内核参数的数量,并支持全帧合成,这反过来又支持使用感知损失来进一步提高插值结果的视觉质量。我们的实验表明,我们的方法与定量和定性的最新插值结果相比更有优势,并且产生高质量的帧插值结果。
致谢。图5(顶部),6(顶部)经Gabor Tarnok许可使用。图5中的其余图像在Alberto Antoniazzi,Ursula Mann和纽伦堡市的知识共享许可下使用。图1,2,3,4,6(底部),10来自Blender Foundation,而图8和图9分别来自Middlebury和Kitti基准。我们感谢Nvidia的GPU捐赠。这项工作得到了NSF IIS-1321119的支持。

猜你喜欢

转载自blog.csdn.net/weixin_41004238/article/details/80456859