基于条件Wassertein生成对抗网络的图像生成

2021-07-02 00:36郭茂祖杨倩楠赵玲玲
计算机应用 2021年5期
关键词:梯度卷积损失

郭茂祖,杨倩楠,赵玲玲

(1.北京建筑大学电气与信息工程学院,北京 100044;2.建筑大数据智能处理方法研究北京市重点实验室(北京建筑大学),北京 100044;3.哈尔滨工业大学计算机科学与技术学院,哈尔滨 150001)

(*通信作者电子邮箱zhaoll@hit.edu.cn)

0 引言

近年来,图像生成在现实中有着广泛的应用,受到了深度学习领域的高度重视。图像处理、计算机视觉中的很多问题都涉及根据给定目标图像生成对应图像,很多计算机视觉领域的热点问题本质上也都可以归为图像生成,比如医疗图像生成[1]、面部妆容迁移[2]、虚拟换衣[3]等。图像生成的相关研究,对于推动计算机视觉领域发展有着重要意义;同时,图像生成相关应用的研发也极具商业价值。当前图像生成研究[4-5]可以分为有监督学习和无监督学习两类,其中,监督学习方法一般指输入标签后输出标签对应图像,无监督学习方法由于缺少一一对应的图像数据而具有更高的难度。

生成对抗网络(Generative Adversarial Network,GAN)是由Goodfellow 等[6]在2014 年提出的一种生成式模型,其对抗思想来源于博弈论,引到生成对抗网络中,形成生成器和判别器为博弈双方。由于GAN 独特的对抗思想使得其在众多生成模型中脱颖而出,GAN 目前被广泛应用于计算机视觉、机器学习、语音处理等领域,可以生成数字的图像、给黑白图像上色、从低分辨率图像生成高分辨率图像等。同时,GAN 还被用于语音处理[7]等领域研究。

原始GAN[8-9]存在模型难收敛、难训练还有模型过于自由不可控的问题。针对这些问题,Gauthier[10]提出条件生成对抗网络(Conditional Generative Adversarial Network,CGAN),通过输入的约束条件明确控制生成图像的一些方面;缺点在于其模型训练不稳定、生成图片质量不高,并且对数据集的要求比较高,需要有标签数据。Gulrajani 等[11]为解决原始GAN 训练困难,提出Wassertein 生成对抗网络(Wassertein Generative Adversarial Network,WGAN),WGAN 训练更加稳定,理论上解决了模式崩溃和梯度消失/爆炸问题。

生成对抗网络在图像生成领域的应用主要分为有监督模型和无监督模型两个方面。Isola 等[12]提出有监督模型pix2pix,此模型以条件生成对抗网络为基础,采用端到端的架构,其输入是原域图像x,输出是生成后的目标域图像G(x),原域图像和真/伪目标域图像分别结合后作为鉴别器的输入,鉴别器输出分类结果并和生成器产生对抗。Zhu 等[4]提出无监督模型CycleGAN(Cycle Generative Adversarial Network),此模型可以在非成对数据集情况下让两个域的图像相互转化,并且设计出循环一致性来代替之前的重建损失,CycleGAN 的缺点是生成图像质量较低,分辨率不高。

CGAN有效约束了GAN过于自由的问题,能够生成具有相关特定条件的图像,结合WGAN 的优点,能够有效改善CGAN模型训练不稳定等缺点。本文以CGAN思想为基础结合WGAN优点提出了条件Wassertein 生成对抗网络模型(Conditional-Wassertein Generative Adversarial Network,C-WGAN)。C-WGAN不仅能够明确控制生成图像的细节方面,还能规避梯度消失、模式崩溃、模型过于自由不可控等问题。

1 相关工作

1.1 生成对抗网络

