基于改进生成对抗网络的单图超分辨率重建

么天舜 马晓轩

(北京建筑大学电气与信息工程学院 北京 100044)(建筑大数据智能处理方法研究北京市重点实验室 北京 100044)

单图超分辨率重建技术(Single Image Super-Resolution,SISR)指将一幅低分辨率的图像通过相关算法重建出对应的高分辨率图像,广泛用于视频监控[1]、卫星图像[2]、医学成像[3]等领域。图像超分辨率重构是计算机视觉领域重要的研究工作[4]。超分辨率技术中常用的方法分为基于插值[5]、基于重建、基于学习[6]三种。基于插值的方法主要有双线性插值、双三次插值等,此类方法主要依靠图像的原始信息,计算简单但生成的图像高频信息不足、质量不高。基于重建的方法主要有迭代反投影法、凸集投影法和最大后验概率估计法。此类方法将图像退化后重构,虽然与插值方法相比提高了计算的复杂度,但受限于先验信息,对于复杂图像重建的效果不理想。基于学习的方法是目前超分辨率中的主要解决方法。随着深度学习的发展,以神经网络模型为基础的算法应用到了超分辨率问题上,通过复杂的网络结构学习低分辨率和高分辨率图像的深层映射关系,取得了较好的效果。

近年来,基于深度学习的方法解决超分辨率问题已具有一定的发展。Dong等[7]提出的SRCNN(Super-Resolution Conventional Neural Network)方法首次利用神经网络解决超分辨率问题。SRCNN仅使用三个卷积层对图像进行特征提取、映射后生成高分辨率图像,在当时重建的效果优于传统方法。在He等[8]提出的残差网络解决了在深度网络结构下训练困难的问题之后,Kim等[9]提出VDSR使用残差学习并加深网络结构,与SRCNN相比提高了生成图片的质量。Ledig等[10]提出SRGAN网络,该方法首次使用生成对抗网络[11](Generative Adversarial Networks,GAN)思想构建网络结构,并提出了新的损失函数解决生成的图像在放大倍数较大时纹理细节较少问题。但由于引入生成对抗网络,目前也存在着网络训练不稳定,生成网络和判别网络在训练中不平衡导致的梯度消失和多样性不足等问题。Wang等[12]提出的ESRGAN中以SRGAN网络结构为基础,通过删除网络中批规范化层以及使用密集残差块等方法,减少了生成图像的伪影现象使图像更加逼真。Zhang等[13]提出密集残差块对SRGAN中残差块进行修改,利用图像的所有分层特征进行学习提高重建效果。Lim等[14]提出的EDSR去掉了SRResNet多余的模块并相应扩大模型规模,达到重建图像效果的提升。

为了进一步提高重建后图像的质量,恢复更多的纹理细节并提升网络的稳定性,本文设计一种生成对抗网络下改进的单图超分辨率重建算法。以生成对抗网络结构为基础,首先对生成网络中的残差块进行修改,使用多尺度下的卷积层对图像的特征进行学习,前移激活函数移到权重层之前形成预激活并使用GELU作为激活函数构成新的残差块,提高网络的泛化能力从而生成更加真实的图像;
然后利用Wasserstein距离对网络中的对抗损失函数进行修改,增强网络训练的稳定性;
其次引入Huber损失函数作为内容损失;
最后减少判别网络中的批规范化层从而优化网络结构。

本文以生成对抗网络为基础结构构建单图超分辨率重建算法,网络模型总体结构包括生成器网络和判别器网络,其中生成器网络以低分辨率的图像作为输入,通过神经网络生成高分辨率图像去拟合原始的高分辨率图像;
判别器网络以生成的图像和原始的图像为输入尽可能将两者区分出来。两个网络分别以损失函数为优化目标训练生成器和判别器,经过一定的迭代次数最终优化网络。本文通过对生成网络中的残差块结构、激活函数、损失函数、判别器网络结构进行修改,使模型训练更稳定的同时提高模型的生成能力,从而改进图像重建后的质量。

2.1 生成网络模型

本文中生成网络以一幅低分辨率的图像为输入,先经过一个由16个残差块组成的残差网络学习图像的特征,然后再经过两个放大比例为2的亚像素卷积层对图像进行放大,最终生成高分辨率的图像。

通常来说,网络深度的增加可以学习到图像更深层次的特征从而提升网络的性能,但同时会带来梯度消失和网络退化等问题,利用残差网络可以缓解这些问题。为进一步解决这一问题,本文对残差块进行修改,首先采用更多尺度的卷积层对图像特征进行学习,提高模型精度。然后将激活函数前移至权重层之前形成预激活,在通过加法合并的残差网络结构中,预激活能够使网络更容易进行优化工作,从而缓解深度网络中的过拟合现象提高网络的泛化能力。最后在激活函数上使用高斯误差线性单元GELU激活函数代替深度学习中一般使用的ReLU(Rectified Linear Unit)等激活函数。

