超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建

超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建_第1张图片
超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建_第2张图片

DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution

    • Abstract
    • 1 Introduction
    • 2 Method
      • 2.1 Basic Method
      • 2.2 Advanced Model
      • 2.3 LOSS
    • 3 Experiments
    • 4 Conclusion

这篇文章是第一次将之前已有的递归神经网络(Recursive Neural Network)结构应用在图像超分辨率上。为了增加网络的感受野,提高网络性能,引入了深度递归神经网络,但出现了梯度爆炸/消失问题,又研究出了递归监督跳跃连接两个扩展办法。
论文指引:https://arxiv.org/abs/1511.04491

Abstract

作者提出了一种使用深度递归卷积网络(DRCN)的图像超分辨率重建方法(SR)。网络有一个非常深的递归层(多达16个递归)。增加递归深度可以提高性能,而不会因为额外的卷积而引入新参数。在参数优势外,由于网络非常深,会引起梯度的爆炸/消失,使用标准的梯度下降方法学习DRCN非常困难。为了减轻训练的难度,作者提出了两个扩展方法:递归监督和跳跃连接。实验证明该网络能达到很好的效果。

1 Introduction

在图像超分辨率(SR)中,卷积网络的感受野非常重要。感受野越大,可以用来恢复缺失的高频分量的有用上下文信息就越多。现有的各种计算机视觉任务的深层卷积网络通常使用非常大的感受野(224x224,在ImageNet分类中常见)。

那么增加感受野的方式一般有两种:增大卷积核的尺寸、增加网络深度。
作者提到使用增加网络深度的方法有两种:使用尺寸大于1×1的卷积核conv层或pool层
但这两种增加网络深度的方法都有各自的缺陷:conv层会引入更多参数;pool层通常会丢弃一些重要的像素级的信息导致重建图像丢失细节。对于超分辨率和去噪等图像恢复问题,图像细节非常重要,因此图像重建类的工作都不使用pool。因此只能考虑通过增加卷积层来增加网络深度,但过大的网络又会导致两个问题:需要用大量的数据来避免过拟合、网络模型的存储和加载困难。

由此作者提出了深度递归卷积网络,用相同的循环层来替代不同的卷积层。当执行更多递归时,参数的数量不会增加。又加深了网络的深度。单纯的使用深度递归卷积网络,作者发现了一些问题:用广泛使用的随机梯度下降法优化的DRCN不容易收敛。是因为梯度爆炸/消失和单个权重层难以学习像素之间的长期依赖关系。

又由此作者提出了两种方法来缓解训练难度:循环监督和跳跃连接

1. 循环监督:把每次递归后的特征映射都用于重建目标高分辨率图像HR。由于每次递归都会导致不同的HR预测,因此作者将不同级别的递归产生的所有预测结合起来,以提供更准确的最终预测。
2. 跳跃连接:在SR中,低分辨率图像(输入)和高分辨率图像(输出)在很大程度上共享相同的信息。输入的精确信息在许多向前传递过程中可能会衰减。于是作者将输入和各层的输出连接到重建层,用于图像的恢复。

 

2 Method

作者先介绍了基本的含递归卷积网络的模型,但这个方法难以训练,作者又提出了改进后的高级模型(加入了递归监督和skip connection)。

2.1 Basic Method

超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建_第3张图片
基底模型由三个子网络组成:嵌入网络embedding netword推理网络 inference network 重建网络reconstruction network。嵌入网络用于将给定图像表示为特征映射,推理网络加深网络深度,将嵌入网络的输出特征映射到更高维度。一旦推理完成,推理网络中的最终特征映射将被送入重建网络以生成输出图像。 上图中的input图像是原始LR图像经过插值上采样后的图像

网络的目标是学习一个模型 f f f使预测值 y ^ = f ( x ) \hat{y} = f(x) y^=f(x) y ^ \hat{y} y^ 是估计地面真实的输出。用 f 1 、 f 2 、 f 3 f1、f2、f3 f1f2f3分别表示嵌入层、推理层、重建层子网络函数。整体模型用 f ( x ) = f 3 ( f 2 ( f 1 ( x ) ) ) f(x) = f_3(f_2(f_1(x))) f(x)=f3(f2(f1(x)))来表示。

