APP下载

生成式对抗网络在超分辨率图像重建中的应用*

2020-04-15汪鑫耘

计算机与生活 2020年4期
关键词:高分辨率分辨率卷积

汪鑫耘,李 丹

安徽工业大学 电气与信息工程学院,安徽 马鞍山 243032

1 引言

超分辨率技术可以重建低分辨率的图像以获得更多细节信息,也可以应用于低分辨率视频重建以获得更好的视觉效果,在实际应用中不可或缺,如高分辨率的医学图像有利于配合医生做出正确的判断,高分辨率可以更好协助警方破案等,此外高分辨率的图像还可以做数据增强来提高智能算法的性能。目前主要有重建、插值、学习三种方法被用于图像超分辨率研究,基于重建方法是建立观测模型之后再逆向求解,最终实现重组,该方法的问题在于它是一个不可逆问题且重组结果不唯一[1]。插值是直接利用图像的先验信息,再通过建立数学模型输出高分辨率图像。经典的方法有最近邻插值、双线性插值、双三次插值等[2-4],但只对少部分图像重建效果明显。随着所需图像放大倍率的增加,重建和插值的方法效果都不理想。近年来随着深度学习的迅猛发展,深度学习中的各类智能算法及卷积神经网络模型被广泛应用到了图像超分辨率重组中。Dong 等人[5]提出SRCNN(super-resolution using convolutional neural network)的方法,将卷积神经网络引入到超分辨率重建问题中,但是研究人员发现SRCNN 很难训练,它对超参数的变化非常敏感。Yang 等人[6]提出DEGREE(deep edge guided recurrent residual)来指导反馈残差网络,初步解决了SRCNN 没有完全开发图像的先验信息和SRCNN 存在丢失细节信息的现象等问题。他们大都以均方误差(mean squared error,MSE)为最小化的目标函数,这样虽然可以取得较高的PSNR(peak signal to noise ratio),但是当超分辨率重建倍数较高,如四倍、八倍时,重建得到的图像会非常模糊,丢失大量细节。2016 年,Ledig 等人[7]提出了SRGAN(super-resolution using a generative adversarial network),利用对抗式生成网络[8]来进行超分辨率重建的方法,但使用SRGAN 生成的高分辨率图像相对原图比较模糊。2018 年,Wang 等人[9]提出了ESRGAN(enhanced super-resolution generative adversarial networks),使用残差密集块RDB(residual dense block)作为生成网络的主体,超分辨率重建虽然获得了较明显的效果,但其生成的图像存在过多的伪细节。

为了获取更好的超分辨率重建效果,本文设计了PESRGAN(permeability enhanced super-resolution generative adversarial networks)超分辨率重建方法,可以重建四倍下采样图像,PESRGAN 基于SRGAN算法框架,在ESRGAN 的基础上,对激活函数、基础网络结构和损失函数进行优化,以改进超分辨率重建算法。

2 方法与理论

2.1 模型建立

设计的PESRGAN 算法采用对抗式生成网络,包含生成网络和判别网络,其整体结构如图1 所示。生成网络的输入是低分辨率图像,经过卷积后,输入残差密集块,再通过采样层和若干卷积层,最后输出高分辨率图像;同时将生成的图像作为负样本输入判别网络,判别网络的正样本是非生成的高分辨率图像,判别网络使用经典的VGG19 网络[10],输出为判别高分辨率图像的真假结果。

2.2 激活函数

在深度学习中常使用ReLU 作为激活函数可以加速卷积的计算[11],但是当一个非常大的梯度流过ReLU 神经元时,可能会打乱数据分布,导致某些神经元不激活任何数据而发生关闭现象,改进的LeakyReLU 可以避免这种情况,LeakyReLU 函数公式如式(1),其中x是输入,y是输出,leaky 为(0,1)的系数。

Fig.1 Generator network and discriminator network architecture图1 生成器网络和判别器网络结构

此外本文还使用了Swish 激活函数[12],Swish 是Google 在2017 年提出的一种新的激活函数,其原始公式如式(2),其中x是输入,y是输出。

