陈云翔,王 巍,宁 娟,陈怡丹,赵永新,周庆华
(长沙理工大学物理与电子科学学院,湖南 长沙 410114)
生成模型是机器学习和计算机视觉算法的重要组成部分。它被用于估计高维信号的底层统计结构以及生成包括高质量的图像、视频和音频等在内的各种人工数据。由Goodfellow等[1]首先提出的生成式对抗网络(Generative Adversarial Network, GAN)引起了广泛关注。自2014年以来,GAN在理论和应用上都取得了很大的进展,已有大量后续论文发表。GAN算法被用于文本图像合成[2]、风格转移[3-5]和纹理合成[6]、图像到图像翻译[7]、视频生成与预测[8]和遥感图像处理[9-11]等领域。Radford等[12]2015年提出的深度卷积生成式对抗网络(Deep Convolutional Generative Adversarial Networks, DCGAN)对传统的GAN进行了改进,主要体现在:1)使用卷积网络,允许生成器学习自己的空间特征,同时使判别器能够读取到更深层的图像特征;2)使用批量归一层[13](Batch Normalization, BN)将每层的输入都转换为期望为0、方差为1的数据;3)使用全局池化层代替全连接层;4)生成器的输出层使用tanh激活函数,其他层使用ReLU;5)判别器中所有的激活函数均使用LeakyReLU。尽管DCGAN在图像生成方面有了开创性的突破,但其仍存在训练时梯度消失、真假数据差异过大时无法正常训练、很难适应不同数据集等问题。
Mirza等[14]提出了条件对抗网(Conditional Generative Adversarial Network, CGAN),使用额外标签信息提升图像的质量并在一定程度上控制图像的外观。Mao等[15]提出使用最小二乘函数的LSGAN来代替交叉熵作为判别器的损失函数,避免梯度消失从而提高生成图像的质量。Arjovsky等[16]提出使用Wasserstein距离衡量图像的分布差异,解决了GAN训练困难和不稳定、模式崩坏等问题。为了使判别器满足Lipschitz连续条件,WGAN (Wasserstein GAN)中使用了梯度裁剪的方式。然而梯度裁剪可能会造成参数走向极端,因此Gulrajani等[17]提出了WGAN-GP (WGAN with Gradient Penalty)使用梯度惩罚来代替梯度裁剪,在保证判别器满足Lipschitz连续条件的同时,避免了参数走向极端的情况。即便如此,使用WGAN-GP生成的图像仍会出现质量不高、细节模糊等问题。
为了进一步提升生成图片的细节质量,本文在WGAN-GP算法的基础上结合图像感知损失(Perceptual-loss)和风格损失(Style-loss),提出PSWGAN-GP算法,通过训练,对生成图像的细节进行提升和优化,并在CelebA[18]和FAMOUSFACE[19]数据集上进行实验。本文的主要工作有:
1)PSWGAN-GP方法。在WGAN-GP原有的判别器的损失项后加入风格损失和感知损失并使用原有WGAN-GP算法的梯度惩罚控制梯度值,实现图像细节的提升。
2)验证评估PSWGAN-GP算法。在同等参数和实验条件下将其与DCGAN、WGAN以及WGAN-GP算法对比,生成图像的FID[20]分数优于对照算法,且IS[21]分数比较具有竞争力,表明其生成的图像细节质量较好。
生成对抗网络GAN是通过生成器模型G(Generator Model)和判别器模型D(Discriminator Model)在训练过程中互相对抗博弈,使得生成器生成的样本逐渐逼近真实样本在样本空间中的分布。生成器学习真实数据的分布特征,并生成与真实数据相似的数据样本;判别器是一个二分类模型,用于判断输入是真实数据还是虚假数据。其目标函数为:
Ez~Pθ(z)[log(1-D(G(z)))]
(1)
其中,Pdata(x)表示真实样本的概率分布,Pθ(z)表示虚假样本的概率分布,E表示期望值。为了使判别器更难区分出自己生成的样本,生成器需要不断提升自身捕捉真实样本特征的能力,而判别器则需要不断提升自身区分真实样本和虚假样本的能力,通过生成器和判别器的交替训练,最终达到纳什均衡。
DCGAN的提出使GAN模型成功应用在图像领域,生成器通过产生随机噪声并使用多个反卷积层来生成虚假图像。判别器通过多个卷积层对输入的图像进行二分类,判断输入的图像来自真实图像集还是生成的虚假图像。
Arjovsky等提出了使用Wasserstein距离衡量分布差异来改进GAN。原始GAN中采用JS散度来衡量生成数据和真实数据间的差异,但当两者的分布完全不重叠时,JS散度的值将为一个常数,反映不了分布距离,也提供不了训练所需的梯度。其判别器损失函数为:
L(D)=Ez~P(z)[fω(G(z))]-Ex~P(x)[fω(x)]
(2)
其中fω是一个含参数ω且最后一层不是非线性激活层的判别器网络。限制网络fω中的所有参数ω在[-c,c]的范围内,c为一个常数,比如c为0.01时,参数ω将被限制在[-0.01,0.01],小于-0.01则取-0.01,大于0.01则取0.01。此时关于输入样本x的导数∂fω/∂x也不会超过某个范围,即满足Lipschitz连续条件。然而WGAN使用的梯度裁剪(Gradient Clipping)存在2个问题:
1)判别器希望尽可能扩大真假样本的分数差,然而梯度裁剪独立地限制每一个网络参数的取值范围,在这种情况下,可预想的最优策略就是尽可能让所有参数走向极端,即要么取最大值,要么取最小值。
2)梯度裁剪会导致梯度消失或梯度爆炸。
Gulrajani等提出的WGAN-GP通过梯度惩罚来控制梯度,解决了上述2个问题,通过设置额外的损失项来实现梯度与Lipschitz条件之间的联系,其判别器损失函数为:
(3)
(4)
自深度学习进入人们的视野以来,越来越多的网络模型被用于图像分类。1994年诞生了最早的LeNet,之后又出现了AlexNet[22]等。VGG-Net是牛津大学和Google Deep Mind公司研究人员研发的深层卷积神经网络[23]。VGG-Net采用连续几个3×3的卷积核堆叠来代替AlexNet中较大的卷积核,在获取相同的感受野的同时提升了网络的深度。本文选用VGG-16网络来提取深层特征。
Johnson等[24]提出的感知损失Perceptual-loss和风格损失Style-loss在图像风格转换领域取得了成功,将卷积神经网络提取出的图像深层特征作为目标函数的一部分,通过比较2幅图片的深层特征,使得待生成的图片与真实图片在语义上相对于像素级别的损失函数更加相似。感知损失和风格损失被应用于图像孔洞修复[25]和照片恢复[26]。本文中定义的感知损失使用VGG-16网络的第3、第6与第10层(即前3个最大池化层)提取图像的深层特征,其公式为:
(5)
风格损失首先计算深度特征的格拉姆矩阵(Gram Matrix)[27]来衡量深度特征中每个元素的自相关程度,再计算其L1距离。与上述感知损失相同,本文中所使用的风格损失也是用VGG网络的前3个池化层提取图像的深层特征,其定义为:
(6)
本文所提出的PSWGAN-GP着重在于提升生成图像的细节质量,通过加入风格损失和感知损失提升生成图像和真实图像的相似度,同时保证生成图像在背景、轮廓等细节上保持一致。在训练过程中,判别器的参数较少,且结构较为简单,易于估计感知损失和风格损失,具体的PSWGAN-GP结构如图1所示。判别器接收来自真实数据集的图像X和生成器由随机噪声生成的虚假图像G(z),并与生成器进行对抗训练,生成器接收随机噪声并学习真实图像的分布特征,生成虚假图像。随着训练的进行,生成器会不断优化参数提升判别器将虚假图像误判为真实图像的概率,而判别器会不断优化参数提升判断的准确度。与此同时,将真实图像和虚假图像同时输入VGG网络中并提取其前3层最大池化层得到的图像深层特征,计算风格损失和感知损失并对比虚假图像和真实图像的深层特征,通过训练减少两者的差异。
图1 PSWGAN-GP流程图
在判别数据真伪时,由于判别器会不断提高鉴别能力,其损失将会减小,判别器希望真假图像的风格损失和感知损失越大越好,因此风格损失和感知损失使用负数超参数确保当两者数值较大时判别器损失减小。PSWGAN-GP判别器的损失函数定义为:
Ltotal=Lorigin+α1Lperceptual+α2Lstyle
(7)
式中Lorigin为WGAN-GP原本的损失函数。α1和α2分别为2.2节提到的感知损失和风格损失的超参数。由感知损失和风格损失的定义可以看出,风格损失经过了自相关计算以及多次归一化,在将输入图像数据归一化后的情况下,两者的结果数量级差距较大,需要通过超参数来将结果转换至与原WGAN-GP损失一致的数量级,以免训练时出现梯度爆炸的现象。通过超参搜索,确定两者的超参数α1为-0.05,α2为-120。
2.3.1 生成器结构
本文所提PSWGAN-GP网络的生成器结构包含5个神经网络层,将随机噪声输入后通过堆叠的反卷积层(TransposeConv)输出生成图像。每个反卷积层通过多个5×5的反卷积核来改变输入的维度,如图2(a)所示,反卷积层1将输入的噪声维度从256降低到128,后续的反卷积层2、反卷积层3、反卷积层4每层将维度减少一半,最后一层的反卷积层5输入维度为3,对应图像的RGB三通道。所有反卷积层均使用ReLU作为激活函数,且卷积步长均为2×2。将该生成器应用到不同尺寸图像的数据集中时,只需改变输入噪声的尺寸即可,例如当输入噪声尺寸为2×2时,通过生成器产生的虚假图像尺寸为64×64,而当输入噪声尺寸为4×4时,产生的虚假图像尺寸为128×128。
2.3.2 判别器结构
PSWGAN-GP网络的判别器结构如图2(b)所示,首先输入3通道的图像,经过卷积层提取图像特征,为了使卷积层能够获得更大的感受野,不使用池化层。所有卷积层的步长均为2×2,且填充方式为same,图像在经过卷积层后尺寸和维度均发生了改变,例如卷积层1将图像的尺寸改变为(Horigin/s)×(Worigin/s),其中s为卷积层的步长,Horigin和Worigin为输入图像的尺寸。原图像的维度由3改变为64。后续的卷积层2、卷积层3、卷积层4每层将图像的尺寸缩小1/2,并调整其输出维度。最后通过2个全连接层将图像特征转换为64维的向量后,再经过1个输出维度为1的全连接层输出判别器对该图像的评分。判别器网络中所有层均使用LeakyReLU作为激活函数,斜率均设置为0.2。
图2 生成器和判别器网络结构
2.3.3 本文算法
在训练PSWGAN-GP时,设定生成模型和判别模型的学习率为0.00005。使用Adam[28]优化器对判别器和生成器交替进行参数优化,即每更新5次判别器后再更新1次生成器。
算法1 PSWGAN-GP算法
输入:批量大小m,判别器迭代次数ncritic,总迭代次数Epoches,Adam优化器的超参数α、β1、β2,判别器待优化参数w,生成器待优化参数θ,感知损失和风格损失超参数α1、α2。
for epoch in Epoches do
fortin range(ncritic) do
foriin range(m) do
Sample real datax~Pr, random noisez, a random
numberε~U[0,1]
//判别器损失
end for
end for
Sample a batch of random noisesz
end for
算法1总结了PSWGAN-GP的过程,首先训练判别器,对真实数据和噪声分别采样,接着计算真实图像和虚假图像的感知损失、风格损失以及Wasserstein距离,计算判别器参数的梯度并通过梯度惩罚确保其满足Lipschitz限制条件,并更新判别器参数。然后训练生成器并再次生成随机噪声、更新生成器参数,降低真假图像之间的差异,直到循环结束。
为了验证所提PSWGAN-GP算法的性能,将其与原有的WGAN-GP算法在CelebA和FAMOUSFACE数据集上进行实验。CelebA数据集是一个包含了20多万幅人脸图像的大规模数据集,每幅图有40个属性标注。FAMOUSFACE数据集同样包含了9万多张512×512的高清人脸图像,本文将其所有图像下采样至128×128进行训练。
实验配置的环境为Inter(R) Xeon(R) Gold 6134处理器,3.20 GHz, Windows Server 2012 R2系统256 GB内存,采用GPU Tesla P40,并使用基于Python编程语言的TensorFlow2.0框架进行网络模型的实现和训练。
采用IS(Inception Score)和FID(Fréchet Inception Distance)指标对本文算法进行性能评估。IS使用Google预训练的Inception Net-V3网络计算出的结果来评估输入图像的质量,其定义为:
IS(G)=exp(Ex~pg[DKL(p(y|x)‖p(y))])
(8)
式中x是生成图像的样本,p(y|x)表示图像x经过Inception计算后得到的属于类别y的概率分布。p(x)表示x在所有分类上的边缘分布。DKL表示上述2个分布的KL散度。IS越大表明生成图像的质量越高,即生成模型越好。但IS指标忽略了生成图像和真实图像的差异。
FID是评估生成对抗网络性能的常用指标,其也是通过Inception网络进行计算,不同的是其去除掉了Inception网络的输出层,将最后一层池化层作为输出层。图像经过Inception的计算后得到2048维的向量,FID通过对比真实图像和生成图像高维特征方差和均值来评估两者的差距,其定义为:
(9)
其中μx和Σx分别为真实图像的特征均值和协方差矩阵,μg和Σg分别为生成图像的特征均值和协方差矩阵。FID越小代表生成图像和真实图像的相似度越高。
本文将PSWGAN-GP与DCGAN、WGAN、WGAN-GP在2个数据集上进行比较。每种算法在每个训练集上训练5000次,训练完成后生成2000张图像并计算其IS,再从2个数据集中分别随机抽取2000张图像与生成的图像计算FID。
从表1可以看出,在分辨率为64×64的CelebA数据集中,PSWGAN-GP的IS评分不如DCGAN,但比WGAN-GP提升了一些。而FID指数为4种算法中最优,比DCGAN和WGAN分别提升了34.5%和26.7%,比原先的WGAN-GP提升了10.8%。而在分别率为128×128的FAMOUSFACE数据集中,PSWGAN-GP算法的IS和FID均为4种算法中最优,FID指数比DCGAN、WGAN和WGAN-GP分别提升了36.5%、40.3%和9.9%。这表明PSWGAN-GP算法在生成分辨率较高的图像时图像质量优于其他3种算法,而在生成分辨率较低的图像时,虽然IS评分不如DCGAN,但是仍保持着良好的竞争力且FID指数优于其他3种算法,即生成图像和真实图像更加相似。
表1 不同算法在CelebA和FAMOUSFACE数据集上的IS性能及FID性能比较
图3展示了4种算法的FID和IS指标随迭代次数的变化曲线。由图3(a)与图3(c)可以看出本文PSWGAN-GP算法的FID指标在2个数据集中与其他3种算法收敛性相当,由图3(b)与图3(d)可以看出其他3种算法的IS指标在FAMOUSFACE数据集中均比本文的PSWGAN-GP算法先达到收敛状态,而在64×64的CelebA数据集中PSWGAN-GP比其他算法先达到收敛状态。总体而言,PSWGAN-GP算法在图像分辨率较高时表现更好。
图3 不同算法在CelebA和FAMOUSFACE数据集上的收敛性分析
对比DCGAN、WGAN、WGAN-GP和本文的PSWGAN-GP在CelebA和FAMOUSFACE数据集下生成的图像,从图4可以看出,DCGAN在2个数据集中均存在生成图像模糊、细节缺失的问题,而WGAN和WGAN-GP在图像背景模糊问题上有了改善,但仍存在图像细节质量不高的问题。而本文提出的PSWGAN-GP算法在2个数据集中图像背景更加清晰,前景细节质量更好,图像所包含的噪声更少。由此可以得出,本文所提算法PSWGAN-GP具有更好的性能。
图4 CelebA和FAMOUSFACE数据集上4种算法生成的图像
本文基于WGAN-GP和感知损失、风格损失提出了一种生成式对抗神经网络PSWGAN-GP。在WGAN-GP原有损失函数的基础上,添加了感知损失和风格损失,使判别器衡量生成图像和真实图像的细节差异,同时使生成器在生成图像时更加注重图像细节从而获得判别器的高评分。在CelebA和FAMOUSFACE数据集中分别进行实验,采用IS和FID指标评估所提算法的性能并与DCGAN、WGAN和WGAN-GP进行对比,结果表明,PSWGAN-GP算法可以有效提升图像的细节质量,解决了背景模糊、图像噪声多等问题。
本文算法PSWGAN-GP在一定程度上提升了图像的细节质量,但存在训练参数较多、训练速度低于其他算法的问题,主要是因为算法需要通过VGG网络来计算风格损失和感知损失。因此,在后续的研究中将采用更合适的风格损失及感知损失计算方法,进一步提升训练速度和生成图像质量。