嵌入层:
含有一层隐藏层,将输入图像(灰度或RGB)表示为一组特征映射。
嵌入层网络函数 f 1 ( x ) f_1(x) f1(x) 获取输入向量 x x x并计算矩阵输出 H 0 H_0 H0,该矩阵输出 H 0 H_0 H0是推理网络 f 2 f_2 f2的输入。隐藏层值用 H − 1 H_{-1} H1表示。
嵌入层网络的公式如下:
超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建_第4张图片
推理层:
推理网络是解决超分辨率问题的主要组成部分。分析一个大的图像区域是由一个递归层完成的。每个递归层应用相同的卷积,使用激活函数ReLU。 卷积核尺寸大于1×1,每循环一次网络的感受野都变宽了。
推理层 f 2 f_2 f2 获取输入矩阵 H 0 H_0 H0 并计算矩阵输出 H D H_D HD。推理层中对每个循环网络操作使用相同的权重和偏差矩阵W和b。设g表示由推理层的单个递归建模的函数: g ( H ) = m a x ( 0 , W ∗ H + b ) g(H) = max(0,W∗H+b) g(H)=max(0,WH+b)
递归层公式为:
超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建_第5张图片
重建层:
虽然递归层最终应用的特征图代表重建的高分辨率图像,但将其(多通道)转换回原始图像空间(1或3通道)是必要的。
对于嵌入层,作者使用3×3卷积核,因为对于超分辨率,图像特征信息比原始信息更丰富。对于推理层,3×3卷积意味着隐藏状态只传递给相邻像素。重建网络也要考虑相邻信息。
重建网络 f 3 f_3 f3获取输入的隐藏状态 H D H_D HD,并输出目标图像SR(高分辨率)。简单来说,重构网络相当于嵌入网络的逆运算。
重建层公式:
在这里插入图片描述

Basic Model 虽然简单且功能强大,但作者发现训练深度递归网络非常困难(最多训练三个循环层)。
有以下几点原因:

  1. 梯度的消失和爆炸。梯度爆炸是由链式梯度的乘法性质造成的。对于深度递归,可以呈指数增长。梯度消失问题正好与梯度爆炸相反。梯度呈指数级的速度到零向量。因此,梯度爆炸和消失的存在使深度递归网络掌握远距离像素信息间的关系非常困难。
  2. 经过多次递归想要保留原始LR信息并不容易。在SR任务中,输出与输入非常相似,所以LR图像的信息非常重要,需要为后续更深的递归层保留输入图像的精确信息。
  3. 存在一个寻找最优递归次数的问题。如果递归对于给定的任务来说太深,就需要减少递归的次数。寻找最优数需要训练许多具有不同递归深度的网络。
     

2.2 Advanced Model

超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建_第6张图片

对于Basic Model作者并没能训练出成功的深度递归网络,为了解决梯度和最优递归问题,作者又提出了一种改进的模型。

  1. Recursive-Supervision:监督每层递归,以减轻梯度消失/爆炸的影响。假设在推理层中卷积过程反复使用相同的卷积核,使用相同的重建层来预测每一次递归重建的SR图像。重建层输出D个预测图像,所有预测都在训练期间同时受到监督,这一步在公式中的体现为增加了一部分loss,后面公式中具体再介绍。
      a、将所有D个预测图像通过加权求和来计算最终输出(权重由网络学习得到)。通过递归轻了训练递归网络的困难,通过反向传
      播将不同预测损失产生的反传梯度求和提供平滑效果,能够有效缓解梯度爆炸或消失。

      b、此外,由于监督能够利用所有中间层的预测信息,因此选择最佳递归次数的重要性降低了。

  2. Skip-Connection:对于图像重建任务,输入和输出图像高度相关,所以可以直接通过跳层连接将LR信息直接传输到SR重建层。该做法有两个优点:节约了远距离传输的复杂算力极大程度的保留了完整的低频信息

高级模型的公式:(基于基础模型修改)

递归监督中的每个中间预测的输出:
在这里插入图片描述
d = 1 , 2 , 3 , . . . , D d =1,2,3,...,D d=1,2,3,...,D