生成对抗网络(GAN)包含了生成模型(Generative Model,G)和判别模型(Discriminative Model,D)两个部分,GAN 的结构如图1 所示。生成器产生样本和真实样本共同输入判别器,判别器需要将真实样本和虚假样本准确分辨出来。在两个模型对抗过程中,生成样本会更加真实,同时,判别器的分辨能力会得到提升,最终,生成器和判别器会达到纳什均衡[13]。GAN 产生的所有样本都可以与原始样本属于一个类别,其中,生成器和判别器都可以是非线性的映射函数。通常,生成器和判别器用深层神经网络来实现。GAN 的目标函数如式(1)所示:

图1 生成对抗网络结构示意图Fig.1 Schematic diagram of GAN structure

在目标函数中,D(x)的值越大,D(G(z))的值越小,最终达到纳什平衡。生成模型需要G(z)更接近于真实样本x,使得D(G(z))更大,这时,目标函数的值更小。判别模型需要能够很好地分辨出是真实样本还是生成样本,使得D(x)的值变小,D(G(z))也会变小。这时,目标函数的值更大。

传统GAN 损失函数有一些不足的地方会导致生成对抗网络训练十分困难,比如会造成以下的问题:1)模式崩塌,即生成样本多样性不足;2)模型不稳定,收敛难。

1.2 条件生成对抗网络原理

CGAN 是在GAN 的基础上加入约束条件扩展为条件模型。通过在附加信息上对模型进行调节,可以指导样本的生成。简单的条件生成对抗网络的结构如图2 所示。若条件y是标签,则CGAN 可以生成条件生成对抗网络的目标函数是带有条件概率的二人极大极小博弈,数学公式如式(2):

图2 条件生成网络的结构示意图Fig.2 Schematic diagram of CGAN structure

在条件生成网络的目标函数中,生成模型得到输入样本后,要输出符合条件y的样本G(z|y);判别模型得到真实样本x和约束条件y,判断出在条件y下是真实样本的概率。生成模型必须要生成和标签匹配的样本,而判别模型需要完成判断样本是否为真实样本,同时,还要判断样本是否满足约束条件。所以在训练完成之后,可以通过标签和噪声来使生成模型生成指定的数据样本。从CGAN 的损失函数可以得出,CGAN 仅仅为了生成指定的图像而增加了额外约束,并没有解决模型训练不稳定的问题。

2 基于C-WGAN的图像生成

本文综合条件生成对抗网络和Wassertein 生成对抗网络特点,提出条件Wassertein 生成对抗网络(C-WGAN)模型。将约束条件加入网络中生成模型用来生成满足约束条件的样本,并将判别器最后一层去掉sigmoid 激活函数,生成器和判别器的损失函数不取log值。使用Wassertein距离作为新网络结构的损失函数。

2.1 Wassertein生成对抗网络

原始GAN 存在以下两点问题:1)等价优化的距离衡量不合理;2)生成器随机初始化后的生成分布很难与真实分布有不可忽略的重叠。原始GAN 训练出现梯度消失和模式崩溃主要原因是用JS散度(Jensen-Shannon divergence)来衡量两个分布之间的区别。这些问题在CGAN 中并没有改进,针对这些问题,本文提出采用Wassertein 距离作为新网络的距离衡量方式,Wassertein距离相对KL散度(Kullback-Leibler divergence)和JS散度优势在于Wassertein距离是平滑的,理论上可以解决梯度消失/爆炸的问题,并且,Wassertein 距离在两个分布没有重叠或者重叠部分可以忽略的情况下仍能很好地度量两个分布之间的距离。

Wassertein 距离又叫Earth-Mover 距离(EM 距离),用于衡量两个分布之间的距离,定义为:

其中Π(P1,P2)是P1相和P2分布组合起来的所有可能的联合分布的集合。Wassertein 距离是在所有可能的联合分布中对期望值取到下界

综上C-WGAN 最终的目标函数是L=其中,系数λ使得C-WGAN中判别器梯度趋向于表示计算可微函数的梯度。

2.2 条件Wassertein生成对抗网络

