文章目录
文章链接:(CVPR 2018)https://arxiv.org/abs/1909.11856v1
代码链接:https://github.com/Zheng222/IDN-Caffe
Abstract
近年来,深卷积神经网络(CNNs)在单图像超分辨率方面取得了令人瞩目的进展。然而,随着网络深度和宽度的增加,基于CNN的超分辨率方法在实际应用中面临着计算复杂度和内存消耗的挑战。为了解决上述问题,我们提出了一种深而紧凑的卷积网络,直接从原始低分辨率图像重建高分辨率图像。
总得来说,该模型由三部分组成,分别是特征提取块、串联在一起的信息蒸馏块和重建块。一个蒸馏Block内包含有一个增强单元(enhancement unit )和一个压缩单元(compression unit),可以有效地提取局部长路径特征和局部短路径特征。
具体地说,所提出的增强单元将两种不同类型的特征混合在一起,并且压缩单元为序列块提取更多有用的信息。此外,由于每层滤波器数目相对较少,且使用群卷积,因此该网络具有执行速度快的优点。实验结果表明,该方法在时间性能上优于现有(2018)的state-of-the-art 方法。
1. Introduction
首先,文章回顾了下现有的SR方法,主要分为:基于插值、基于重建的方法和基于学习(example-based)的方法这三种。其中,前两种方法在放大倍数较大时表现不佳,所以最近主要以后面一种方法为主。部分现有基于学习的方法:
- VDSR(CVPR, 2016)
- DRCN(CVPR, 2016)
- RED(NIPS, 2016):对称跳过连接、encoder-decoder
- DRRN(CVPR, 2017)
现有模型存在的问题:
- 现在的为了追求性能,网络越来越深/宽,计算开销和内存消耗越来越大,没法在移动或嵌入式设备上应用;
- 如VDSR、DRCN等传统卷积网络采用了级联网络的策略(cascaded network topology)有这使得每一层的特征图都无差别得向后传递。Hu等人通过实验说指出,如果能自适应地调整通道数,可以进一步提升网络性能。
2. Network Structure
该信息蒸馏网络IDN由特征提取块(FBlock)、串联了多个的信息蒸馏块(DBlocks)和重建块(RBlock) 这三部分组成。
2.1 特征提取块(FBlock)
特征提取部分由两个 3 × 3 3\times3 3×3 Conv组成,其中Conv层后跟的**函数为LeakyReLU。用公式表示如下:
B 0 = f ( x ) \begin{aligned} B_0=f(x) \end{aligned} B0=f(x)
2.2 信息蒸馏块(DBlocks)
信息蒸馏块是整篇文章的重点,主要由增强单元和压缩单元组成。在网络中,经过浅层特征提取之后,有n个信息蒸馏块串联在一起,其中第 k k k个信息蒸馏块的输出 B k B_k Bk用公式表示为:
B k = F k ( B k − 1 ) , k = 1 , 2 , … , n \begin{aligned} B_k=F_k(B_{k-1}), k=1,2,\dots,n \end{aligned} Bk=Fk(Bk−1),k=1,2,…,n
2.2.1 增强单元(Enhancement unit)
增强单元内部也是分为两个模块。第一个模块由3个 3 × 3 3\times3 3×3的Conv+LeakyReLU组成。第 k k k个增强单元的模块1如下所示:
P 1 k = C a ( B k − 1 ) , k = 1 , 2 , … , n \begin{aligned} P^k_1=C_a(B_{k-1}) , k=1,2,\dots,n \end{aligned} P1k=Ca(Bk−1),k=1,2,…,n
其中,
B
k
−
1
B_{k-1}
Bk−1为上一个块的输出,
C
a
C_a
Ca是这3个卷积操作。
接着,将输出在通道维度进行切片,其中前
1
/
s
1/s
1/s用于和输出concat在一起,剩下的
1
−
1
/
s
1-1/s
1−1/s继续送往下面的3个Conv+LeakyReLU。
R
k
=
C
(
S
(
P
1
k
,
1
/
s
)
,
B
k
−
1
)
,
P
2
k
=
C
b
(
S
(
P
1
k
,
1
−
1
/
s
)
)
,
\begin{aligned} R^k=C(S(P^k_1,1/s), B_{k-1}),\\ P^k_2=C_b(S(P^k_1,1-1/s)) , \end{aligned}
Rk=C(S(P1k,1/s),Bk−1),P2k=Cb(S(P1k,1−1/s)),
值得注意的是,这两个卷积块中的输出通道数 D i , i = 1 , … , 6 D_i,i=1,\dots,6 Di,i=1,…,6 分别存在以下的关系: D 3 − D 1 = D 1 − D 2 = d D 6 − D 4 = D 4 − D 5 = d D 4 = D 3 \begin{aligned} D_3-D_1=D_1-D_2=d\\ D_6-D_4=D_4-D_5=d\\ D_4=D_3 \end{aligned} D3−D1=D1−D2=dD6−D4=D4−D5=dD4=D3
最后,将两者的输出做element-wise相加:
P
k
=
R
k
+
P
2
k
,
\begin{aligned} P^k=R^k+P^k_2, \end{aligned}
Pk=Rk+P2k,
2.2.2 压缩单元(Compression unit)
压缩单元其实就是 1 × 1 1\times1 1×1的Conv,从而降低通道数起到“压缩”的效果。
2.2 重建块(RBlock)
见Figure. 2最后一的紫色块,重建块为 17 × 17 17\times17 17×17的反卷积层。
3. Experiments
网络设置部分,IDN采用看4个信息蒸馏块DBlocks,并且分别设超参数 D 3 = 64 、 d = 16 、 s = 4 D_3=64、d=16、s=4 D3=64、d=16、s=4。