Swish 激活函数拥有不饱和、非单调性等特点,Google 在论文中的多项测试表明Swish 激活函数的性能非常好,在不同的数据集上都表现出了优于当前其他激活函数的性能。

2.3 生成器模型

PESRGAN 在ESRGAN 的生成器模型结构基础上进行修改,使用残差密集块RDB 中的残差作为基本的网络构建单元,每3 个RDB 构成1 个RRDB(residual in residual dense block),RDB 和RRDB 基本结构如图2 所示。图像经过两层卷积并使用Swish 函数,后经过26 个RRDB 结构,在RDB 结构中使用1×1和3×3 的卷积层,减少参数量的同时加深了网络。此外RDB 中使用Leaky ReLU 激活函数,加速收敛,这样更有利于深度网络的训练,有效地避免了梯度消失,然后图像通过残差密集块后连续两次使用Upsample 方法进行上采样,最后经过两个卷积层并使用Swish 激活函数后将图像还原。

Fig.2 Basic structure of RDB and RRDB图2 RDB 和RRDB 基本结构

2.4 判别器模型

PESRGAN 使用典型网络VGG19 对判别器进行训练,将高分辨率图像输入VGG19 网络之前,对图像进行随机旋转、裁剪以增强判别器模型的稳定性。最后输出结果为二分类,即判别输入的高分辨率图像是原始图像还是生成器生成的图像。

生成器尽力生成看似真实的图像,判别器尽力区分生成和真实的图像,经过训练,生成网络和判别网络形成一个对抗的过程,最后生成网络会生成非常近似真实的高分辨率图像。

2.5 损失函数

2.5.1 判别器损失函数

2018 年Jolicoeur-Martineau[13]提出训练生成器时,不仅应该提高伪数据是真实数据的概率,还应该降低实际数据是真实数据的概率。判别器的损失函数如式(3):

2.5.2 生成器模型损失函数

基于Bruna 等人[14]和Gatys 等人[15]感知特征相似性的想法,Johnson等人[16]提出感知损失,并在SRGAN中进行扩展。知觉的损失先前是在预先训练的深网络的激活层上定义的,即两个激活功能之间的距离最小化。特征提取同样使用VGG19 网络,提取con3-4、conv5-4 双层特征损失进行计算。

此外,PESRGAN 引入渗透指数PI(permeability index),即原图与生成图像的拉普拉斯算子的方差之比,渗透指数越大,代表图像清晰度越高,细节越多,采用渗透指数作为权值,有利于生成器模型生成更加清晰的图像。但如果PI 值太大会产生过多的伪细节。PI公式如式(4):

PESRGAN 结合相对判别器理论对损失函数重新定义,使用激活层前的特征原因在于:被激活的特征是非常稀疏的,如baboon 的激活神经元的百分率在VGG19-54 层后仅为11.17%[9],表示高级特征稀疏激活提供的弱监督会使得性能变差,且使用激活后的特征也会使得图像的亮度和真实图像不一样;融合两层特征优点在于双层特征可以更好地明确损失收敛的方向。生成器模型损失函数定义如式(5):

其中,LG为生成器总生成损失,L1是评估图像G(xi)和真实图像y之间的1-范数距离内容损失,λ和η是平衡不同损失项的系数,为相对生成器的损失,PI为渗透指数参数。

2.6 评价函数

为验证所提算法的效果,采用峰值信噪比PSNR、结构相似性SSIM(structural similarity index)和渗透指数PI 来评估改进的网络。PSNR 是对已处理图像与原始图像之间的误差进行定量计算,PSNR 的数值越大,说明失真越小。SSIM 的数值越逼近于1,说明处理后的图像结构与原始图结构极为近似,表明生成的结果图像越好。

PSNR 公式如式(6):

其中,I(i,j)和K(i,j)分别表示原始高分辨率图像和生成高分辨率图像。

SSIM 公式如式(7):

其中,μx是x的平均值,μy是y的平均值,是x的方差,是y的方差,σxy是x和y的协方差,c1=(k1L)2,c2=(k2L)2用来维持稳定的常数。L是像素的动态范围,k1和k2是常数,分别为0.01 和0.03。