条件Wassertein 生成对抗网络生成器采用U-net 结构。在生成器中,使用可分卷积,同时,卷积层作为编码器,反卷积层作为解码器。在编码器部分,每个节点到下个节点经过卷积层、归一化层和LReLU(Leaky-Rectified Linear Unit)激活层;解码器部分,在每个卷积层之前将输入和对应解码器镜像层进行了拼接,每个节点到下个节点经过反卷积层、批归一化层和ReLU(Rectified Linear Unit)激活层。在编码器-解码器部分引入skip-connect 技巧,即每一层反卷积层输入都是前一层输出加上与该层对称卷积层的输出,这样保证编码器信息在解码器时不断被重新记忆,使得生成图像尽可能多保留原图像信息。C-WGAN生成器结构示意图如图3所示。

图3 C-WGAN生成器结构示意图Fig.3 Schematic diagram of C-WGAN generator structure

C-WGAN 判别器采用卷积网络,其中真实样本、生成样本和输入样本同时作为判别模型的输入。将三种图像拼接后,作为输入传入判别模型。输入先经过卷积层、LReLU激活层,再经过3个包含卷积层、批归一化层、LReLU激活层的节点,然后再经过卷积层、全连接层得出结果。其中,最后一层去掉sigmoid激活函数。C-WGAN的判别模型引入patchGAN的思想,目的是将一张样本通过多层卷积层之后,最终输出一个较小矩阵。

根据生成模型和判别模型的特点,各层激活函数使用如下策略。

1)生成器编码器每一层都使用LReLU 作为激活函数,解码器每一层使用ReLU 作为激活函数。最后一层使用tanh函数。

2)判别器的每一层使用LReLU 作为激活函数,最后一层使用tanh函数。

在生成器和判别器的输出层使用tanh会使梯度变化得更快,训练过程中收敛速度更快。LReLU 会缓解一些ReLU 导致梯度为0 的问题。因此本文采用LReLU 作为激活函数,最后一层使用tanh函数的策略来提高收敛速度,避免ReLU中出现的网络中个别神经元永远不会被激活的问题。生成器的学习率通常较小,所以可以在编码层选择使用ReLU 加快训练速度。判别器和解码器的所有层选择LReLU。

为了防止训练时梯度消失和过拟合的问题,生成器和判别器每一层都用Batchnorm[14-15]进行批归一化处理。Batchnorm 在训练过程中的主要目的是使得每一层神经网络的输入保持相同分布,并且能提升训练速度和加快模型的收敛,同时增强分类效果。

C-WGAN 在CGAN 思想基础上对生成器和判别器增加条件变量约束模型,能够生成高质量指定目标图像,在整体网络结构设计下,加快模型收敛,有效解决原始GAN 中出现梯度消失/爆炸和模式崩溃问题。

2.3 C-WGAN模型训练

传统的WGAN 在训练时为了满足Lipschitz 限制条件,采用权重修剪(weight clipping)的方式将参数单独限制到[-a,a]内,在最优策略下,参数往往会走极端,这不仅会减慢训练速度,当修剪范围逼近于极限时,还可能会导致梯度爆炸。因此,为了避免权重修剪方法给模型训练可能带来的不良后果,本文采用梯度惩罚的方法。梯度惩罚是在训练目标上加强Lipschitz 限制条件:当且仅当一个可微函数梯度的正则项小于等于1时,它才满足1-Lipschitz限制条件。梯度惩罚能够显著提高训练速度,解决原始WGAN 收敛缓慢的问题。梯度惩罚的选取并不是在全网络下,仅仅是在真假分布之间抽样处理。模型对每个样本独立施加梯度惩罚,训练时采取判别器训练5次,生成器训练1次的方法。

3 实验分析与结果

3.1 数据集描述

本文利用谷歌地图上抓取的卫星图片建成Google Maps数据集,在此基础上本文针对图像生成精度和网络收敛速度问题进行了实验。Google Maps 数据集可以较为清晰地展示出某一块区域的地块分布情况,对进一步研究相似地块建筑物排布生成以及相关地块建筑容积率、日照时间等特征具有指导意义。Google Maps 数据集共有1 096张训练样本和1 098张测试样本,样本由大小为256×256 像素的图像成对构成。图4(a)为抓取的某一区域的卫星图,是输入样本。图4(b)为对应区域电子地图,是需要生成的目标样本。

