[论文笔记]Distilling With Residual Network for Single Image Super Resolution
阅读材料:DPN1 DPN2 pytorch code ResnetXt
1.Abstract
近年来,深卷积神经网络(cnn)在单幅图像超分辨率方面取得了显著进展,但是,盲目地利用residual结构和dense结构从LR图像中提取特征,会导致网络臃肿,训练困难。为了解决这些问题,我们提出了一种简单有效的distilling with residual network((DRN)。
我们的主要贡献有三方面:
- 我们提出了residual distilling block(RDB),它享有ResNet和distills efficient imformation的优点。它可以融合共同的特征,同时保持提取重要特征的能力。
- 该方法网络参数少,网络结构简单,易于递归。它是一个紧凑的网络,在性能和型号大小之间有很大的权衡。
- 提出了一种简单有效的残差网络(DRN)提取高质量图像SR的方法。
2. Distilling With Residual Network
2.1 Network Architecture
如图3所示,论文提出的DRN主要包括三个部分:
- low-level feature extraction(LFE)
- residual distilling groups(RDGs)
- image reconstruction(IR)
2.2 Residual Distilling Group
Y
g
=
F
g
(
Y
g
−
1
)
+
Y
g
−
1
=
F
g
(
F
g
−
1
(
.
.
.
F
1
(
Y
0
)
.
.
.
)
)
+
Y
g
−
1
Y_g=F_g(Y_{g-1})+Y_{g-1}=F_g(F_{g-1}(...F_1(Y_0)...))+Y_{g-1}
Yg=Fg(Yg−1)+Yg−1=Fg(Fg−1(...F1(Y0)...))+Yg−1
其中
F
g
F_g
Fg表示为
g
t
h
g_{th}
gth的RDG操作,
F
g
−
1
,
F
g
F_{g-1},F_g
Fg−1,Fg是第g个的RDG的输入和输出。不受限制地使用residual distilling会使通道数增加很大的数量,因此,我们设置了1×1卷积与ELU,以减少通道数。最后g相当于G,所以
Y
R
D
G
s
=
Y
G
Y_{RDG_s}=Y_G
YRDGs=YG
2.3 Residual Distilling Block
LR图像具有丰富的低频信息,但是没有HR图像中存在的高频信息。因此,我们需要提取LR信息并生成高频信息。在论文DPN中发现残差学习中的联系是消除深层网络中梯度消失现象的有效途径。所以在每个RDB中,我们设计了残差提取作为基本卷积,即当信道执行残差运算时,它同时提取出新的信道。该信道由残差操作,尽可能地保留输入信息,新的distilled channel包含有用的特征,有利于产生高频信息。
[
D
o
u
t
,
i
,
d
]
=
F
r
d
(
D
i
)
[D_{out,i},d]=F_{rd}(D_i)
[Dout,i,d]=Frd(Di)
D i + 1 = F c o n c a t ( D o u t , i + D i , d ) D_{i+1}=F_{concat}(D_{out,i}+D_i,d) Di+1=Fconcat(Dout,i+Di,d)
通过这样的一个操作,局部的残差信息被这样的残差操作所提取出来,并且网络仍然是学习新特性灵活性的一条distilled path。我们都知道,在高像素向低像素转换是一个信息丢失的过程,因此,resiudal distilling 帮助我们的神经网络通过潜在的信息来提取有用的特征。
We steak K resiudal distilling blocks(RDB) in each RDG. So
Y
g
,
k
Y_{g,k}
Yg,k the k-th resiudal distilling block in g-th RDG, can be expressed as:(猜测:图4中左边的
Y
g
,
k
−
1
Y_{g,k-1}
Yg,k−1,正确是不是应该为
Y
g
,
0
Y_{g,0}
Yg,0???)
Y
g
,
k
=
F
R
D
B
,
k
(
D
k
)
=
F
R
D
B
,
k
(
F
R
D
B
,
k
−
1
(
.
.
.
F
R
D
B
,
1
(
D
1
)
.
.
.
)
)
Y_{g,k}=F_{RDB,k}(D_k)=F_{RDB,k}(F_{RDB,k-1}(...F_{RDB,1}(D_1)...))
Yg,k=FRDB,k(Dk)=FRDB,k(FRDB,k−1(...FRDB,1(D1)...))
其中
F
R
D
B
,
k
F_{RDB,k}
FRDB,k代表k-th RDB function。
最后,我们可以得到
Y
g
Y_g
Yg, g-th RDG的输出为:
F
g
(
Y
g
−
1
)
=
F
p
(
Y
g
,
K
)
,
F_g(Y_{g-1})=F_p(Y_{g,K}),
Fg(Yg−1)=Fp(Yg,K),
Y g = F g ( Y g − 1 ) + Y g − 1 Y_g=F_g(Y_{g-1})+Y_{g-1} Yg=Fg(Yg−1)+Yg−1
(where Fp denotes the compression using 1×1 convolution with ELU, and
Y
g
,
K
Y_{g,K}
Yg,Kis the output of g-th RDG when k is
K)
2.4 Image Reconstruction
对于upscaling modules可以有方法deconvolution layer, nearest-neighbor upsampling convolution and pixelshuffle proposed by ESPCN。但是随着upscaling factor的增加,网络将存在一些不确定的训练问题。随着网络的训练,反卷积的权重会改变。此外,这些方法不能适用于奇数提升因子。
基于以上的情况,我们选择 pixelshuffle 作为 upscaling module。如表1.
2.5. Loss function
在超分辨率领域有很多可用的loss函数,如MSE,mean absolute loss,perceptual and adversarial loss。由于在MSE损失的情况下,神经网络生成不符合人类视觉的图像,所以我们使用MAE loss:
l
M
A
E
=
1
N
∑
i
=
1
N
∣
∣
I
i
−
I
^
i
∣
∣
1
l_{MAE}=\frac{1}{N}\sum_{i=1}^{N}||I_i-\hat I_i||_1
lMAE=N1i=1∑N∣∣Ii−I^i∣∣1
(where N denotes the number of training samples in each batch.
I
i
I_i
Iiis the reconstructed HR image.
I
^
i
\hat I_i
I^idenotes the
ground truth HR image.)