Residual Dense Network for Image Super-Resolution
Abstract
- 1.深层CNN拥有提取多层次的特征(低维,高维特征)的能力,但多数基于CNN的超分辨率模型不能完全利用这些特征。
- 2.(Residual Dense Network) RDN网络可以解决上述问题,充分利用提取出的多层次信息。
- 3.RDN网络中的密集连接 Residual dense block(RDB)抽取足够多的局部特征,通过连续记忆机制(contiguous memory(CM)),链接至所有当前RBD的卷积操作(Dense)。
- 4.RDB抽取出的局部特征会通过 1*1的卷积来减少多余特征并进行再学习
- 5.局部特征抽取完毕之后,RDN网络会将多个RDB结构的输出以及浅层特征进行全局特征结合。
- 6.上述网络RDN在Super Resolution(超分辨率)任务多个公共数据集上取得state-of-the-art
Introduction
- 1.Single image Super-Resolution(SISR)任务是通过低分辨率低图片生成高分辨率的图片。应用场景十分广泛
- 2.此处至介绍了DL相关的方法,SISR任务中主要性能的提升都是一些CNN中普适的优化:
- 2.1 增加CNN网络深度,使用残差,梯度裁剪等方法降低训练难度
- 2.2 大大增加网络宽度和深度,使用残差缩放,用大型的网络提升性能
- 2.3 memory block 记忆块来建立MeMNet,希望能够保存底层,浅层的特征
- 3.上述方法1,2不能保证完整使用层级特征(Abstract 1)方法3长期记忆机制并不能直接链接特征,因此也很难利用全部特征。
- 4.层级特征会更完善的表征图像,从大小,视图,角度等方面,但很多网络拒绝这么做。XXXX的网络有XXXX不好
- 5.RDN网络可以通过RDB运用全部的层次特征(Abstract 2)
- 5.1 RDB中通过密集残差链接 通过局部残差学习(Local Residual Learning(LRL))得到Local Feature Fusion(LFL),RDB之间支持连续学习机制
- 5.2 LRL允许大量的特征进入并动态过滤出有效的结果,这为网络学习的稳定性提供了很好的保证
- 5.3 局部特征融合(LFF)完成之后,网络会进行全局特征融合(Global Feature Fusion(GFF)),将每一个RDB的输出结果与最初的卷积提取出的浅层结果进行特征融合。
Related Work
第一部分主要介绍了SR这个领域中深度学习的方法,此处仅列出粗浅结构特性,建议大家通过网络名称去查询原论文
1. 具有代表性的解决 SR 问题的DL方法
- 1.1 SRCNN 端到端映射
- 1.2 VDSR IRCNN 堆叠stack 残差卷积层 增加网络深度
- 1.3 DRCN 递归学习
- 1.4 DRRN (Recusive block)递归块
- 1.5 Memnet (Memory block)记忆块
以上的网络均需要在网络输入时对其插值(resize操作),这对图片本身的信息就有了损失且增加了计算量,最终难以建立低清晰度与高清晰度图片之间的映射。
2. 为了解决上述问题,另外一类DL方法:
- 2.1 使用反卷积网络进行 upsample
- 2.2 PCN sub-pixel卷积层 upscale
- 2.3 SRResNet EDSR sub-pixel + residual block
第二类网路由于使用了反卷积或者sub-pixel卷积,均不可以做到实时的图片超分辨率,甚至不可以建立大型的网络
3.为了解决上述问题:
- 3.1 堆叠建立残差卷积层的网络可以使用最后一层特征来进行放大
第二部分主要介绍RDN网络相关的工作
1. DenseNet
- 1.1 DenseNet 使得任意两个卷积层之间的结果进行连接,使得更多的信息被保留
- 1.2 Dense connection 被运用于 DensetNet, SRDenseNet, MemNet, RDN
总结
上述工作均取得了不错的效果,但是要用上全部层级特征的问题,还是看我们提出的RDN (笔者:挺搞笑的)
Residual Denset Network for Image Super Resolution
文章缩写过多,使用Main Abbreviation table列举
Abbreviation | Full name | Meaning |
---|---|---|
RDN | Residual Dense Network | 密集残差网络 |
RDB | Residual Dense Block | 密集残差块 |
SR | Super Resolution | 超分辨率 |
LR | Low Resolution | 低分辨率 |
HR | High Resolution | 高分辨率 |
LFF | Local Feature Fusion | 局部特征融合 |
LRL | Local Residual Learning | 局部残差学习 |
CM | contiguous memory | 连续记忆 |
SFE | Shallow Feature Extraction | 浅层特征抽取 |
GFF | Global Feature Fusion | 全局特征融合 |
GRL | Global Residual Learning | 全局残差学习 |
DFF | Dense Feature Fusion | 密集特征融合 |
UPNet | Up-sampling net | 超采样网络 |
Main notation table
Notation | Meaning | Explaination |
---|---|---|
I L R I_{LR} ILR | Image with Low Resolution | 低清晰度图片(输入) |
I H R I_{HR} IHR | Image with High Resolution | 高清晰度图片(输出) |
F − 1 F_{-1} F−1 | Output of SFE layer1 | 浅层卷积第一层输出 |
F 0 F_{0} F0 | Output of SFE layer2 | 浅层卷积第二层输出 |
H s t h H_{sth} Hsth | Function of something | 某某结构的功能 |
σ \sigma σ | Activation Function | 激活函数 |
Network Structure
RDN网络由4部分组成:
- 1.浅层特征抽取网络(Shallow feature extraction net(SFENet)) 指上图中左侧蓝色两个卷积层,提取浅层特征。
- 2.多个密集残差块(Residual Dense Blocks (RDBs)) 指上图中中间部分 D D D 个RDB.
- 3.密集特征融合(Dense Feature Fusion(DFF))
- 3.1 Local Feature Fusion(LFF) 指 D D D个RDB输出结果Concate之后经过1*1 Conv 与Conv layer之后得出 F G F F_{GF} FGF的过程
- 3.2 Global Feature Fusion(GFF) 指LFF的结果 F G F F_{GF} FGF与浅层卷积的中间结果 F − 1 F_{-1} F−1结合得出 F D F F_{DF} FDF的过程
- 4.升采样网络(Up-sample Net (UPNet)) 图中紫色块 Upscale的架构,主要用到了Related Work中的反卷积网络
上述架构会在下文详细介绍:
Shallow Feature Extraction Net:
F − 1 = H S F E 1 ( I L R ) (1) F_{-1} = H_{SFE1}(I_{LR}) \tag{1} F−1=HSFE1(ILR)(1)
F
0
=
H
S
F
E
2
(
F
−
1
)
(2)
F_{0} = H_{SFE2}(F_{-1}) \tag{2}
F0=HSFE2(F−1)(2)
其中:
- I L R I_{LR} ILR代表了低清晰度图片输入
- H S F E 1 , H S F E 2 H_{SFE1}, H_{SFE2} HSFE1,HSFE2代表了SFENet第一层, 第二层卷积
- F − 1 , F 0 F_{-1}, F_{0} F−1,F0分别代表了两层卷积之后的输出结果
Multiple Residual Dense Blocks:
F
d
=
H
R
D
B
,
d
(
F
d
−
1
)
=
H
R
D
B
,
d
(
H
R
D
B
,
d
−
1
(
.
.
.
(
H
R
D
B
,
1
(
F
0
)
)
.
.
.
)
)
(3)
\begin{aligned} F_d &= H_{RDB, d}(F_{d-1})\\ &= H_{RDB, d}(H_{RDB, d-1}(...(H_{RDB, 1}(F_0))...)) \end{aligned} \tag{3}
Fd=HRDB,d(Fd−1)=HRDB,d(HRDB,d−1(...(HRDB,1(F0))...))(3)
其中:
- H R D B , d H_{RDB, d} HRDB,d代表第 d d d个RDB, 其结果是前 d − 1 d-1 d−1个RDB的计算结果, H R D B , 1 H_{RDB, 1} HRDB,1的输入就是 SFENet的输出结果 F 0 F_0 F0
- 每两个RDB之间可以通过激活函数,文中用的是ReLU
- F d F_d Fd, F d − 1 F_{d-1} Fd−1均是每个对应RDB 内部 Local Feature Fusion与Local Residual Learning之后的结果!,具体会在 RDB中解释
Dense Feature Fusion:
F
D
F
=
H
D
F
F
(
F
−
1
,
F
0
,
F
1
,
.
.
.
,
F
D
)
(4)
F_{DF} = H_{DFF}(F_{-1}, F_{0}, F_{1}, ... ,F_{D}) \tag{4}
FDF=HDFF(F−1,F0,F1,...,FD)(4)
其中:
- Dense Feature Fusion包含了 Dense Feature Learning 与 Global Feature Fusion
- F − 1 F_{-1} F−1 是浅层卷积第一层输出的feature (Dense Feature Learning)
- F 0 , F 1 , . . . , F D F_{0}, F_{1}, ..., F_{D} F0,F1,...,FD分别代表了 D D D个RDB输出的结果 (Global Feature Fusion)
- H D F F H_{DFF} HDFF代表了Dense Feature Fusion功能
这样就结合起了 最浅层的特征,以及 D D D层级抽取的特征,拥有了最全的图像信息
Summarize:
I
S
R
=
H
R
D
N
(
I
L
R
)
(5)
I_{SR} = H_{RDN}(I_{LR}) \tag{5}
ISR=HRDN(ILR)(5)
描述了整个网络的功能即是将低分辨率图像生成出高分辨率图像
Residual Dense Block
RDB结构中包含:
- 局部特征融合(Local Feature Fusion(LFF))
- 局部残差学习(Local Residual Learning)
- 连续记忆机制(contiguous memory(CM) mechanism)
Contiguous memory
在一个RDB中,有多个卷积层,对于第
c
c
c个卷积层的输出为:
F
d
,
c
=
σ
(
W
d
,
c
[
F
d
−
1
,
F
d
,
1
,
.
.
.
,
F
d
,
c
−
1
]
)
(6)
F_{d, c} = \sigma(W_{d,c}[F_{d-1}, F_{d, 1}, ..., F_{d, c-1}]) \tag{6}
Fd,c=σ(Wd,c[Fd−1,Fd,1,...,Fd,c−1])(6)
其中:
- W d , c W_{d, c} Wd,c代表的是第 d d d个RDB中第 c c c个卷积操作 注意:为了更简洁的网络,原文中每个weights对应的都取消了bias
- F d − 1 F_{d-1} Fd−1代表第 d − 1 d-1 d−1个RDB的输出
- F d , 1 , F d , 2 , . . . , F d , c − 1 F_{d, 1}, F_{d, 2}, ..., F_{d, c-1} Fd,1,Fd,2,...,Fd,c−1代表前 c − 1 c-1 c−1个卷积的输出,全部dense connect。
Contiguous memory 意思就是dense connection,连续的连接保证了连续的低级高级信息存储和记忆,每一个RDB模块的输出结果,concate上一个RDB模块的输出,以及所有的卷积层之间的信息,其包含local feature极其丰富,也包含了层级信息,保证了信息不丢失。
Local Feature Fusion
对第
d
d
d个 RDB来说:
F
d
,
L
F
=
H
L
F
F
d
(
[
F
d
−
1
,
F
d
,
1
,
.
.
.
,
F
d
,
c
,
.
.
.
,
F
d
,
C
]
)
(7)
F_{d, LF} = H^d_{LFF}([F_{d-1}, F_{d, 1}, ..., F_{d, c}, ..., F_{d, C}]) \tag{7}
Fd,LF=HLFFd([Fd−1,Fd,1,...,Fd,c,...,Fd,C])(7)
其中:
- F d − 1 F_{d-1} Fd−1代表第 d − 1 d-1 d−1个RDB的输出
- F d , 1 , F d , 2 , . . . , F d , C F_{d, 1}, F_{d, 2}, ..., F_{d, C} Fd,1,Fd,2,...,Fd,C代表该RDB内部所有 C C C个卷积层输出
- 将以上信息通过 H L F F d H^d_{LFF} HLFFd融合 则得到 F d , L F F_{d, LF} Fd,LF
Local Residual Learning
对第
d
d
d个RDB来说:
F
d
=
F
d
−
1
+
F
d
,
L
F
(8)
F_d = F_{d-1}+ F_{d,LF} \tag{8}
Fd=Fd−1+Fd,LF(8)
就是将公式7 LFF的结果与上一个RDB的输出结果进行skip connection也就是残差链接。整合了上一层RDB输出信息与当前RDB结合的feature,保证了层级信息与信息不被丢失。
Dense Feature Fusion
通过RDBs 抽取除了足够多了 Local Dense Features之后,进行全局信息整合,具体包含两步:
- 全局特征融合 (Global Feature Fusion(GFF))
- 全局残差学习 (Global Residual Learning(GRL))
Global Feature Fusion
F
G
F
=
H
G
F
F
(
[
F
1
,
.
.
.
,
F
D
]
)
(9)
F_{GF} = H_{GFF}([F_1, ..., F_D]) \tag{9}
FGF=HGFF([F1,...,FD])(9)
其中:
- [ F 1 , . . . , F D ] [F_1, ..., F_D] [F1,...,FD] 代表了 D D D个RDB的输出结果concat起来
- G G F F G_{GFF} GGFF代表了Fig.2中中间部分的11 Conv与 33 Conv两层,抽取出更高层的特征。
Global Residual Learning
F
D
F
=
F
−
1
+
F
G
F
(10)
F_{DF} = F_{-1} + F_{GF} \tag{10}
FDF=F−1+FGF(10)
就是将浅层特征与最高层的全局融合特征再进行了残差连接
得到了
F
D
F
F_{DF}
FDF,最后将这些特征送入Upscaler,最终得到放大后的图片输出。
Implementation Details
- LFF 与 GFF中的两个卷积 kernel size 1*1,其他所有的卷积核size均为3 * 3.
- 每一层之间不同于传统的Residual Block,取消了Batch Normalization
- 不再使用pooling layers
Experiments
实验此处不再赘述。有兴趣直接去看原论文吧
代码:https://github.com/yulunzhang/RDN.
主要数据集: DIV2K, Set5, Set14, B100, Urban100, Manga109
Ablation Study
通过对模型不同模块的缺省和性能分析,可以看出每一个模块和连接均对性能有了不同程度的提升。
CaseStudy
Conclusion
- 文章将 MemNet中对记忆机制运用到dense connection与feature fusion的特征通过上
- 文章将residual connect 与 dense connect进行了结合,从loca,global等多个角度均体现了dense, residual的思想,极大程度的保证了信息的全面性与层级性,保证多层级特征不被丢失,取得最佳的效果。