本文设计的残差网络由16个残差块相连组成,其中残差块结构如图1所示。使用两种维度下的卷积提取不同尺度的特征,每个通道由两个预激活层(GELU)和两个卷积层组成对图像特征进行学习。

图1 本文残差块结构

除了改进残差网络以外,本文在生成器网络中移除了所有批归一化(Batch Normalization,BN)层。虽然BN层能够在一定程度上缓解过拟合问题,但是也使生成后的图像出现伪影现象,为了提高重建图像的质量,本文在生成网络中均不使用BN层。生成网络结构如图2所示,生成网络卷积层参数设置如表1所示。

图2 生成网络结构

表1 生成网络卷积层参数设置

激活函数为神经网络引入非线性特性,ReLU是神经网络中常用的激活函数,其定义如下:

(1)

由式(1)可以看出,当输入x≤0时输出为0,这将会导致部分参数无法更新。本文引入Hendrycks等[15]提出的GELU激活函数以解决这一问题,GELU激活函数定义如下:

GELU(x)=xP(X≤x)=xΦ(x)

(2)

式中:X~N(0,1)是标准正态分布。为了方便计算,将式(2)近似为式(3)。

(3)

ReLU与GELU函数图像如图3所示。

(a) ReLU (b) GELU图3 激活函数图像

由图3和式(3)看出,GELU激活函数具有非凸、非单调性的特点,在正域内是非线性的,并且在所有点处均有曲率。与ReLU不同,当输入为负数时GELU不是将输出简单置0而是仍有相应的输出达到激活作用。并且GELU在激活中引入随机正则的思想,对输入x乘以一个依赖于整体输入分布的数值,保持了输入x的随机性以及对输入的依赖性。

GELU将非线性与依赖输入数据分布的随机正则化结合在一起,提高了模型的泛化能力,这是ReLU所不具备的。Hendrycks等[15]证明了GELU优于ReLU等激活函数。

2.2 判别器网络模型

判别网络主要由连续的卷积层组成,分别以生成器生成的高分辨率图像和原始真实的高分辨率图像为输入,在8个卷积层之后通过一个全连接层降低维度以便损失函数的计算。在SRGAN中,判别网络最后通过Sigmoid激活函数解决二分类问题。本文由于使用Wasserstein距离增强网络训练的稳定性,在判别器网络中去除原始SRGAN中最后的Sigmoid激活并减少BN层以优化网络结构。判别网络结构如图4所示,判别网络卷积层参数设置如表2所示。

图4 判别网络结构

表2 判别网络卷积层参数设置

2.3 损失函数

(4)

(5)

2.3.1内容损失

本文使用Huber Loss函数而不是MSE损失函数作为内容损失。MSE(Mean Squared Error)属于L2型损失函数,由于函数计算样本目标值与预测值之间误差的平方,当两者差距较大时误差会被放大从而受到更大的惩罚,使得模型对异常值比较敏感,纹理细节等高频信息不能被恢复出来,最终生成的图像过于平滑和模糊,无法反映模型输出和真值图像之间的感知区别。因此本文使用Huber Loss函数作为内容损失函数部分,其结合了L2型MSE与L1型MAE损失函数两者的优点,以超参数δ为界,不同的预测偏差值对应不同的函数,降低了对离群点的惩罚程度并增强了鲁棒性,函数定义如式(6)所示。

(6)

式中:δ=0.75;
ILR为原始低分辨率图像;
IHR为原始高分辨率图像;
G(ILR)为生成器生成的高分辨率图像。

2.3.2感知损失

(7)

式中:H、W为图像的高度和宽度;
Φi,j表示在VGG19网络中的第i个最大卷积层之前的第j个卷积获得的特征图,i=5、j=4。先利用VGG网络提取特征然后再使用MSE损失计算,从而解决仅使用MSE损失时图片过渡平滑、纹理细节不高的问题。

2.3.3对抗损失

本文引入Arjovsky等[16]提出的Wasserstein距离(Earth-Mover距离)对对抗损失函数进行修改,主要解决GAN中训练不稳定的问题。GAN中目标函数见式(8)。

Ex~Pg(x)[log(1-D(G(x)))]

(8)

(9)

C(G)=-log(4)+2JSD(pr‖pg)

(10)

