视频超分:DDAN(Learning a Deep Dual Attention Network for Video Super-Resolution)
论文名称:一个深度对偶注意的视频超分辨率网络
文章检索出处: IEEE TRANSACTIONS ON IMAGE PROCESSING, VOL. 29, 2020
摘要和简介
以往的方法大多采用小尺度运动估计来处理大的运动,由于空间分辨率的降低,会对运动估计的精度产生不利影响。此外,这些方法通常对不同的中间特征一视同仁,对高频细节信息的利用缺乏灵活性。为了解决上述问题,本文的主要贡献如下:
- 提出了一个深度对偶注意网络(DDAN),该网络由运动补偿网络(MCNet)和深度注意重建网络(ReconNet)组成,充分利用时空相关性,学习更有意义的信息。
- MCNet以金字塔的方式研究相邻帧之间的多层次光流表示,并使用它们之间的空间变换来模拟运动补偿
- 为了更准确地提取特征,使用原始LR相邻帧的细节分量作为补充信息,从而减轻运动估计的误差。
- 在ReconNet中,我们将通道和空间维度的双重注意机制与残差学习相结合,以强调恢复对高频细节有意义的特征。MCNet和ReconNet可以联合端到端可训练的运动补偿和视频SR重建。
方法
架构
先将中心帧 I t L I_t^L ItL和相邻帧 I i L I_i^L IiL输入到MCNet中,生成相邻运动补偿帧 I ^ i L \hat I_i^L I^iL。
为了缓解错误配准带来的运动估计的影响,通过计算
I
i
L
I_i^L
IiL和
I
^
i
L
\hat I_i^L
I^iL之间的残差提取细节组件
d
i
d_i
di。
在ReconNet中,我们在通道维度将对齐后的帧、细节分量和LR中心帧串联起来,作为重构的输入进行特征提取和SR重构。
上述公式中,
F
M
C
F_{MC}
FMC为运动补偿模块MCNet,
F
S
R
F_{SR}
FSR为重建模块ReconNet。
运动补偿网络
除了学习降尺度流表示外,我们开发了额外的运动估计模块来学习全分辨率光流表示。我们采用金字塔多层次结构来进行相邻帧间的运动补偿。对于x4的运动估计部分,给定输入帧
I
t
L
I_t^L
ItL和
I
i
L
I_i^L
IiL,将这两个帧concat,然后通过两个下采样x2的卷积层(具体见TABLE 1)和一个×4亚像素卷积层上采样得到x4的粗糙光流
Δ
t
→
i
×
4
\Delta_{t→i}^{×4}
Δt→i×4,这个估计的光流有两个去处,一个是加入到×2的运动估计的输入部分;另一个是和
I
t
L
I_t^L
ItL扭曲生成
I
^
i
,
×
4
L
\hat I^{L}_{i,×4}
I^i,×4L
其中
I
(
⋅
)
\Iota(·)
I(⋅)表示扭曲操作,采用双线性插值来提高翘曲过程的效率。
I
^
i
,
×
4
L
\hat I^{L}_{i,×4}
I^i,×4L也将被添加到×2运动估计的输入部分。在×2运动估计部分,输入由
I
t
L
I_t^L
ItL、
I
i
L
I_i^L
IiL、上采样的
Δ
t
→
i
×
4
\Delta_{t→i}^{×4}
Δt→i×4和
I
^
i
,
×
4
L
\hat I^{L}_{i,×4}
I^i,×4Lconcat构成,然后通过一个下采样x2的卷积层和一个×2的亚像素卷积层上采样得到x2的光流(具体见TABLE 1),得到的光流与×4部分的光流相加然后扭曲
I
t
L
I_t^L
ItL得到
I
^
i
,
×
2
L
\hat I^{L}_{i,×2}
I^i,×2L
作者进一步利用一个附加的运动估计(Fig.2顶部)来学习全分辨率光流表示,该运动估计包含多个卷积层,而没有任何向下缩放过程。具体流程和×2部分类似,不再赘述。
细节组件提取
以前基于光流的方法只是将补偿后的相邻帧和中心帧串联起来进行特征提取和重构。然而,光流估计中的任何错误都会对后续的SR重建产生不利影响。为了解决这个问题,我们通过在对齐的帧与其原始LR输入之间进行减法运算来提取相邻帧的细节分量。然后,将提取的细节分量与扭曲帧和中心LR输入在通道维中进行连接
SR重建网络
ReconNet的详细结构如 Fig.3 所示。该方法包括四个部分:一个特征提取模块,一个多层密集的ConvLSTM块(DCB)作为构建模块,一个残差注意模块(RAM)和一个上采样模块。
1.特征提取
由卷积和残差网络组成
2.密集ConvLSTM块
把状态看作是运动物体的隐藏表示时,ConvLSTM可以捕捉运动,且密集连接多个Conv-ConvLSTM可以有效地建模时间相关性。
3.残差注意模块
残差注意组(RAG)由一系列残差注意块(RAB)和一个3×3卷积层组成。RAB结合了经典的空间残差单元和通道注意机制。假设在残差注意模块(RAM)中有n个RAGs,每个RAG包含m个RABs,第n个RAG的输出
G
n
G_n
Gn表示为
其中,
G
n
−
1
G_{n−1}
Gn−1是第n-1个RAG的输出和第n个RAG的输入。
[
R
1
n
,
R
2
n
,
…
,
R
m
−
1
n
,
R
m
n
]
[R_1^n,R_2^n,…,R_{m-1}^n,R_m^n]
[R1n,R2n,…,Rm−1n,Rmn]表示m个RABs的映射函数。
h
m
n
(
⋅
)
h_m^n(·)
hmn(⋅)表示最后一个卷积层的卷积运算。
4.残差注意块
每个RAB包含两个3×3卷积层和一个注意模块(AM)。对于第j个RAB,前两个卷积层的输出
U
j
U_j
Uj可以表示为
f
j
1
(
⋅
)
f^1_j(·)
fj1(⋅)和
f
j
2
(
⋅
)
f^2_j(·)
fj2(⋅)分别是两个卷积层的映射函数。RABs中AM的结构如Fig.4(b)所示。我们嵌入空间注意单元(SA)和通道注意单元(CA)来探索通道和空间位置之间的特征相关性。对于CA单元,我们首先在UJT上进行全局平均池化,输出shape为1×1×C
其中,
u
j
c
(
p
,
q
)
u_j^c(p,q)
ujc(p,q)是
u
j
u_j
uj的第c个通道(p,q)位置的值 ,
f
G
P
(
⋅
)
f_{GP}(·)
fGP(⋅)表示全局池化操作。然后使用两个1×1的卷积层
其中,
W
C
1
W_C^1
WC1和
W
C
2
W_C^2
WC2是两个卷积层的权重,
τ
(
⋅
)
\tau(·)
τ(⋅)是PReLU激活函数。
与CA不同,SA侧重于更重要的区域,并在局部表示上对上下文信息进行建模。首先采用1×1卷积层来集成先前状态的特征。然后,使用一个深度卷积层来获得每个通道的不同空间注意映射
对由CA单元和SA单元生成的注意映射进行元素加法运算(1×1×C和H×W×C没写怎么加)。然后利用sigmoid函数将这种注意映射的范围规范化到[0,1],生成γ
第j个RAB的输出可以表示为
我们将RAGs的所有输出特征映射输入到1×1卷积层中,生成融合表示
5.上采样模块
一个3×3卷积和一个亚像素上采样再接一个单通道3×3卷积从而输出HR残差图像
将中心帧进行双三次上采样和残差图相加,得到最终SR结果,DDAN可表示为
训练策略
光流部分损失函数
其中,
▽
t
→
i
▽_{t→i}
▽t→i为学习光流中每个分量的总变化
Δ
t
→
i
′
\Delta^{'}_{t→i}
Δt→i′,
α
=
0.01
\alpha=0.01
α=0.01。
重建部分采用Charbonnier损失
总损失为
其中,
β
=
0.01
\beta=0.01
β=0.01
经验
数据集:使用MMCNN的数据集,训练集有522个视频,测试集有20个(百度云链接)
消融实验
注意模块的消融实验
细节组件的消融实验
残差注意模块中不同n和m的对比实验
不同DCB模块数和有无RAM的对比实验
其中,
N
F
N_F
NF为不同的输入帧数。
量化评估
仅供学习使用,请勿转载。
本文地址:https://blog.csdn.net/Srhyme/article/details/109571723
上一篇: Mybatis的一些常见面试题
下一篇: JAVA SE回顾--集合(2)