3 实验结果与分析

PESRGAN 的实验在CPU 为Intel CoreTMi7-6800K@3.400 GHz,GPU 为NVIDIA GTX1080Ti,内存为16 GB 的主机上进行。实验平台搭载的操作系统为Ubuntu16.04,深度学习框架为pytorch 0.4.0、CUDA9.0。实验使用DIV2K 训练集和Flickr2K 数据集一共1 800幅图像进行训练,其中800 张为DIV2K 数据集的训练集图像,1 000 张为Flickr2K 数据集图像。为了梯度下降的快速与稳定,实验中使用Adam 优化器,批大小为16,即一次梯度下降使用16 张图像训练。由于实验所使用的GPU 显存限制,训练过程中生成器网络输入大小为48×48×3 的图像,经过两个上采样层输出大小为192×192×3 高分辨率图像,判别器网络输入大小为192×192×3 高分辨率图像,输入为二分类,最后测试过程中输入大小为M×N×3,输出大小为(4M)×(4N)×3,即四倍上采样的高分辨率图像。

经过实验,发现直接使用生成器的总损失函数很难训练且没有较好的结果。因此先使用像素损失对网络进行预训练,后融合相对GAN 损失、多层特征损失和像素损失来进行二次训练。这样先使用像素损失预训练可以减少相对GAN 损失对像素损失产生的影响,以加速模型整体的收敛,更重要的是经过预训练,判别器最先接收的是较好内容的高分辨率图像,继续训练会更加关注真实高分辨率图像的纹理特征。Set14 数据集中的baboon 图像实验对比结果如图3 所示。

Fig.3 Comparison results of baboon image experiment图3 baboon 图像实验对比结果

实验结合了LeakyReLU 和Swish 激活函数,并修改ESRGAN 算法中生成器基本网络结构,将本实验的生成器损失和ESRGAN 生成器特征损失进行对比,如图4 所示(使用预训练模型)。

由图4 可知,PESRGAN 的生成器损失收敛速度略快于ESRGAN,虽然Swish 函数比LeakyReLU 复杂,但由于对生成器基本网络RRDB 的改进,减小了大量参数,从而提高了算法的速度,且引入了Swish激活函数,使模型具有非线性、平滑和非单调性的特点,最终改进算法的损失略低于ESRGAN,说明对激活函数和网络结构的改进是有效的。在Set5 数据集上进行实验,平均PSNR、SSIM和PI值结果如表1所示。

Fig.4 Feature loss comparison of ESRGAN and PESRGAN generators图4 ESRGAN 和PESRGAN 生成器特征损失对比图

Table 1 Comparison of average PSNR,SSIM and PI value表1 平均PSNR、SSIM 和PI 值对比

由表1 可知,虽然PESRGAN 相对ESRGAN 的PSNR、SSIM和PI值有所改进,但对PSNR、SSIM和PI指标的提升不是很明显,尤其是两种算法的PI值均较大,说明都产生了过多的伪细节。

为了产生较少的伪细节,在以上实验的基础上引入PI值作为损失权重来进一步优化算法;同时生成器网络使用融合两层特征损失,明确模型收敛方向。最后使用Set5、Set14、BSDS100、Urban100、DIV2K测试集(100 张)和部分Flickr2K 数据集(100 张)进行测试,发现实验取得优秀的重建结果。同时使用Bicubic、SRGAN 和ESRGAN 算法进行比较,将各测试数据集的平均PSNR值、平均SSIM值和平均PI值列成表2、表3 和表4。

由表2~表4 可知,PESRGAN 与Bicubic 相比,虽然PSNR和SSIM指标差别不大,但Bicubic 的PI值过大,说明重建的细节太少,生成的图像非常模糊;PESRGAN 与SRGAN 相比,PSNR和SSIM指标均有明显优势,且SRGAN 的PI值不稳定,说明重建效果不好;PESRGAN 与ESRGAN 相 比,PESRGAN 的PSNR和SSIM指标均高于ESRGAN,说明图像经过PESRGAN 重建后可以获得更接近原图的高清图像,ESRGAN 的PI值远低于1,说明ESRGAN 在超分辨率重建过程中会产生很多伪细节,而PESRGAN 的值比较接近于1,说明重建后产生的图像具有与原图差不多的细节量,且经过PESRGAN 重建的图像PSNR和SSIM指标均比较好,说明PESRGAN 在超分辨率重建过程中复现出更多的真实细节。

