论文提出在以往的视频超分辨率中采用的滑动窗口的方式,有效地将问题视为大量独立的多帧超分辨率任务,但是该方法有主要缺点:1)每个输入帧被多次处理,增加了计算成本;2)每个输出帧独立地根据输入帧进行估计,限制了系统产生时间上一致结果的能力。
该论文提出了一个端到端的可训练的帧递归视频超分辨率网络,该方法将先前估计的HR帧作为后续迭代的输入。这种方法首先保证了每个输入帧只需处理一次,这大大降低了计算成本;同时这种方法可以将先前HR估计帧传播到后面的帧,这一方面有助于模型重新创建精细细节,另一方面可以保证生成时间上一致的视频。
网络结构

FRVSR框架主要由以下5个部分组成:
- 光流估计网络FNet:该网络根据It−1LR和ItLR产生标准化低分辨率光流图:FLR=FNet(It−1LR,ItLR)∈[−1,1]H×W×2FNet的具体网络结构如下图所示:

光流网络FNet的设计遵循简单的编码器编码器式架构,以增加卷积的感受野。
- 上采样光流:使用双线性插值放大光流图,得到一个HR光流图(对光流上采样):FHR=UP(FLR)∈[−1,1]sH×sW×2
- 将上采样的光流与前一帧估计得到的HR进行warp:I~t−1est=WP(It−1est,FHR)
- 将上一步warp得到结果映射到LR空间中:Ss:[0,1]sH×sW×C→[0,1]H×W×s2C
该方法类似于ESPCN中亚像素卷积的反操作,具体如下图所示:
- 将上一步得到的LR映射与ItLR连接起来,输入至SRNet中进行超分辨率得到t时刻的超分辨率结果Itest,即:Itest=SRNet(ItLR⊕Ss(WP(It−1est,UP(FNet(It−1LR,ItLR)))))SRNet的具体网络结构如下图所示:

对于SRNet,遵循残差网络结构设计,但用转置的卷积替换上采样层。
损失函数
损失函数如下图两部分所示:

损失Lsr应用于SRNet的输出,并通过SRNet和FNet反向传播:Lsr=∣∣Itest−IHR∣∣22由训练的视频数据集没有光流的ground truth,我们通过计算上一帧与光流warp的结果与当前帧的均方误差来训练FNet。Lflow=∣∣WP(It−1LR,FLR)−ItLR∣∣22用于训练的总损失是L=Lsr+Lflow。
训练中的一些trick
- 使用FFmpeg从视频帧中提取10个连续帧的剪辑,通过剪辑时不包括关键帧避免连续中的场景重大变化;
- 使用BPTT反向传播;
- 初始化I0est为黑图,即I0est=0,I1LR做SISR;
- 当光流网络在It−1LR和ItLR之间找不到良好的对应关系时,超分辨率网络会自动忽略先前的图像I~t−1est。
Future Network
- 由于框架依赖于HR估计Iest来传播信息,因此它可以重建细节并在大量帧上传播它们。同时,任何细节只能在Iest中包含在系统中,因为它是SRNet将信息传递给未来迭代的唯一方法。由于Iest上的空间损失,SRNet无法传递可能对视频中的未来帧有用的辅助信息,例如,对于被遮挡的区域。因此,遮挡不可逆地破坏受影响区域中所有先前聚合的细节,并且我们的模型对于先前遮挡的区域可以做的最好是匹配单个图像超分辨率模型的性能。相比之下,使用固定数量的输入帧的模型仍然可以组合来自没有遮挡的帧的信息,以在这些区域中产生更好的结果。为了解决这个限制,使用额外的内存通道扩展框架是很自然的。
- 由于该模型在概念上是灵活的,因此可以轻松扩展到其他应用程序。例如,可以插入原始HR帧It−1HR来代替每个第K帧的估计帧It−1est。这可以实现有效的视频压缩方法,其中仅需要存储K个HR帧中的一个,而其余帧将由模型重建。
- 我们框架的进一步扩展更先进的损失函数以产生视觉上更加令人愉悦的结果。