VRT-- A Video Restoration Transformer 论文阅读

痛苦 没想到 最后还是要入坑CV QAQ~~

论文阅读

Abstract

现有的方法

  • 滑动窗口策略(sliding window strategy)
  • 递归结构(recurrent architecture)

这样的话就会被限制在逐帧恢复,或者缺乏大范围恢复的能力

于是提出了 Video Restoration Transformer (VRT)

为什么有效?

  1. 预测上采用了并行架构
  2. 拥有时间上长期建模能力

VRT由多个尺度(multiple scales,不知道这里这么翻合不合适)组成,每个尺度包含两个模型

  1. temporal mutual self attention (TMSA)
  2. parallel warping

然后讲了这两个模型的作用

TMSA:将视频分成小的片段,然后采用 mutual-attenton 来进行联合运动估计、特征对齐和特征融合,自注意力用来做特征提取。为了实现夸片段的交互(信息提取、相互影响),对视频序列每隔一层进行一个 shift。

parallel warping:通过平行特征弯曲(parallel feature warping)进一步融合相邻帧的信息

Introduction

image-20230416101533914

绿色圆圈:低质量(LQ)输入帧;蓝色圆圈:高质量(HQ)输出帧。t−1, t and t+1 are frame serial numbers。

a. 基于滑动窗口的方法。

基于滑动窗口的方法通常输入多帧来生成一个 HQ 帧,并以滑动窗口的方式处理长视频序列。
每个输入帧在推理过程中进行多次处理,导致特征利用效率低下和计算成本增加。

b. 递归方法

  1. 递归方法在并行上受到限制
  2. 递归模型不擅长长距离的时间依赖性建模,一个帧可能对下一帧有较明显的影响,但该影响在几个时间步长后会迅速消失,即帧间信息不能长距离传递
  3. 在帧数较少的视频上的表现明显下降

c.并行方法

  • 基于多尺度框架,VRT将视频序列划分为不重叠的片段,并交替移动以实现片段间的互动,在每个尺度上都有几个TMSA模块,之后是平行的弯曲模块;

  • TMSA中,交互注意力的重点是相邻两帧片段之间的相互对齐,而自注意力则用于特征提取;

  • 在每个尺度结束时,进一步采用平行翘曲操作将相邻帧的信息融合到当前帧。

  • 与现有视频修复框架相比,VRT有以下优点:

    1. 如(C),VRT是在长视频序列上并行训练和测试的(基于滑动窗口的方法和递归的方法往往是逐帧测试的);
    2. VRT有能力对长距离时间依赖性进行建模,在每一帧的重建过程中利用多个相邻帧的信息(基于滑动窗口的方法不容易扩展到长序列建模,而递归方法在几个时间步长之后可能会忘记遥远的信息);
    3. VRT提出使用交互注意力来进行联合特征对齐和融合,它自适应地利用支持帧的特征并将其融合到参考帧中,可被视为隐式的运动估计和特征翘曲。

model

如下图,VRT由两个部分组成,特征提取模块(feature extraction)重建模块(reconstruction)

Feature Extraction:

在开始部分,采用一个2D卷积提取浅层特征image-20230416110158078。然后,基于UNet架构设计了一种多尺度网络在不同分辨率进行特征对齐

  • 当总尺度数为 S 时,本文通过将每个 2×2 领域压缩到通道维度,并通过线性层叫通道数减少到原始数,对特征进行 S-1 次下采样;
  • 然后,本文通过解压缩将特征逐渐上采样到原始尺寸。

在不同尺度,我们可以采用两个模块(Temporal Mutual Self-AttentionParallel Warping)进行特征提取以及运动处理。最后,我们采用多个TMSA模块进一步进行特征提炼得到深层特征image-20230416110229872

Reconstruction

在特征提取之后,本文同时从浅层特征和深层特征的相加中重建HQ帧(不同的帧是根据其相应的特征独立重建的)。为减轻特征学习的负担,本文采用全局残差学习(global residual learning),即只预测双线性上采样的LQ序列和真值HQ序列之间的残差。在具体实现中,不同的重建模块用于不同的修复任务:

  • 对于视频超分,本文采用子像素层(sub-pixel convolution layer)对特征进行尺度因子为 S 的上采样;
  • 对于视频去模糊、去噪,只需使用单个卷积层进行重建。

image-20230410171323139

Temporal Mutual Self Attention

简单说一下,细节就看论文就好了

我们都知道,注意力机制就一个QKV。这里我们的Q用的是reference frame feature,KV用的是supporting frame feature

image-20230416112642747

这样就可以得到reference frame feature 和 supporting frame feature的相关性

image-20230416104132735

Temporal mutual self attention (TMSA)

image-20230416113154454

image-20230416113308049

解释:将mutual attention与自注意力相结合

  1. 将两帧特征拆分为 X1,X2
  2. X1向X2 warping, X2向X1 warping –> 得到 Y1,Y2
  3. 同时MSA 计算得到 Y3
  4. Concat 以下然后扔到 MLP里降维
  5. 进一步 LayerNorm + MLP

tips: 如何解决计算效率问题?

每两帧都这么搞一下,计算复杂度是 T^2

解决方法: 采用类似于滑动窗口机制。并通过堆叠TMSA,一帧可以学到多帧的信息(2(i − 1) 帧)