论文:循环结构细节网络的视频超分辨率
代码:https://github.com/junpan19/RSDN
文章检索出自:ECCV 2020
作者单位:清华大学、华为诺亚方舟实验室、悉尼大学
看点
本文提出了一种新颖的循环网络视频超分方法,该方法在VID4测试集上的最高PSNR值达到了恐怖的27.92,远远超过了第二名,亮点如下:
- 本文将输入分为结构和细节两部分,并将其输入一个由几个双流结构细节块组成的循环单元中。这样的策略不仅能够解决结构和细节成分的不同难点,而且在重建过程中能够对高频细节的恢复和边缘的强化进行灵活的监督。
- 为了充分利用隐藏状态下的时间信息,入了隐藏状态自适应模块,允许当前帧有选择地使用隐藏状态信息。
方法
网络架构
总体采用循环神经网络的架构,每一个循环单元的输入为[
I
t
L
R
,
I
t
−
1
L
R
,
h
t
−
1
S
D
,
S
^
t
−
1
,
D
^
t
−
1
I_t^{LR},I_{t-1}^{LR},h_{t-1}^{SD},\hat S_{t-1},\hat D_{t-1}
ItLR,It−1LR,ht−1SD,S^t−1,D^t−1],其中h代表隐藏状态,S代表结构分量,D代表细节分量,每个循环单元的输出由四个部分组成,具体见下图。
循环单元
本文应用一对双三次下采样和上采样操作,从一个LR帧中提取结构分量
S
t
L
R
S_t^{LR}
StLR。细节分量
D
t
L
R
D_t^{LR}
DtLR则可以计算为输入帧LR和结构分量之间的差值。前后两时刻的细节分量{
D
t
−
1
L
R
,
D
t
L
R
D_{t-1}^{LR},D_t^{LR}
Dt−1LR,DtLR}与上一时刻输出的细节图
D
^
t
−
1
\hat D_{t-1}
D^t−1和隐藏状态
h
^
t
−
1
S
D
\hat h_{t-1}^{SD}
h^t−1SD沿着通道轴串联。结构组件部分也是相同的操作,这两个部分的信息先分别通过一个3×3卷积层,然后通过几个结构细节(SD)块进一步融合。
h
t
D
h^D_t
htD表示经过几个SD块计算得到的特征。它穿过一个3×3卷积层和一个上采样层产生高分辨率细节分量
D
^
t
H
R
\hat D_{t}^{HR}
D^tHR。结构分支的设计方法与此类似。
h
t
D
和
h
t
S
h^D_t和h^S_t
htD和htS一起生成最终的隐藏状态和高分辨率图像。
结构细节块
为了比较细节残差块的优势,加入了(a)所示的修改残差块,为了使其适应两个分支,最简单的方法是有两个修改后的残差块,分别处理两个分支,如(b)所示。但是,这样每个分支只能看到特定于组件的信息,不能充分利用输入帧中的所有信息。因此,本文提出了结构细节(SD)块,如©所示。这两个组件首先被提供给两个独立的分支,然后通过加法操作进行组合。这样,它不仅专门用于每个组件,而且还促进了结构组件和细节组件之间的信息交换。
隐藏状态自适应模块(HSA)
对于每一个处于隐藏状态的单元,如果外观与当前帧相似,则应高亮显示,否则应该被抑制。该方法通过计算输入帧和隐藏状态之间的相关性来筛选前一帧中的有用信息,从而减轻了图像剧烈变化和误差累积的影响。具体说,空间滤波体是由输入图像进行卷积和激活得到的,size为H×W×(k×k),其中k为每个滤波器的大小,在空间滤波体第(i,j)位置的
k
2
k^2
k2个像素重组成k×k×1的滤波器对隐藏状态的第(i,j)位置进行滤波,公式如下:
将得到的立方体输入进sigmoid激活函数中,得到相似矩阵立方体,和隐藏状态进行点乘,输出最终的自适应隐藏状态,如下:
损失函数
分别使用结构损失和细节损失来对训练进行监督,如下:
其中,
L
t
S
,
L
t
D
,
L
t
I
L^S_t,L^D_t,L^I_t
LtS,LtD,LtI分别表示结构损失,细节损失,超分损失,故总损失为:
实验
数据集
使用Vimeo-90K作为训练集,crop到256×256,采用BD降质。
训练细节
RSDN 5-128代表5个SD块,每个卷积层通道数为128。HSA中的k取3。输入帧为当前帧和前一帧,在开始处采取反射第二帧来进行初始化输出入。
消融实验
不同损失项权重的实验:
不同模块的消融实验: