改进的生成对抗网络的图像超分辨率重建
2020-07-20王冬冬王可新
王冬冬,王 力,2+,姜 敏,王可新,栾 浩
(1.贵州大学 大数据与信息工程学院,贵州 贵阳 550025;2.贵州工程应用技术学院 信息工程学院,贵州 毕节 551700)
0 引 言
图像分辨率主要取决于采集图像的硬件设备性能,提升其性能复杂且难度大、成本高。因此,图像超分辨率(super-resolution image reconstruction,SR或SRIR)重建技术应运而生,即从软件角度,利用相应的重建算法将单帧或序列低分辨率图像(low resolution,LR)生成高分辨率图像(high resolution,HR)[1]。SR分为基于插值[2]、基于重建[3,4]以及基于学习[5]三大类。传统SR方法(基于插值、重建)虽简单快速但重建结果有棋盘效应,视觉上过于平滑,且依赖HR的先验知识,当图像放大超过4倍时重建的效果并不好。基于学习是通过训练HR和LR之间的关联性构建出算法模型,将LR送入模型后得到相应的HR,此方法更符合实际应用,更具优势。Dong等[6]提出基于深度学习下的卷积神经网络的超分辨率(super-resolution using convolutional neural network,SRCNN)算法改善了重建图像效果,但网络结构单一局部感受野受限。同年,Goodfellow等提出生成对抗网络(generative adversa-rial network,GAN)[7]掀起一股热潮。之后Ledig等[8]将GAN引入SR重建中,提出基于生成对抗网络的图像超分辨率(SRGAN)算法,丰富了重建图像的高频细节,但网络训练不稳定。本文在此基础上提出一种优化的生成对抗网络的超分辨率算法,稳定网络训练性能,同时也提升了图像评价指标。
1 生成对抗网络(GAN)
1.1 GAN模型理论
原始GAN模型由生成器(generator,G)和判别器(discriminator,D)两个模型构成,训练的思想源于二人零和博弈[9],G先通过初始输入的信息去伪造数据,D判断伪造数据和真实数据,即判断一个在真假概率数值为0~1之间的问题。二者通过相互对抗不断更新优化来各自网络能力,直到D对于G生成的假数据难以正确判断时,即D输出的概率为0.5时,就构造了一个能生成以假乱真数据的GAN模型。
GAN训练的最终目标是希望D能正确判断同时又希望G能强大到去混淆D的判断,可以用以下的公式来表示此目标函数
(1)
式中:Pdata(x) 表示真实样本分布,P(z) 表示生成器分布。第一项表示将真实数据作为输入送进D中进行判别真伪结果的熵,D希望最大化该结果为“1”。第二项表示输入随机噪声到G中生成伪造数据,再送入到D中判别结果的熵,而D试图将结果最小化为“0”。GAN训练学习时,G和D是交替优化的,先固定G,优化D,式(1)可以写成如下形式
(2)
其中,Pr表示真实样本,Pg表示生成样本。上式还可以转化为最小形式
(3)
固定D,优化G,则相当于最小优化下面式子
(4)
也相当于最小优化
(5)
文中的网络训练也基于GAN原理,首先将HR通过预处理降采样得到LR,其次将LR作为输入送入G学习,并输出生成“伪造”的高分辨率样本图像(SR),最后将SR和HR送到D中学习,输出判断后反馈给网络,直到D难以区分真假,即最终获得的SR为图像超分辨率重建结果。通过训练GAN构造学习库产生模型,对LR进行恢复的过程中引入由学习模型获得的先验知识,以得到图像的高频细节,获得较好的图像恢复效果。流程框架如图1所示。
图1 SRGAN训练流程
1.2 GAN目前存在的问题
原始GAN需要G生成的假数据分布不停地去逼近真实数据的分布,直到达到最终目标。G的能力强弱直接反应了生成数据和真实数据之间分布相似度的高低。理论上来说,GAN训练生成的假数据可以无限逼近真实数据,即GAN模型能到达纳什均衡[10],但实际上只有在梯度下降在凸函数的情况下才能实现该均衡性。若实际中无法达到这样的均衡性时,用神经网络构建的D和G则会持续在一个更新优化的调整状态,即也就是GAN模型难以收敛。若训练途中模型崩溃,模型无法继续学习,G会退化导致总生成相同的样本,D也无法更新判断,同时无法获知训练进程。所以GAN训练不稳定,易造成模型崩溃。
2 方 法
2.1 改进思路
原始GAN是利用本身不连续性的JS散度[11]去表示生成数据和真实数据的距离,存在着训练困难、网络的loss无法指示训练进程、生成样本缺乏多样性等问题,因此文献[12]中提出的WGAN来代替GAN训练网络。不管生成数据和真实数据分布是否重叠,可以利用Wasserstein 距离描述二者的差异程度,反映出它们之间的相似性。可提高训练的稳定性,避免梯度消失、模型奔溃的问题,且能根据一个唯一loss监控到模型训练的程度,Wasserstein 距离定义如下
(6)
(7)
其中,θ表示D网络的参数,L为HR图像和SR图像分布之间的Wasserstein距离。因此可以转换成拟合函数Dθ去最大化Wasserstein距离。D的目标从分类任务变成了回归任务,G的目标就是尽力缩短样本间的Wasserstein距离,解决了原始GAN存在的问题。文献[14]中提到由多个残差块结构叠加构成的残差网络,其残差块(residual block)和跳跃连接的结构在深层网络中能缓解随着网络结构深度增加而带来的网络退化和梯度消失的问题。因此借鉴残差结构在一定程度上能提高提取特征能力的思想,在D中加入了残差块并对其优化。在文献[15]中提出自归一化神经网络(self-normalizing neural networks,SNNs),SNNs具有一定的收敛性,研究发现其激励值能逼近零均值和单位方差,其效果类似于批归一化。其激活函数:缩放指数型线性单元(SELU)具有自标准化的特性,不需要进行批量规范化。因此文中将原始结构中激活函数relu换为selu,提升网络训练,同时考虑到网络结构中过多的冗余层对网络训练性能的影响,参考了文献[16]中对残差网络结构中的去除归一化层(bath normalization)提升性能的思想,文中采用该思想用于构建新网络。
2.2 改进网络结构
根据2.1节的改进思想,具体设计的网络结构如图2所示。G网络结构如图2(a)所示,为提取LR特征时能扩大其感受野范围,将LR先送入一层有64个9×9的卷积核,步长为(1,1)的卷积层提取特征后再经过16层的残差网络,将残差块中的BN层去掉,并将激活函数relu替换成selu,有利于网络训练加快收敛速度,G中的核心部分就是用于生成高分辨率的16块相同的残差块,同时在残差块的输入与下一层的输出之间采用残差直连(skip connection,跳跃连接),再通过一层卷积,该卷积层的输出与第一层卷积的输出同样采用跳跃连接,接着上层输出通过两个Sub-pixel Layer(亚像素卷积层)恢复出4倍高分辨率图像的尺寸,最后经过一层卷积层后输出结果为tf.nn.tanh(),即为-1,1,因为图像进行了-1,1的预处理。
D网络结构如图2(b)所示,判别的图像经过一层64个4×4,图像特征通道数为3,步长为2×2的卷积层提取特征,加入残差学习单元,有效的深度提取出SR和HR之间的细节特征,并对残差块做了优化,即将两个3×3的卷积层替1×1+3×3+1×1,先经一层1×1卷积层降维减少计算,然后再经一层1×1的卷积层下做还原,既保持精度又减少了计算量,经多次实验仿真测试,最终加入3块优化残差块较好(注:图2(b)中由于结构图过长只画出一个残差块,省略了另外的部分,实际有3块),同样也去除了BN层,激活函数lrelu替换成selu。再将上层输出经过 5层 卷积层,因为增大局部感受野并且增加图像特征数便于提取特征图细节,所以卷积层的卷积核大小为4×4,步长为2×2,特征通道数从64个以2倍的方式递增至2048个。然后再经过三层卷积层对上层输出进行降维,并采用跳跃连接方式。经两层卷积输出后通过Flatten Layer压平图像维度,原始GAN的D网络最后一层是sigmoid函数用于输出一个0-1之间的置信度,判断输入图像是生成图像还是真实图像。改进的结构去掉原始结构D中的sgmoid层,直接用非线性层Dense Layer(全连接层)对图像输出结果。还用预训练好的VGG19来提取生成图片和真实图片的conv5层卷积层的特征输出结果,比较两者之间的特征差异,用于生成局部部位的损失值。
图2 改进网络结构
2.3 损失函数
SRGAN的损失函数在传统的代价函数的基础上加入了对抗损失能有效提升图像视觉效果,公式如下
(8)
(9)
SR的算法中大多以优化上式(9)得到较高的信噪比,但是图像缺失高频细节,因此引入基于预训练好的VGG19网络提取特征的损失值
(10)
式(10)表示HR送入预VGG19后输出结果与SR送入VGG19后输出结果像素之间的损失,其中W表示图像的长,H表示图像的宽。φi,j表示VGG网络中第i层最大池化层后的第j个卷积层得到的特征图。Wi,j和Hi,j表示特征图的维度。
式(8)第三项表示基于D网络输出的概率的对抗损失,表示LR图像输入G网络后生成的结果再送入D网络的判别结果与实际值的交叉熵,可表示为
(11)
其中,DθD是图像属于真实HR图像的概率GθG(ILR), 表示SR图像。改进的模型引入Wasserstein距离进行优化,若使得下面公式
L=EIHR~Pr(IHR)[DθD(IHR)]-EILR~PG(ILR)[DθD(ILR)]
(12)
达到最大时,或
L=-(EIHR~Pr(IHR)[DθD(IHR)]+EILR~PG(ILR)[DθD(ILR)])
(13)
到达最小时,那Wasserstein距离就可以用L来表示,G网络的目标就是最小化L。
3 实验仿真及结果对比分析
实验环境是显卡为GTX1080Ti,处理器为i7 7800x,运行内存为32 G,CUDA8.0,CUDNN7.1.4的硬件环境,以及以TensorFlow相关的库为框架搭建,以Python3.5为编写语言的软件环境。实验中训练集来自NTIRE2018的DIV2K数据集中的800张高清图(2K分辨率),通过Matlab工具箱对其翻转放缩等方法扩充训练集。测试集采用Set5,Set14以及BSD100这3个公开的基准数据集。为验证文中的SR方法重建效果,实验仿真选取了几种较为经典且常见的不同的SR方法进行对比,有传统方法中的最近邻插值(nearest)和双三次插值(Bicubic)[17],有深度学习下的SRCNN,以及原始SRGAN。
3.1 网络训练参数
实验硬件设备受限,batch_size设为16,开始训练GAN之前,先初始化优化G,即对G先迭代100轮,之后才开始训练整个网络,迭代30 000次,初始化学习率为0.0001,衰减率为0.1,每迭代15 000次学习率就下降为原来的0.1倍,同时每迭代500次就保存一次模型。在模型代码中加入Tensorboard可视化监控loss的下降情况,掌握模型训练程度。
3.2 主客观评价指标
常使用客观评价指标评价图像超分辨率的效果。客观评价注重的是重构图像与真实图像在数据上的差距,常见的有峰值信噪比(PSNR,单位是dB)和结构相似性(SSIM,在0~1的范围)。PSNR和SSIM的数值越大代表效果好,常以二者数值的高低来评判图像效果,但文献[18,19]中研究实验结果表明其客观数值与人的视觉感官是有很大差别的,有时其数值低的图像视觉效果反而比数值高的要好[20],因此需要结合主观评价,通常以人感官为主体,用肉眼感受图像,以及对图像本身的认知特点,对图像的好坏给出评价,常见的有平均意见指数(MOS)。本文分别采用PSNR、SSIM和MOS对实验结果综合评价并分析。
3.3 结果分析
训练模型时通过Tensorboard可视化监控网络训练的程度如图3所示。图3中横坐标表示训练时间,纵坐标表示loss值(模型代码loss值以负值表示)。从图3看出,在训练5个小时之前,曲线波动比较大,训练5个小时之后图中的曲线基本上没有较大的波动,网络迭代大概9525次之后,loss值在-7.047之间极小范围的浮动,基本不再变化,模型进入稳定训练的状态,说明改进的网络结构经过一段时间的训练后loss值趋于收敛,模型达到稳定的状态。
图3 利用Tensorboard监控到的loss
3.3.1 客观结果及分析
分别计算3个基准数据集各个SR方法下的每张HR和SR之间的PSNR和SSIM的值,最终并计算出各个测试集下的PSNR(dB)平均值和SSIM的平均值,得到不同SR方法下的客观评价标准结果见表1。
表1中可以看到,在3个测试集中,Nearest、Bicubic、SRCNN方法的PSNR和SSIM的数值呈逐渐增加的一个趋势。在Set5、Set14中,原始的SRGAN下的PSNR和SSIM虽比SRCNN低,但均高于Nearest和Bicubic;在BSD100中,SRGAN的PSNR和SSIM略低于Nearest和Bicubic。在Set5中,文中改进SR方法的PSNR和SSIM数值是最高的。在Set14和BSD100中,文中改进SR方法下的PSNR和SSIM虽然略低于SRCNN,但是高于SRGAN。可见本文改进的网络结构不仅能稳定训练网络,而且综合3个测试集的评价指标并求平均值来看,在SRGAN基础上PSNR提高了1.311 dB以及SSIM提高了5.47%。
表1 3个测试集下不同SR方法客观评价指标结果对比
3.3.2 主观结果及分析
由于客观评价数值与人的视觉感官存在一定的差别,需结合主观的评价来对重建图像的整体视觉效果进行评价,因此,此小节采用MOS作为主观评价指标分析重建图像,即随机让30个评分者根据个人的主观感受对测试集上的每张图像中不同SR方法重建出的图像进行评分(1~5分,分数1表示图像质量差,视觉效果差,分数5表示图像质量较好,视觉效果好),计算出其平均分,得到主观下的MOS评价结果见表2。
表2 3个测试集下不同SR方法主观评价(MOS)结果对比
3.3.3 综合评价
结合表1的客观数值和表2的MOS值以及图4细节对比图来看:Nearest的MOS值最低,重建结果视觉上看起来比较模糊,有比较明显的方块。Bicubic的MOS虽然比Nearest高一些,但重建结果并不好,图像过于平滑,视觉上也显得模糊。SRCNN的MOS值相比于前两者有所提高,重建效果也比Nearest和Bicubic有明显的改善,但是与SRGAN相比细节上又缺少了些真实感。SRGAN和改进的方法的MOS比前几种SR方法高出许多,改进的方法只比SRGAN略低一点,差别不大,重建结果都显示出逼真的纹理细节。综合客观和主观分析结果来看,传统方法Nearest和Bicubic视觉效果不佳,重建效果明显低于基于学习方法下的SRCNN和SRGAN以及文中改进的方法,可见基于学习的SR方法更具优势。文中改进的方法的PSNR和SSIM数值虽比SRCNN偏低些,但是就主观MOS视觉对比来看,细节方面明显处理得比SRCNN好,纹理细节相对来说更丰富,视觉效果更真实,而且PSNR和SSIM的值比原始SRGAN均有所提升,说明提出的改进方法是可行的。
图4 测试集中某张图片下不同SR方法重建结果的细节放大对比
4 结束语
文中提出改进的GAN图像超分辨率方法,用Wasserstein代替JS散度优化稳定网络的训练,加入优化残差块有效提取深层特征,并在网络结构中替换激活函数SELU提高网络训练性能,加快收敛;去除残差块中的冗余层保证精度的同时减少计算量。实验结果表明,改进的方法的评价指标的结果相对于原始SRGAN的PSNR提高了1.311 dB,SSIM提高了5.47%。网络训练稳定性也比原始的SRGAN好。下一步的目标继续研究基于学习方法下SR的高效方法,希望能重建出更好的高分辨率图像。