重建层网络现在多接收了一个来自skip-connection的 x x x信息。
这个重建网络可以采用多种功能形式,比如作者使用的是 f 3 ( x , H d ) = x + f 3 ( H d ) \bm{f_3(x,H_d)= x+f_3(H_d)} f3(x,Hd)=x+f3(Hd),因为网络的输入 x x x是插值后的图像, y ^ ≈ x \hat{y}≈ x y^x。这是也是简化计算的一种方法。
最终输出是所有中间预测的加权平均:
在这里插入图片描述
w d w_d wd表示递归期间每个中间隐藏状态重建的预测权重。这些权重是在网络训练中学习的。

 

2.3 LOSS

本小节讲述训练网络的目标函数
给定训练数据集 { x ( i ) , y ( i ) } i = 1 N \{x^{(i)},y^{(i)}\}^N_{i=1} {x(i),y(i)}i=1N,网络的最终目标是找到能够准确预测 y ^ = f ( x ) \hat y = f(x) y^=f(x)值的最佳模型 f f f。均方误差 1 2 ∣ ∣ y − f ( x ) ∣ ∣ 2 \frac{1}{2} | | y − f(x)||^2 21yf(x)2在训练集上求平均值最小化。这是一种在SR任务中广泛使用的评估标准,有利于得到高峰值信噪比(PSNR)。使用递归监督,会有D+1次目标函数最小化:监督递归的D个输出 l 1 ( θ ) l_1(\theta) l1(θ)和最终输出 l 2 ( θ ) l_2(\theta) l2(θ) θ \theta θ 表示参数集。
对于中间输出,损失函数:
在这里插入图片描述
对于最终输出,损失函数:
在这里插入图片描述
综上,得出最终的损失函数 L ( θ ) L(θ) L(θ)。训练通过权重衰减( L 2 惩 罚 × β L2惩罚\timesβ L2×β)进行规范化 。
在这里插入图片描述
式中, α α α表示中间输出对重建图像的重要性占比, β β β表示权重衰减的系数。设置 α α α越大可以使训练过程稳定,因为早期递归容易收敛。随着训练的进行,后期 α α α衰减用以提高最终输出的性能。通过使用基于反向传播的小批量梯度下降优化回归目标来进行训练。
 

3 Experiments

数据集:
Train:使用91-image数据集。Test:使用了四个数据集:Set5、Set14、B100、Urban100。

训练设置:
文章中默认使用16个递归网络。整个网络展开,从输入到输出的最长路径有20个conv.层(41×41的感受野)。
SGD中的动量参数:0.9
权重衰减系数β:0.0001
所有卷积核尺寸: 3 × 3 × 256 3×3×256 3×3×256
patch size:41X41
stride:21
batch size:64
学习率:0.01,若5个epoch后loss没有下降,则学习率缩小10倍。若学习率低于 1 0 − 6 10^{-6} 106,训练终止。
最终网络在Titan X GPU训练了6天。

实验结果和对比结果图可以自行看论文。
可以得出结论:随着循环层加深,PSNR的越来越高,实验中最大层数是16。继续加深网络,PSNR是否会继续提高并未可知。但是综合考虑性能平衡,作者选择了16层递归网络。
超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建_第7张图片

本文的提出的网络模型优于其他所有现有方法,该方法重建的图像SR可以产生相对尖锐的边缘,而其他方法重建的图像中边缘会模糊。
 

4 Conclusion

  文章提出了一种使用深度递归卷积网络的图像超分辨率重建方法。该网络在利用大型图像上下文的同时有效地重复利用权重参数,减少了额外参数的引入,提高了网络效率,效果成功超越了其他现有的方法。

  文章首先使用了一般的递归网络,但是发现存在梯度爆炸/消失问题,难以训练出一个成功的深度递归网络。为了降低模型训练的难度,使用了递归监督跳跃连接两种方法,构造出了高级递归神经网络。


最后祝大家科研顺利,身体健康,万事胜意~

你可能感兴趣的:(超分,计算机视觉,超分辨率重建,深度学习,cnn,神经网络)