VSR_TGA:Video Super-resolution with Temporal Group Attention阅读
这是CVPR2020的一篇视频超分辨文章,由清华和华为公司联合完成。
代码链接:https://github.com/junpan19/VSR_TGA
**
文章思路
**
文章主要特点是提出一个分组分层提取时间信息的策略。
具体的实现过程:
1)首先讲=将输入的视频帧根据到目标帧的距离远近,分为不同的组别,比如七帧的输入[1,2,3,4,5,6,7],分组后的结果是[1,4,7],[2,4,6],[3,4,5],每一组中都含有目标帧,这是必须的,不然无法指导目标帧有效的超分。(这种分组效果相当于产生了不同帧率的视频。可以理解为不同运动幅度的视频,可以较好的处理大幅度运动的情况吗???,如果能这样理解的话也不合理,比如我一次输入七帧,不进行分组,那最边缘的帧相对于中间的目标帧而言也是大幅度运动情况。这种分组策略可能有一定的效果,但更多可能还是要以原始视频为准。如果大家有不同的理解可以提出。)
2)然后将分组后的视频帧分别送入一个组内模块中,进行时空特征提取与融合,然后每组分别产生处理后的特征。
3)接着执行组间的融合(为什么要进行组间融合?因为每组中都使用了不同的近邻帧,这些近邻帧信息也或多或少会指导目标帧实现更好的超分,所以需要将不同组中得到的特征再进行融合,这样就能利用到所有输入帧的信息了)
4)最后使用亚像素卷积实现上采样,然后与目标帧插值上采样的结果相加得到最后的超分结果。
此外,为了处理大幅运动的视频,作者提出了一个快速的对齐模块。
网路的整体架构如下图:
组内(Intra-group)模块结构由三部分组成:
1)特征提取器,由三个卷积组成
2)一个3D卷积
3)一个2Ddense块,由18个卷积组成
注:卷积是带空洞的,空洞率大小根据每组中帧率(距离目标帧的远近)不同设定,帧率越大空洞率越大。
组间(Inter-group)模块三部分组成,如下图所示:
1)一个时间分组注意力模块
它的计算过程很简单,他的输入是每组产生的特征图经过一个3*3卷积后的结果(即是上图中的左半部分),然后通过softmax函数,沿着时间维度计算权值,得到右半部分,最后与每组的输出特征(F_n^g)相乘得到注意力后的结果。计算公式:
2)一个3Ddense块,包含4个3D卷积
3)一个2Ddense块,包含20个卷积
注:这里的单元指的是Conv+BN+ReLU的结构
损失函数
使用L1损失
数据集
使用Vimeo-90K作为训练集
实验结果
从数值指标上,VSR-TGA表现很好(比EDVR好的我觉得都挺厉害了)
从可视化的角度看,VSR-TGA表现很不错,很明显好于EDVR(从建筑图中)。希望作者能够尽快开源吧,好好学习一下。