式中:JSD(pr‖pg)表示pr与pg之间的JS散度,当二者分布相同时JS散度等于0;
C(G)为最小值,生成器网络完成优化。但是当pr与pg之间的分布完全没有重叠或者重叠的部分可以忽略时,它们之间JS散度的数值等于log2,此时梯度为0导致生成器发生梯度消失,使得生成对抗网络难以训练。因此引入Wasserstein距离修改对抗损失函数,Wasserstein距离如式(11)所示。

(11)

(12)

L=Ex~Pr[fw(x)]-Ex~Pg[fw(x)]

(13)

(14)

(15)

式中:ILR为原始低分辨率图像;
IHR为原始高分辨率图像;
G(ILR)为生成器生成的高分辨率图像。

3.1 实验设备和环境

本文实验设备如下:显卡为NVIDIA GeForce 2060 super,显存为8 GB,处理器为Intel Corei5- 8400 2.80 GHz。使用Anaconda软件配置和管理程序的运行环境,程序主要基于TensorFlow框架。

本文实验采用DIV2K数据集,此数据集包含1 000幅高清图片(2K分辨率),其中800幅供训练使用,剩下200幅为验证和测试使用,并且提供了与高清图片对应的低分辨率图片。实验使用DIV2K数据集中的800幅图片进行训练,测试时使用Set5、Set14、BSD100通用数据集。实验中,高分辨率图像的大小为低分辨率图像的4倍,采用RMSprop优化器进行优化,初始学习率为10-4,rho为0.9,网络训练次数为100。受硬件设备所限,batch_size设置为4,其次将训练数据集中的图片大小裁剪成256×256×3和64×64×3并进行左右旋转操作以丰富数据集。在开始训练前先对生成器进行100次预训练,这样在正式训练时第一次生成的图像能够更接近真实的图像。训练完成后,在测试集上将本文方法与Bicubic[17]、SRCNN[7]、SRGAN[10]、ESRGAN[12]这些经典算法重建后的图像进行对比。

3.2 客观评价指标

本文采用峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)和结构相似性(Structure Similarity Index,SSIM)作为客观评价指标。峰值信噪比(PSNR)是一种目前常用的评价图像质量的指标,计算简单、实现速度快,峰值信噪比数值越高代表图像失真越少、质量越好,其定义见式(16)。

(16)

式中:MAXI为图片最大像素值255;
I为原始的图像;
K为重建的图像。

但由于峰值信噪比基于对应像素点间的差值计算,与人类主观感觉并不完全一致。因此本文也使用结构相似性(SSIM)作为评价指标,SSIM从亮度、对比度、结构这三项对比两幅图像的相似性,更符合人眼的真实感知,其数值越大,表示图像失真越小,质量越好,其定义见式(17)。

(17)

3.3 残差块质量分析

本文在生成器网络中主要对残差块进行了相关优化,为了验证改进后的效果,将改进后的残差块与原始SRGAN中残差块进行对比。在相同的训练集条件下,两个网络模型分别使用不同的残差块结构、相同的本文中的损失函数进行训练。训练完成之后分别在Set5和Set14数据集下进行测试,其结果见表3、表4。

表3 不同残差块在Set5上的PSNR/SSIM数值

表4 不同残差块在Set14上的PSNR/SSIM数值

可以看出,在Set5数据集上,本文方法与使用改进前残差块结构的模型相比,PSNR提高了0.17 dB、SSIM提高了0.003 8;
在Set14数据集上,PSNR提高了0.07 dB、SSIM提高了0.002 2。结果表明,本文通过引入GELU激活函数等方法对残差块进行优化有一定的提升效果。

3.4 网络稳定性分析

本文引入Wasserstein距离改进损失函数,为了验证其对网络稳定性的影响,将本文算法与SRGAN算法的判别器损失函数曲线进行对比,结果见图5、图6。

图5 SRGAN判别器Loss曲线

图6 本文算法判别器Loss曲线

可以看出,SRGAN算法在训练60轮后判别器Loss数值逐渐趋于平稳,但是仍不稳定、存在波动。而本文算法在训练20轮之后逐渐开始收敛,训练60轮后趋于稳定且波动较小。验证了本文算法通过引入Wasserstein距离对损失函数进行优化,能够使模型训练更稳定、收敛速度更快。

3.5 损失函数性能分析

本文在内容损失中引入Huber Loss函数,由于函数受其超参数δ影响,超参数数值的设定影响模型的生成能力,因此对δ分别选取不同数值并与原始MSE损失进行比较,在Set5数据集下测试性能,对比结果见图7、图8。通过对比发现,对于评价指标PSNR,Huber损失均优于MSE损失。对于评价指标SSIM,当δ为0.5、0.75时,Huber损失优于MSE损失,证明了Huber损失总体表现优于MSE损失。其次当δ=0.75时,PSNR和SSIM数值最大,因此本文选取0.75作为超参数δ的数值。

