李 锋, 邵 健
(东华大学 计算机科学与技术学院, 上海 201620)
纺织业作为中国的支柱性产业,在国民经济中占有重要的地位,并且具有很强的国际性优势[1]。 目前纺织品的艺术设计作为纺织品行业的一个重要竞争因素,时尚创新逐渐成为新的市场要求。
图像的自动生成一直是计算机视觉领域的一个重点研究方向[2]。如今,深度学习等技术的发展带来了具有重要研究意义的图像生成技术。生成对抗网络(Generative Adversarial Nets, GAN)算法是近几年图像处理领域比较热门的技术,GAN的提出给更多的领域提供了新的解决方案,已有众多研究成果如恢复残缺图像、生成逼真人脸、提升图像分辨率等;深度卷积生成对抗网络(Deep Convolutional GAN, DCGAN)作为GAN的典型衍生模型已成为近几年来备受关注的热点技术。然而在DCGAN生成图片时会产生类似棋盘格的干扰信息,这一问题普遍存在于众多模型中。在深度学习中,常常会使用从低分辨率向高分辨率逐步转换的方式来生成图片,在DCGAN中亦是如此,具体表现为生成器中的反卷积操作。由于反卷积操作在多数情况下会导致不均匀的像素重叠,使得生成图像中的部分区域产生类似棋盘格的色彩信息,即棋盘效应。
针对该现象本文使用缩放卷积即上采样与正向卷积的方式代替DCGAN中的反卷积操作,对DCGAN进行改进。将该改进DCGAN模型应用于织物图案设计,实现了由人工智能模拟人类思维过程,完成创造性任务。
由Goodfellow等人于2014年提出的生成对抗网络(GAN)在深度学习领域迅速掀起热潮,成为近几年来备受关注的热点技术。GAN在图像合成、超分辨率、 风格迁移以及其他图像生成任务上表现出突出的性能。GAN包括一个生成器G(Generator)和一个判别器D(Discriminator),其结构如图1所示。其中,生成器G通过输入噪声z去学习真实样本的分布,并尝试生成判别器D无法将其与真实样本区分开的样本,而判别器D的目标是尽力区分开这两种样本,可以将其视为二分类器,用0和1分别代表伪样本和真实样本[3]。随着生成器G与判别器D的持续迭代更新,两者的性能都会此起彼伏的增长。通过不断的博弈,直到生成器G生成的样本可以以假乱真欺骗判别器D时,判别器D的判别准确率约为50%, 模型处于纳什均衡,表示生成器G成功的生成了符合真实样本分布的样本。
图1 GAN结构图
GAN中判别器D的损失值来自两种情况:一是将真实样本判别为生成器G生成的样本,二是将生成器G生成的样本判别为真实样本[4]。由于生成器G和判别器D是零和博弈的过程,所以其损失值即为判别器D损失值的负值,可由式(1)表示:
(1)
其中,D(x)表示判别器D判定输入样本为真实样本的概率,pdata(x)和pz(z)分别表示真实样本分布和生成样本分布。根据式(1),GAN的优化目标函数表示为式(2):
Ex~pdata(x)[logD(x)]+Ez~pz(z)[log(1-D(G(z)))].
(2)
判别器D希望判别输入的真实样本的值趋于1, 同时对生成样本的判别值尽可能的趋于0,即让D(x)无限趋近于1,D(G(z))无限趋近于0。相反。生成器G的目标是学习到真实样本的分布pdata(x)并成功欺骗判别器D,即使得D(G(z))尽可能的趋近于1。
在实际训练的过程中,训练初期生成器G几乎不可能生成出与真实样本相似的图像,即无法很好的模拟真实样本的分布,判别器D就会很轻易的分辨出样本的真假,导致判别器D很快收敛。同时,反馈的损失值也非常小,导致生成器G在迭代更新的过程中产生较小的梯度,更新梯度便会下降甚至停止,导致生成器G极早的停止学习。因此,在训练生成器G时,将其原损失中的log(1-D(G(z)))替换为logG(z),这使得生成器G的弱梯度引起的模型发散问题得以解决。
上述零和博弈中,生成器G与判别器D的损失值之和严格等于0,即饱和式零和博弈,同时,还有一种可以解决因为生成器G梯度消失导致GAN无法收敛的问题的方式,称作非饱和式零和博弈[5],其定义如式(3)。 由于式(2)是整体围绕判别器D而定义的损失,导致判别器D一旦收敛就无法更新生成器G。而式(3)通过重新定义生成器G的损失来避免生成器严重约束于判别器。
(3)
针对原始GAN模型难以收敛、生成样本缺乏多样性以及生成样本质量较差等问题,Alec Radford等人对原始GAN模型进行改进,于2015年提出了深度卷积生成对抗网络(DCGAN)。 相对于原始GAN模型,DCGAN增加了更多的隐藏层和参数。DCGAN与GAN理论具有一致的标准结构,主要区别在于DCGAN将卷积神经网络与GAN结合,通过两个卷积神经网络实现生成器G和判别器D。具体来说,DCGAN存在如下的改变:
(1)取消池化层,取而代之使用跨步卷积,在生成器G中使用反卷积进行上采样;
(2)取消全连接层,使用卷积层连接生成器G和判别器D的输入输出;
(3)生成器G和判别器D中均使用批量归一化(Batch Normalization, BN),可以有效缓解初始化不理想的问题;
(4)生成器G中除了输出层使用Tanh,其他各层使用ReLU作为激活函数。该改进方式可以有效防止梯度消失,同时加速网络收敛。激活函数ReLU与Tanh表达式分别如式(4)和式(5):
(4)
(5)
(5)判别器D使用LeakyReLU作为激活函数,其表达式(6)如下:
(6)
在DCGAN的判别器D中,通过使用卷积神经网络模型对输入样本进行不断的卷积与下采样运算,最后完成真假样本的分类。而在生成器G中,则使用反卷积来完成上采样运算。反卷积的具体运算过程如图2所示。首先填充输入图像,然后进行卷积运算,裁剪后的卷积运算结果即为反卷积的运算结果。
图2 反卷积运算
反卷积操作的一个弊端是会造成不均匀的像素重叠,导致生成图像产生明显的棋盘效应[6],在卷积核大小非步长的整数倍时尤为突出。这种重叠的样式体现在两个维度上,两个坐标方向上不均匀的重叠相乘产生了类似棋盘格的样式特性。在一维情况下, 一个size=3,stride=2的反卷积操作所展示的棋盘效应如图3所示。在实际生成图像中棋盘效应的表现如图4所示,其为使用未改进的DCGAN循环训练5000次生成的格子织物图案。
图3 反卷积重叠
图4 棋盘效应
图5 双线性插值
图5中,P为理论点,Q11,Q12,Q21,Q22为P点最近的4个点,将在图像A中找到该理论点最近的4个点。其计算方法为首先通过线性插值求得点R1与R2,再基于点R1与点R2线性插值,求得点P, 式(7)、式(8)和式(9):
(7)
(8)
(9)
f(x,y)即为通过双线性插值计算后图像B中点(x,y)的值。
同时,在训练网络的过程中,生成器G的损失值一直处于递增的趋势。该现象是由于在训练过程中判别器D达到过拟合,其损失值在初期迅速的向0逼近,以致于G无法继续学习。本文通过在判别器D的输入中添加高斯噪声来抑制判别器D达到过拟合状态,提高生成器G的学习能力。
本文基于DCGAN改进后的模型结构,如图6所示。将原模型生成器G中3个反卷积层替换为3个缩放卷积层,即上采样和正向卷积操作。判别器D首先对输入样本添加高斯噪声,经过多层卷积运算后映射1个标量结果。
(10)
为模型的整体损失值,如式(11)所示:
(11)
12)
(13)
(a) 生成器 (b) 判别器
改进DCGAN的网络结构如图6所示,生成器G和判别器D的网络参数分别见表1、表2。其中,m@k×k×n表示当前层的卷积核设置为k×k×n, 并运算出m个特征图。
表1 生成器G网络参数
表2 判别器D网络参数
本文从互联网中收集了2 420张格子图案的织物图像作为原始数据集,并对这些图像添加随机噪声,翻转变换以及亮度更改等处理,将数据集样本数量扩充至8 000,所有样本数据均已进行中心裁剪和归一化等预处理操作,样本图像分辨率为64×64。数据集示例如图7所示。
图7 格子织物图案样本示例图
本文中实验的硬件环境为Intel(R) Xeon(R) Bronze3204 CPU,16G RAM和NVIDIA GeForce RTX 2080Ti 11G显卡; 软件环境为TensorFlow 1.14及Python3.5。实验中采用小批量随机梯度下降的方式进行训练,以提升模型训练的速度和准确性。设置卷积核大小5×5,步长为2,学习速率0.001,共5 000次循环,单次循环覆盖所有数据集样本。本文共进行3组实验, 分别为原始DCGAN模型、缩放卷积中采用最近邻插值的改进DCGAN模型NN-DCGAN以及缩放卷积中采用双线性插值的改进DCGAN模型Bilinear-DCGAN。在相同实验环境下分别进行训练,3组实验在不同训练阶段的生成图像效果如图8所示。
在评价模型效果和图像质量时,主要分为主观评估和客观评估两种方式。针对主观视觉方面,通过实验结果可以发现,随着网络的不断迭代更新,生成图案质量有明显的提升。从epoch=5k的生成图像可以发现Bilinear-DCGAN和NN-DCGAN都比原始DCGAN生成的样本纹理更加清晰,具有更少的噪声,可以明显的抑制棋盘效应。
为了更加有效的验证模型效果,本文对对比实验中的不同模型进行了客观评估和分析。模型的训练损失值一方面表征了模型的收敛效果,同时也体现了生成图像和真实图像的相似度,即生成图像的真实性。 对比实验中训练总损失变化曲线如图9所示。
图8 不同模型实验效果
图9 不同模型的损失曲线
同时,本文使用Inception Score(IS)和Fréchet Inception Distance(FID)两种客观评估方法对模型生成图像的真实性和多样性进行评估,IS值越大代表生成样本质量越高,FID值越小代表模型效果越好。最终评估结果见表3。
表3 模型评估结果
从图9和表3的评估结果可以得出,相对原始DCGAN而言,Bilinear-DCGAN和NN-DCGAN在训练过程以及生成图像质量方面都具有更佳的效果,证明该改进方法对抑制棋盘效应并提高图像质量起到了积极作用。同时也发现在本文针对织物图案的实验中NN-DCGAN具有最佳的实验效果和评估结果,即在缩放卷积的上采样方式中,使用最近邻插值上采样相比使用双线性插值具有更好的效果。
图10为原始DCGAN经过5 000次迭代训练后生成的织物图案,图案比较模糊,存在棋盘效应。图11为通过本文所用NN-DCGAN模型生成的织物图案,在视觉上比较平滑,图像质量相比原始DCGAN有所提高。本文不能证明以上两种方法是上采样的最终解决方案,但其确实对修复棋盘效应起到一定的作用。
图10 DCGAN生成样本图
图11 NN-DCGAN生成样本图
本文改进了DCGAN的模型结构,使用缩放卷积代替原模型中的反卷积操作。实验结果表明,该算法可有效解决反卷积操作带来的棋盘效应问题, 同时保证了生成图像的质量。此外,该模型在格子织物图案样本集上的实验结果显示,生成对抗网络可用于织物图案的生成工作,模拟设计师完成创造性任务,对织物图案的快速创新设计具有重要的应用价值和意义。