图4 实验数据集示意图Fig.4 Schematic diagram of experimental dataset

3.2 实验设置

本文将从两个方面对模型提升效果进行验证:1)原始CGAN 进行模型训练和测试;2)分析原始CGAN 的生成样本后,分别给CGAN 和C-WGAN 加上L1 loss 和pix2pix 进行对比实验。

3.2.1 CGAN

本次实验环境为Intel Core i5 2.4 GHz 处理器,16 GB 运行内存,Tensorflow 平台。实验中设置优化器Adam 的学习率为0.000 2,动量为0.5。最生成器和判别器训练迭代次数与损失函数变化如图5、6 所示。图5 和图6 分别表示CGAN 判别器和生成器在Google Maps 数据集上损失函数随着训练次数的增加而发生变化情况。

图5 CGAN判别器损失函数变化情况Fig.5 CGAN discriminator loss function change

图6 CGAN生成器损失函数变化情况Fig.6 CGAN generator loss function change

从图5和图6中可以看出:判别器和生成器在训练初期震荡较为平缓,随着训练次数的增加,两个网络结构相互对抗,图中呈现出震荡状态。判别器损失值是真实图片和生成图片的损失值之和,均由交叉熵计算而得。对于真实数据,在计算损失时,为了增强其泛化能力,将labels 值设为0.9;对于生成器生成样本,将labels值设为0。

结合图5、6 和表1 可以看出,CGAN 判别器和生成器后期震荡较大,但是从总体趋势上来看,判别器的loss 值在降低,生成器的loss值在升高。

表1 CGAN判别器和生成器loss值变化Tab.1 Change of loss values of CGAN discriminator and generator

3.2.2 CGAN+L1 loss和C-WGAN+L1 loss

本次实验环境为Intel Core i9-7900X CPU 3.30 GHz 处理器,64GB运行内存,NVIDIA GeForce GTX 1080Ti GPU,TensorFlow平台。

实验中设置优化器Adam 的学习率为0.000 2,动量为0.5。初始化L1 项对生成器梯度的权重为100。训练迭代次数与损失函数的变化如图7、8所示。

图7 C-WGAN判别器损失函数变化情况Fig.7 C-WGAN discriminator loss function change

从图7和图8中可以看出:判别器和生成器在训练前期震荡较大,说明前期生成器生成的样本不是很完美,判别器在前期也可以很好地区分出真实样本和生成样本。随着训练次数的增加,模型开始逐渐稳固,生成器生成样本和真实样本之间的差距逐渐减小,判别器逐渐区分不出真实样本和生成样本,图中的表现就是开始逐渐平稳。从总体趋势上来看,判别器和生成器的损失函数都是处于逐渐下降的状态。

图8 C-WGAN生成器损失函数变化情况Fig.8 C-WGAN generator loss function change

平均绝对误差(Mean Absolute Deviation,MAE)是指模型预测值f(x)和真实值y之间距离的平均值,对应于L1 范数。MAE 对于任何输入值,都有着较为稳定的梯度,不会导致梯度爆炸,具有较为稳定的解,所以考虑给模型加上L1 loss结果进行对比。

C-WGAN 的生成器加上L1loss 和CGAN 生成器加上L1 loss变化趋势如图9所示。

图9 不同网络生成器+L1的损失函数变化Fig.9 Change of loss function of different network generators+L1

如图9 所示,虚线是CGAN 的生成器+L1 损失函数变化图,实线是C-WGAN的生成器+L1损失函数变化图。从图9可以看出,在相同条件下,用C-WGAN 来训练数据集,明显要比CGAN 模型收敛得更快,能得到更小的损失值。在相同训练时间下,C-WGAN 能够训练的步数更多。此时,C-WGAN 训练完1 096 张图片最后的loss 值为0.045 46;CGAN 训练完1 096张图片得到的loss数值为0.065 65。