图7 不同δ下PSNR数值对比

图8 不同δ下SSIM数值对比

3.6 重建效果与分析

实验在Set5、Set14和BSD100数据集上进行测试,高分辨率和低分辨率图像之间的放大因子为4倍,本文算法同Bicubic、SRCNN、SRGAN、ESRGAN这些经典算法进行对比,分别从Set5、Set14数据集中选择了一幅图像进行重建,各个算法重建后的效果如图9、图10所示。为了进一步对比图像重建的效果,本文对相关算法进行PSNR和SSIM客观数值上的对比。其中PSNR数值的对比见表5,SSIM数值的对比见表6。除了进行客观数据对比,本文将SRGAN、ESRGAN和本文方法这三种基于生成对抗网络模型的算法进行训练时间上的对比,结果见表7。

(a) HR (b) Bicubic(c) SRCNN

(d) SRGAN (e) ESRGAN (f) 本文方法图9 Set5各个算法重建后的效果

(a) HR (b) Bicubic(c) SRCNN

(d) SRGAN (e) ESRGAN (f) 本文方法图10 Set14各个算法重建后的效果

表5 相关算法在各数据集上的PSNR数值 单位:dB

表6 相关算法在各数据集上的SSIM数值 单位:dB

表7 网络训练的平均时间对比

通过图9、图10可以看出,基于学习类方法(SRCNN、SRGAN、ESRGAN、本文方法)重建的图像质量均高于基于插值(Bicubic)的方法,且基于插值重建的图像的PSNR和SSIM数值均不如其他算法,说明了在超分辨率问题上基于学习的方法在性能和效果方面优于基于插值的方法,而且基于对抗网络的算法能够恢复较为清晰的图像信息。通过表5、表6可以看出,在测试的数据集Set5、Set14和BSD100中,对于评价指标PSNR,本文方法较SRGAN方法分别提高了0.35 dB、0.38 dB、0.42 dB,对于评价指标SSIM,本文方法较SRGAN方法分别提高了0.005 2、0.003 1、0.003 9。与ESRGAN方法相比,本文方法重建后的图像在PSNR数值上提高了0.19 dB、0.15 dB、0.15 dB,在SSIM数值上提高了0.002 3、0.001 8、0.001 4。说明了本文算法在一定程度上提高了图像重建后的质量,能够生成较为高质量的图像。通过表7可以看出,本文方法通过对网络结构进行优化,在平均训练时间上要少于SRGAN以及ESRGAN的训练时间,本文方法训练时迭代一次的时间为0.874 s,与SRGAN相比减少了0.031 s,与ESRGAN相比减少了0.247 s,因此说明了本文方法在训练时效率更高。

本文主要以生成对抗网络结构为基础,首先引入多尺度卷积层以及GELU激活函数对残差块进行改进以增强网络的学习能力,提高生成图片的质量;
其次,引入Wasserstein距离改进对抗损失函数,增强网络的稳定性;
最后减少判别网络中大量批规范化层从而对网络结构进行优化,减少模型的冗余部分。实验采用峰值信噪比(PSNR)和结构相似性(SSIM)作为客观评价指标,与其他基于学习的经典方法进行主观视觉效果以及客观评价指标对比。实验结果表明与其他经典算法相比,本文算法生成的图像纹理细节清晰,PSNR及SSIM数值较高,训练时间更短,说明了本文算法在单图超分辨率重建中有一定的提升。下一步将深入研究网络中卷积核的改进,以达到进一步提升图像重建质量的目的。

猜你喜欢 网络结构残差损失 基于双向GRU与残差拟合的车辆跟驰建模网络安全与数据管理(2022年3期)2022-05-23胖胖损失了多少元数学小灵通·3-4年级(2021年5期)2021-07-16基于残差学习的自适应无人机目标跟踪算法北京航空航天大学学报(2020年10期)2020-11-14基于递归残差网络的图像超分辨率重建自动化学报(2019年6期)2019-07-23玉米抽穗前倒伏怎么办?怎么减少损失?今日农业(2019年15期)2019-01-03基于时效网络的空间信息网络结构脆弱性分析方法研究军事运筹与系统工程(2016年4期)2016-07-10基于互信息的贝叶斯网络结构学习北京信息科技大学学报(自然科学版)(2016年6期)2016-02-27复杂网络结构比对算法研究进展智能系统学报(2015年4期)2015-12-27综合电离层残差和超宽巷探测和修复北斗周跳中国惯性技术学报(2015年1期)2015-12-19菜烧好了应该尽量马上吃共产党员(辽宁)(2015年2期)2015-12-06

推荐访问:重建 对抗 生成