【论文笔记2_超分辨】(IDN)Fast and Accurate Single Image Super-Resolution via Information Distillation Network

时间:2024-03-15 12:58:42



文章链接:(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)

现有模型存在的问题:

  1. 现在的为了追求性能,网络越来越深/宽,计算开销和内存消耗越来越大,没法在移动或嵌入式设备上应用;
  2. 如VDSR、DRCN等传统卷积网络采用了级联网络的策略(cascaded network topology)有这使得每一层的特征图都无差别得向后传递。Hu等人通过实验说指出,如果能自适应地调整通道数,可以进一步提升网络性能。



2. Network Structure

【论文笔记2_超分辨】(IDN)Fast and Accurate Single Image Super-Resolution via Information Distillation Network
该信息蒸馏网络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(Bk1),k=1,2,,n


2.2.1 增强单元(Enhancement unit)

【论文笔记2_超分辨】(IDN)Fast and Accurate Single Image Super-Resolution via Information Distillation Network

增强单元内部也是分为两个模块。第一个模块由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(Bk1),k=1,2,,n

其中, B k − 1 B_{k-1} Bk1为上一个块的输出, C a C_a Ca是这3个卷积操作。

接着,将输出在通道维度进行切片,其中前 1 / s 1/s 1/s用于和输出concat在一起,剩下的 1 − 1 / s 1-1/s 11/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),Bk1),P2k=Cb(S(P1k,11/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} D3D1=D1D2=dD6D4=D4D5=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=64d=16s=4