Table 2 Comparison of average PSNR values of each algorithm in different data sets表2 各算法在不同数据集的平均PSNR 值对比 dB

Table 3 Comparison of average SSIM values of each algorithm in different data sets表3 各算法在不同数据集的平均SSIM 值对比

Table 4 Comparison of average PI values of each algorithm in different data sets表4 各算法在不同数据集的平均PI 值对比

Bicubic、SRGAN、ESRGAN 和PESRGAN 算法在Set5、Set14、BSDS100、Urban100、DIV2K、Flickr2K 数据集上的平均运行时间如表5 所示。由于各数据集图像大小不同,故超分辨率重建的时间也有所不同。

由表5 可知,Bicubic 算法最快,因为Bicubic 只有插值操作,而SRGAN、ESRGAN、PESRGAN 均含大量卷积层,导致超分辨率重建速度较慢。其中SRGAN最慢,而PESRGAN 在ESRGAN 的基础上引入更深的网络,故速度略慢于ESRGAN。综合以上实验,PESRGAN 算法在没有损失过多速度的同时,明显提高了超分辨率图像重建的PSNR、SSIM和PI指标,验证了PESRGAN 算法的有效性。

使用Bicubic、SRGAN、ESRGAN、PESRGAN 算法对经典图像Set5-baby、Set14-comic、DIV2K-0801进行测试,如图5 所示,其中HR 为高分辨率原图,LR为HR 通过区域插值得到的低分辨率图像。

Table 5 Average running time of algorithms in different data sets表5 各算法在不同数据集的平均运行时间 s

Fig.5 Comparison of HR,LR,Bicubic,SRGAN,ESRGAN and PESRGAN algorithms for super-resolution reconstruction图5 HR、LR、Bicubic、SRGAN、ESRGAN、PESRGAN 算法超分辨率重建对比

实验发现经过Bicubic 插值重建的方法得到的图像过于模糊,SRGAN 得到的图像相对Bicubic 较清晰,ESRGAN 算法虽然可以得到非常清晰的图像,但伪细节较多,而PESRGAN 产生的图像不仅清晰,伪细节也较少,更符合人眼的舒适度,说明PESRGAN算法在超分辨率重建方面取得优秀效果。

4 结论

本文提出了PESRGAN 算法,用于实现超分辨率重建四倍下采样图像,该方法通过理论分析对抗式生成网络的学习和训练过程,并在SRGAN 和ESRGAN算法的基础上对其使用的激活函数、基础网络和特征损失进行改进:使用LeakyReLU 和Swish 激活函数,引入1×1 的卷积层并加深RRDB 结构以改进生成器网络的基础网络,在生成器网络使用双层特征损失,并引入渗透指数PI作为损失权重的改进算法。最终实验在经典数据集Set5、Set14、BSDS100、Urban100、DIV2K 和Flickr2K 上进行验证,PESRGAN的平均PSNR达到25.4 dB,平均SSIM达到0.73,平均PI达到1.15。结果表明了相对于Bicubic、SRGAN和ESRGAN 算法,重建四倍下采样图像后的高分辨率图像在客观评价参数上均有优势,且在清晰度、人眼舒适度等主观视觉评价有很大提升,证明了所设计的PESRGAN 算法具有更好的超分辨率重建效果。

猜你喜欢

高分辨率分辨率卷积
基于全卷积神经网络的猪背膘厚快速准确测定
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
探讨高分辨率CT在肺部小结节诊断中的应用价值
好画质不局限于分辨率 探究爱普生4K PRO-UHD的真面目
基于异常区域感知的多时相高分辨率遥感图像配准
关于为“一带一路”提供高分辨率遥感星座的设想
ARM发布显示控制器新品重点强化对分辨率的支持
从600dpi到9600dpi