新智元报道
编辑:LRS
【新智元导读】传统的帧插值通常都是在两张极其相似之间生成图像。最近Google提出的FLIM模型能够对动作变化幅度较大的两张照片进行帧插值来生成视频:首次引入Gram损失,不仅锐度提升,细节也拉满!
帧插值(Frame Interpolation)是计算机视觉领域的一项关键任务,模型需要根据给定的两个帧,来预测、合成平滑的中间图像,在现实世界中也有极大的应用价值。
常见的帧插值应用场景就是对提升一些帧率不够的视频,一些设备都配有专门的硬件对输入视频的帧率进行采样,使得低帧率的视频也可以在高帧率显示上进行流畅地播放,不用「眨眼补帧」了。
随着深度学习模型越来越强大,帧插值技术可以从正常帧率的录像中合成慢动作视频,也就是合成更多的中间图像。
在智能手机不断普及的情况下,数字摄影对帧插值技术也有了新需求。
正常情况下,我们拍照片通常都是在几秒钟之内连续拍下几张照片,然后再从这些照片中选出更好的「照骗」。
这类图片有一个特点:场景基本重复,主体人物只有少量的动作、表情变化。
如果在这类图片下进行帧插值就会产生一个神奇的效果:照片动了起来,变成了视频!通常情况下视频都要比照片更加有代入感和时刻感。
是不是有种「实况照片」的感觉。
但帧插值的一个主要问题就是没办法有效地处理大型场景的运动。
传统的帧插值都是对帧率进行上采样,基本上就是对近乎重复的照片进行插值,如果两张图片的时间间隔超过了1秒,甚至更多,那就需要帧插值模型能够了解物体的运动规律,也是目前帧插值模型的主要研究内容。
最近,Google Research团队提出了一个新的帧插值模型FLIM,能够对运动差别比较大的两张图片进行帧插值。
之前的帧插值模型往往很复杂,需要多个网络来估计光流(optical flow)或者深度,还需要一个单独的网络专门用于帧合成。而FLIM只需要一个统一网络,使用多尺度的特征提取器,在所有尺度上共享可训练的权重,并且可以只需要帧就可以训练,不需要光流或者深度数据。
FLIM的实验结果也证明了其优于之前的研究成果,能够合成高质量的图像,并且生成的视频也更连贯。代码和预训练模型都已开源。
论文地址:https://arxiv.org/pdf/2202.04901
代码地址:https://github.com/google-research/frame-interpolation
模型架构
FLIM模型的架构中包含三个主要的阶段。
1. 尺度无关的特征抽取(scale-agnostic feature extraction)
FLIM的特征抽取器的主要特点就是在流预测阶段(flow prediction stage)权重共享,能够同时在粗粒度和细粒度的分辨率下得到权重。
首先对两个输入图像创建一个图像金字塔,然后在每层图像金字塔使用一个共享的UNet编码器构建特征金字塔,并且使用卷积层抽取了4个尺度的特征。
需要注意的是,在同一个深度的金字塔层级上,都使用相同的卷积权重以创建兼容的多尺度特征(compatible multiscale features)。
特征提取器的最后一步通过连接不同深度但空间维度相同的特征图,构建了尺度无关的特征金字塔。最细粒度的特征只能聚合一个特征图,次细粒度是两个,其余的可以聚合三个共享特征图。
2. 运动/流估计(motion/flow estimation)
提取特征金字塔后,需要用它们来计算每个金字塔的双向运动,和之前的研究相同,从最粗粒度的一层开始进行运动估计。与其他方法不同的是,FLIM从中间帧到输入,直接预测面向任务的流。
如果按照常规的训练方法,使用ground truth光流来计算两个输入帧之间的光流是无法实现的,因为无法从尚待计算的中间帧预测光流。但在端到端的帧插值系统中,网络实际上已经能够基于输入帧和对应的特征金字塔很好地预测了。
所以在每个层级上计算面向任务的光流就是从更粗的粒度上预测的残余和上采样的流之和。
最后,FLIM在中间时间t创建一个特征金字塔。
3. 融合:输出结果图像(fusion)
FILM的最后阶段在每个金字塔层级处将时间t处的尺度无关的特征图和双向运动连接起来,然后将其送入UNet-like解码器以合成最终的中间帧。
在损失函数的设计上,FLIM只使用图像合成损失(image synthesis losses)来监督训练最终的输出,没有在中间阶段使用辅助的损失项。
首先使用一个L1重构损失,最小化插入帧和标准帧之间像素级RGB的差别。但如果只用L1损失,生成的插入帧通常都是比较模糊的,使用其他相似的损失函数训练也会产生类似结果。
所以FLIM添加了第二个损失函数感知损失(perceptual loss)来增加图像的细节,使用VGG-19高级别特征L1正则表示。由于每层的感受区,感知损失在每个输出像素周围的小范围内强制执行结构相似性,实验也证明了感知损失有助于减少各种图像合成任务中的模糊伪影(blurry artifacts)。
第三个损失为风格损失(Style loss),也称为Gram矩阵损失,能够进一步扩大VGG损失中的优势。
FLIM也是第一个将Gram矩阵损失应用于帧插值的工作。研究人员发现这种损失能有效地解决图像的锐度,以及在不透明的情况下保留图像细节,还能够在具有大运动量的序列中消除干扰。
为了达到高基准分数以及高质量的中间帧合成,最终的loss同时使用三个损失加权求和,具体每个loss的权重由研究人员经验性地设置。在前150万轮迭代的权重为(1, 1, 0),在后150万轮迭代的权重为(1, 0.25, 40) ,超参数通过grid search自动调参获得。
实验部分
研究人员从指标量化和生成质量两方面来评估FLIM网络。
使用的数据集包括Vimeo-90K , UCF101 和 Middle- bury,以及最近提出的大运动数据集 Xiph。研究人员使用Vimeo-90K作为训练数据集。
量化指标包括峰值信号噪声比(PSNR)和结构相似性图像(SSIM),分数越高代表效果越好。
感知-失真权衡表明,仅靠最小化失真指标,如PSNR或SSIM,会对感知质量产生不利影响。帧插值研究的多重目标是实现低失真、高感知质量和时间上连贯的视频。因此,研究人员使用文中提出的基于Gram矩阵损失LS来优化模型,对失真和感官质量都有好处。
当包括对感知敏感的损失时,FILM在Vimeo-90K上的表现优于最先进的SoftSplat。在Middlebury和UCF101上也取得了最高分。
在质量的对比上,首先从锐度(Sharpness)来看,为了评估基于Gram矩阵的损失函数在保持图像清晰度方面的有效性,将FLIM生成的结果与用其他方法呈现的图像进行了视觉比较。与其他方法相比,FLIM合成的结果非常好,面部图像细节清晰,并保留了手指的关节。
在帧插值中,大部分的遮挡的像素应该在输入帧中是可见的。一部分像素,取决于运动的复杂度,可能无法从输入中获得。因此,为了有效地掩盖像素,模型必须学习适当的运动或生成出新的像素。结果可以看到,与其他方法相比,FILM 在保持清晰度的同时正确地绘制了像素。它还保留了物体的结构,例如红色玩具车。而SoftSplat则变形了,ABME产生了模糊的画中画
大运动(large motion)是帧插值中最具难的部分之一。为了扩大运动搜索范围,模型通常采用多尺度的方法或密集的特征图来增加模型的神经能力。其他方法通过训练大型运动数据集来实现。实验结果可以看到,SoftSplat和ABME能够捕捉到狗鼻子附近的运动,但是它们在地面上产生了很大的伪影。FILM的优势在于能够很好地捕捉到运动并保持背景细节。
参考资料:
https://film-net.github.io/