本文介绍一下南京大学媒体计算组最近被CVPR 2023接收的视频插帧方向的工作:Extracting Motion and Appearance via Inter-Frame Attention for Efficient Video Frame Interpolation (简写为EMA-VFI)。EMA-VFI针对视频插帧任务的特点,提出了利用帧间注意力机制来同时提取运动和外观信息,并采用了CNN和Transformer混合结构设计进行插帧性能和计算负载之间的trade-off。在固定时间步插帧和任意时间步插帧两个子任务的多个benchmark里,EMA-VFI都取得了最好的性能。同时和之前的SOTA方法相比,EMA-VFI的运行时间和占用内存都有明显的减少。
论文链接:
https://arxiv.org/pdf/2303.00440.pdf
代码链接:
https://github.com/MCG-NJU/EMA-VFI
一、研究动机
视频插帧(Video Frame Interpolation, VFI) 任务的目标是给定连续的两帧,生成这两帧之间的固定时刻的帧或者任意时刻的帧。顾名思义,VFI最直接的用途就是用来提高帧率,经常和视频超分方法用来同时提升视频的空间和时间上的分辨率。VFI和其他常见的视频修复任务(如视频超分、视频去噪等)最大的不同就是VFI任务要生成原本不存在的帧,而其他视频修复任务要修复一张原本存在的帧,这样的不同也让插帧任务的设计思路无法直接借鉴视频复原方法的思路。
为了生成两帧之间的某一帧,从直觉上理解,VFI算法首先需要建模两帧之间的运动关系,然后将两帧中对应区域的外观信息依靠建立好的运动关系汇聚到要生成的帧上。因此,设计高效地提取两帧之间的运动信息和外观信息的方法对于一个好的VFI算法来说是至关重要的。经过充分调研,我们发现目前VFI算法提取这两种信息的方式可以分为两类,如图1。
第一种范式(如图1中的(a)),也是最常见的一类设计,直接将两帧按通道拼在一起,经过重复的网络模块提取出特征,这个特征既用来建模运动也用来表征外观,我们在此将这样的提取范式称为混合提取(mixed extraction) 。尽管混合提取范式设计十分简洁,但因为要隐式地提取两种信息,往往对特征提取模块的设计和容量都有较高的要求。同时,因为没有显示的运动信息,也无法直接得到任意时刻运动建模所需的运动信息,这种范式限制了任意时刻插帧的能力。
第二种范式(如图1中的(b)),采用了串行提取两种信息的思路,首先先提取每一帧的单独的外观信息,再利用两者的外观信息提取运动信息。这种提取范式需要针对每一种信息单独设计提取模块,往往会引入额外计算开销,并且无法像混合提取范式一样只需堆叠相同的模块就可以提升性能。同时,这样得到的外观特征没有很好地进行帧间信息的交互,而这种交互对于生成中间帧是至关重要的。
这里我们提出了疑问:是否存在能够同时显式地提取两种信息,且设计简洁有效的范式呢?如图1中的(c),我们希望设计一个模块,能够同时显式地提取运动信息和两帧之间交互过的外观信息,并且可以像混合提取范式一样只需通过控制模块的个数和容量来控制性能。
二、方法介绍
利用帧间注意力(Inter-Frame Attention, IFA)提取两种特征
在本文中,我们提出利用帧间的注意力机制来同时提取运动信息和两帧之间的交互过的外观信息。具体来说,如图2中的(a),对于当前帧中的任何一个区域,我们将其作为注意力机制中的查询(query),并将其在另一帧的空间上的相邻的所有区域作为键和值(key&value)来推导出代表其当前区域与另一帧相邻区域的注意力图。随后,该注意力图被用来汇总邻居的外观特征,并和当前区域的外观特征进行聚合,从而得到同一个区域在两帧不同位置的外观信息的聚合特征(Inter-Frame Appearance Feature)。此外,注意力图也被用来对另一帧的相邻区域的位移进行加权,以获得当前区域从当前帧到相邻帧的近似运动向量(Motion Vector),并经过一个线性层得到两帧之间的运动特征。
这样,通过一次注意力操作,我们通过注意力图的复用同时独立的提取出了两种特征。值得注意的是,这样得到的外观特征没有混淆位置信息,所以可以进一步在此基础上提取新的外观信息和运动信息。遵循目前主流的结构设计思路,我们将帧间注意力机制放在了Transformer的结构中,如图2中的(b)。这样的设计让我们只需要改变特征的通道数和Transformer block的个数就能控制提取的两种特征的质量和多样性。(具体细节请参考原文)
为了验证我们设计的帧间注意力机制确实可以建模相似区域之间的相关度,我们将通过IFA得到的运动向量和最终估计得到的光流进行比较。如图3,可以发现,尽管有一些噪声,但通过IFA直接提取的运动向量(右图)和估计的光流(左图)具有高度的一致性,这进一步证明了IFA确实能够分辨不同区域的外观信息,并且得到的运动特征可以作为估计两帧之间的光流的强而有效的先验。
结合CNN和Transformer的架构设计
尽管IFA可以同时提取运动信息和交互的外观信息,但由于实际中VFI往往输入的分辨率很高,在全分辨率的图片上使用IFA所带来的计算开销是难以承受的。如图4,受到最近一些将CNN与Transformer架构融合的工作的启发,我们采用了一套简洁有效的方案来减轻计算开销:利用CNN提取高分辨率的low-level信息,利用搭载着IFA的Transformer在低分辨率下提取运动信息和帧间的外观信息。这样的设计允许我们通过调整CNN和Transformer的比例来控制性能和计算开销之间的权衡,同时CNN提取的low-level信息也为IFA建模帧间的关系打下了良好的基础。(具体设计细节和参数请参考原文)
三、实验结果
关于固定插帧(生成两帧之间的中间帧)的性能比较如图5:
关于任意时刻插帧的性能比较如图6:
可以从结果看出来我们提出方法在两个子任务的不同数据集上都有较大的性能提升。图7是和之前SOTA方法VFIFormer的运行速度和占用内存的比较,我们的方法随着输入尺寸的增大,计算开销有了成倍的减少:
图8是固定时刻插帧效果的视觉对比,可以发现在一些大位移运动的情况下,我们提出的方法能够更好地生成中间帧:
图9是任意时刻插帧效果的视觉对比,可以发现我们的算法相比于之前的算法具有更好的时间一致性:
关于IFA的消融:为了验证利用IFA提取两种信息的设计是有效的,我们试过将IFA变成利用自注意力机制对每一帧单独提取外观信息(SFA)和两帧混合提取特征(Mixed)。如图10,利用IFA提取外观特征的方式相比于SFA和Mixed的范式在性能上提升巨大,这验证了IFA的有效性。同时,相比与串行提取的范式(SFA提取外观特征+BCV提取运动特征),利用IFA同时提取两种特征在需要更小计算开销的同时具备更好的性能。
关于运动特征的消融:为了进一步验证IFA提取的运动信息对于运动关系的建模是有效的,我们用单纯的时间t代替运动特征作为估计任意时刻光流估计的线索。如图11,相比于单纯的时间t,在基本相同的计算开销下,使用IFA提取的运动特征来指引任意时刻的光流估计的整体性能要明显更优,这充分证明其有效性。
关于CNN&Transformer混合结构设计的消融:为了探索CNN与Transformer混合设计的性能-计算开销之间的平衡关系,我们在不同分辨率的特征尝试分别使用两种结构进行试验。如图12,可以发现在分辨率最低的两个阶段使用Transformer就已经取得很好的性能,并且计算开销也可以接受,这也作为了我们模型的默认设置。
四、局限&未来展望
虽然我们提出的方法已经取得了不小的改进,但仍有一些局限性值得探索。首先,尽管混合CNN和Transformer的设计可以减轻计算开销,但它也限制了在的高分辨率外观特征下利用IFA进行运动信息的提取。其次,我们的方法的输入仅限于两个连续的帧,这导致无法利用来自多个连续帧的信息。在未来的工作中,我们会尝试在不引入过多计算开销的情况下将我们的方法扩展到多帧的输入。同时,因为我们提出的能够同时提取运动和外观信息的IFA模块对于视频的不同任务都是通用的,我们也将研究如何将帧间注意应用于其他同样需要这两类信息的领域,如动作识别和动作检测。
作者:张国珍
文章来源:知乎专栏【https://zhuanlan.zhihu.com/p/613539233】
Illustration by Vectormine from IconScout