表2详细展示了CGAN+L1、pix2pix,C-WGAN+L1 在10 000、20 000、30 000、40 000 次训练时的用时和损失函数值。从表中对比可以看出,在相同步数下,C-WGAN+L1 能得到更好的损失函数值。在用时相同条件下,C-WGAN+L1训练完成得到的损失函数值优于CGAN+L1 和pix2pix 的损失函数值。CGAN+L1、pix2pix、C-WGAN+L1 用时12 h 后损失函数分别收敛于0.065 65、0.054 59、0.051 18。

表2 不同模型结果对比Tab.2 Comparison of results of different models

经过训练CGAN、CGAN+L1、pix2pix 和C-WGAN+L1 之后得到的模型,本文用测试数据来进行测试,得到图10 部分生成样本。

表3 展示了不同生成对抗网络算法峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)和结构相似性(Structural SIMilarity index,SSIM)的实验对比结果,其中PSNR 是通过衡量标准图像和插值结果之间的像素差异,用于对图像平均质量的评价,SSIM 是根据标准图像与实验结果间结构、亮度和对比度的相似程度,对图像视觉感知的质量评价。根据表3的实验结果得出,与CGAN、CGAN+L1、pix2pix模型相比,本文提出的C-WGAN 模型具有最高的PSNR 均值和SSIM 均值,在客观数据上本文模型得到的结果优于其他模型。

表3 不同模型的PSNR和SSIM对比Tab.3 Comparison of PSNR and SSIM of different models

从图10(c)CGAN生成样本中可以看出,生成样本与目标样本差异过大,路网、建筑物排布以及地块分布都出现大范围生成错误现象,并且生成样本中会存在花纹,很大程度上不能达到预期生成要求;图10(d)展示出CGAN+L1 loss 后输出的生成样本,在输入样本中只存在路网和房屋等简单结构的情况下,大致上能正确显示出路网和地块边缘分布,能生成较好的样本。然而在面对复杂地块分布时,会存在色彩生成显示错误或色彩分布不均、不同地块之间边缘模糊、区域识别不健全的问题;图10(e)是模型pix2pix 生成样本,清晰度得到提升,但有时仍会出现生成样本与目标样本颜色不匹配、地形边缘显示不清晰;图10(f)是C-WGAN+L1 生成样本,从图中对比可以看出,清晰度得到很大提升,路网、房屋和地块边缘分布显示情况有所改善,针对上述提到的问题,此模型生成样本在各方面有很大进步。

图10 不同模型生成样本对比Fig.10 Comparison of samples generated by different models

4 结语

本文针对提升生成图像精度和加快网络收敛速度的问题搭建C-WGAN 模型,此模型可以根据输入样本和目标样本一对一产生生成样本输出。在CGAN 模型思想的基础上进行进一步的网络设计,同时结合WGAN 模型思想的优点,解决原始CGAN 训练中出现梯度消失和模式崩溃的问题,并在C-WGAN 模型中加入L1 loss,使得整个网络模型有较为稳定的解。在Google Maps 数据集进行测试和验证,由实验结果可以看出自动生成的图像精度有明显改善,可较为清晰地展示出某一区域的地块分布情况。此外,C-WGAN 模型在网络结构相同的情况下比CGAN 模型和pix2pix 模型收敛速度更快,这为提高整体任务的计算效率提供基础。在未来工作中将利用C-WGAN 模型在自动生成建筑物排布方面进行进一步研究和应用,可利用训练后的C-WGAN 模型,实现对相似地块建筑物排布的自动生成,同时提供相关地块建筑容积率、日照时间等参数的参考值。

猜你喜欢
梯度卷积损失
洪涝造成孟加拉损失25.4万吨大米
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
两败俱伤
一个具梯度项的p-Laplace 方程弱解的存在性
内容、形式与表达——有梯度的语言教学策略研究
航磁梯度数据实测与计算对比研究
组合常见模型梯度设置问题