非常复杂的功能自然可以通过神经网络来近似 训练后,网络将能够以简单的116412维均匀随机变量作为输入,并返回遵循我们名人脸概率分布的另一个116412维随机变量作为输入 这是生成对抗网络背后的核心动机为什么要建立对抗性网络?在变换神经网络的每次训练迭代中,我们可以将名人训练集中的面孔样本与生成的面孔样本进行比较从理论上讲,我们将使用最大平均差异(MMD)方法基于样本比较真实分布与生成的分布这将产生分布匹配错误,可用于通过反向传播更新网络 这种直接方法实际上实施起来非常复杂GAN不会直接比较真实分布和生成的分布,而是解决真实样本和生成的样本之间的非歧视任务GAN具有三个主要组成部分:用于生成新数据的生成器模型,用于对生成的数据是真实面孔还是伪造进行分类的鉴别模型,以及使它们相互竞争的对抗网络生成部分负责将116412维统一随机变量(噪声)作为输入并生成假脸 生成器捕获概率P(X),其中X是输入判别部分是一个简单的分类器,用于评估和区分生成的面孔和真实的名人面孔 鉴别器捕获条件概率P(Y | X),其中X是输入,Y是标签> generative adversarial network for celebrity faces (self-created) 训练生成对抗网络训练生成网络使最终分类误差(在真实数据和生成的数据之间)最大化,而对区分网络进行训练以使误差最小化 这就是对抗网络的概念从博弈论的角度来看,当生成器生成遵循名人面孔概率分布的样本并且鉴别器以相等的概率预测伪造或非伪造就好像会抛硬币一样,就达到了平衡重要的是,两个网络在训练过程中均应学习并融合在一起 当判别网络在识别伪造品方面变得更好时,就会导致生成网络被卡住,从而发生典型情况在鉴别器训练期间,我们忽略生成器损失,而仅使用鉴别器损失,这会歧视鉴别器将真实的面部错误分类为假的或将生成的面部错误分类为真实的 发生器的权重通过反向传播进行更新 发电机的重量不会更新在生成器训练期间,我们使用生成器损耗,这会惩罚生成器,因为它无法欺骗鉴别器并生成歧视者将其分类为假的面孔 鉴别器在生成器训练期间被冻结,并且仅通过反向传播更新生成器的权重这是使用GAN合成名人面孔的魔力 收敛通常被认为是短暂的,而不是稳定的 当您一切正常时,GAN会提供令人难以置信的结果,如下所示 > GAN-synthesized App by Streamlit (source)建立和训练DCGAN模型在本节中,我们将完成为名人脸部数据集创建,编译和训练DCGAN模型所需的所有步骤 深度卷积生成对抗网络(DCGAN)是使用卷积层的GAN鉴别器鉴别器可以是任何图像分类器,甚至可以是决策树 我们改为使用具有4个层块的卷积神经网络 每个块包括卷积,批处理归一化和另一次卷积,其中跨步大步将图像缩小两倍,并进行另一批处理归一化 结果经过平均池化,然后是密集的S型层,返回单个输出概率发电机生成器获取潜在尺寸的噪声矢量并生成图像 图片的形状应与鉴别器输入的形状相同(spatial_dim x space_dim)生成器首先使用密集层对噪声矢量进行上采样,以便具有足够的值以重整为第一个生成器块 投影的目标是与鉴别器体系结构中的最后一块具有相同的尺寸 这相当于鉴别器最后一个卷积层中4 x 4 x滤波器的数量,我们将在本文稍后进行演示每个生成器块都应用反卷积来对图像进行上采样和批量归一化 我们使用4个解码器块和最后一个卷积层来获得3D张量,该张量表示具有3个通道的伪图像GAN通过在生成器顶部添加区分符来构建加入的DCGAN在编译完整设置之前,我们必须将鉴别器模型设置为不可训练的 这将冻结其权重,并告知整个网络中唯一需要训练的部分就是生成器尽管我们编译了鉴别器,但是我们并不需要编译生成器模型,因为我们不会自己使用生成器此顺序可确保鉴别器在正确的时间更新并在必要时冻结 因此,如果我们训练整个模型,它将仅更新生成器,而当我们训练鉴别器时,它将仅更新鉴别器> generator architecture > discriminator architecture > DCGAN architecture GAN 训练现在出现了困难和缓慢的部分:训练生成的对抗网络 由于GAN由两个单独训练的网络组成,因此很难确定融合> Image by 024–657–834 on Pixabay 来回执行以下步骤,使GAN可以解决其他棘手的生成问题步骤1 —从训练集中选择一些真实图像第2步-生成大量伪造图像 这是通过采样随机噪声矢量并使用生成器从它们创建图像来完成的第3步-使用伪图像和真实图像训练鉴别器一个或多个时期 通过将所有真实图像标记为1,将伪图像标记为0,这将仅更新鉴别器的权重> Discriminator training schema (self-created) — Generator's weights are not updated. Only the disc 步骤4 —生成其他数量的伪造图像第5步-仅使用假图像训练一个或多个时期的完整GAN模型 通过将所有伪造的图像标记为1,这将仅更新生成器的权重> Generator training schema (self-created) —Discriminator weights are not updated. Only the generat > GAN training performance is fleeting > Fake faces generated by the Generator during GAN training 从上方我们可以看到我们的GAN表现不错 即使照片质量不如CelebA训练组中的照片,生成的面孔看起来也很合理 这是因为我们在重塑的64x64图像上训练了GAN,该图像比原始的218x178变得更小,更模糊VAE和GAN之间的区别与我们之前的文章中的变分自动编码器生成的面孔相比,DCGAN生成的面孔看起来足够生动,可以表示足够接近真实的有效面孔> Fake faces generated by a Variational AutoEncoder during training (source) 与VAE相比,GAN通常是更好的深度生成模型 尽管VAE势必会在潜在的空间中工作,但它们更容易训练 VAE可以看作是半监督学习者,因为他们经过了培训,可以最大程度地减少复制特定图像的损失 另一方面,GAN正在解决无人监督的学习问题结论在本文中,我解释了生成对抗网络如何能够近似估计大量图像的概率分布并使用它来生成逼真的图像我提供了有效的Python代码,使您可以构建和训练GAN来解决自己的任务您可以通过Google Developers或Joseph Rocca的文章了解有关GAN的更多信息 我下面的文章将进一步探讨变体自动编码器傻瓜变型自动编码器(VAE)-分步教程DIY实用指南,具有动手实践的代码,可使用Keras在名人脸上构建和训练VAE感谢Towards Data Science的Amber Teng的社论评论(本文翻译自Michel Kana, Ph.D的文章《Generative Adversarial Network (GAN) for Dummies — A Step By Step Tutorial》,参考:https://towardsdatascience.com/generative-adversarial-network-gan-for-dummies-a-step-by-step-tutorial-fdefff170391)
(图片来源网络,侵删)
0 评论