[Deep-Learning-with-Python]GAN图片生成

本文介绍了生成对抗网络(GAN)的基本原理和实现,通过GAN的直观解释——伪造者与艺术品经销商的比喻,展示了GAN如何通过生成器和鉴别器的对抗训练产生逼真图像。文章详细讲解了GAN的构成、训练流程,并提供了使用Keras实现DCGAN的示例,探讨了训练GAN时的一些技巧和挑战,如对抗损失、鉴别器与生成器的动态平衡等。
摘要由CSDN通过智能技术生成

GAN

由Goodfellow等人于2014年引入的生成对抗网络(GAN)是用于学习图像潜在空间的VAE的替代方案。它们通过强制生成的图像在统计上几乎与真实图像几乎无法区分,从而能够生成相当逼真的合成图像。

理解GAN的直观方式是想象一个伪造者试图创造一幅伪造的毕加索作品。起初,伪造者的任务非常糟糕。他将他的一些假货与真正的毕加索混合在一起,并将它们全部展示给艺术品经销商。艺术品经销商对每幅画进行真实性评估,并给出关于毕加索看起来像毕加索的原因的伪造反馈。伪造者回到他的工作室准备一些新的假货。随着时间的推移,伪造者越来越有能力模仿毕加索的风格,艺术品经销商越来越专业地发现假货。最后,他们手上拿着一些优秀的假毕加索。

这就是GAN的意义:伪造网络和专家网络,每个网络都经过最好的培训。因此,GAN由两部分组成:

  • 生成网络(generator): 将随机向量(潜在空间中的随机点)作为输入,并将其解码为合成图像;
  • 辨别网络(discriminator): 将图像(真实的或合成的)作为输入,并预测图像是来自训练集还是由生成器网络创建。

生成器网络经过训练,能够欺骗鉴别器网络,因此随着训练的进行,它逐渐产生越来越逼真的图像:人工图像看起来与真实图像无法区分,只要鉴别器网络不可能鉴别两张图片。同时,鉴别器不断适应发生器逐渐改进的能力,为生成的图像设置了高度的真实感。一旦训练结束,生成器就能够将其输入空间中的任何点转换为可信的图像。与VAE不同,这个潜在空间对有意义结构的明确保证较少;特别是,它不是连续的。
[图片上传失败…(image-599f61-1536326082049)]

值得注意的是,GAN是一个优化最小值不固定的系统。通常,梯度下降包括在静态损失中滚下山丘。但是使用GAN,从山上下来的每一步都会改变整个景观。这是一个动态系统,其中优化过程寻求的不是最小,而是两个力之间的平衡。出于这个原因,GAN是众所周知的难以训练 - 让GAN工作需要大量仔细调整模型架构和训练参数。

GAN实现示意图

使用keras实现一个简单的GAN网络:DCGAN,Generator和Discriminator都是由卷积网络组成。使用Conv2DTranspose网络层在Generator用来对图片上采样。

在CIFAR10,50000张32x32 RGB图片数据集上训练。为了训练更容易,仅使用“青蛙”类图片。

实现GAN网络流程:

  1. generator网络将(latent_dim, )向量转换成(32,32,3)图片;
  2. discriminator将(32,32,3)图片映射到2分类得分上,得到图片为真的概率;
  3. gan网络将generator和discriminator结合起来:gan(x) = discriminator(generator(x))。gan网络将隐空间向量映射到鉴别器鉴别generator由隐空间向量生成图片为真的概率上;
  4. 使用带real/fake标签的real、fake图片对Discriminator训练;
  5. 要训练Generator,可以使用gan模型损失对Generator权重的梯度。这意味着,在每个步骤中,将生成器的权重移动到使鉴别器更可能将生成器解码的图像归类为“真实”的方向上。换句话说,你训练生成器来欺骗鉴别器。

A bag of tricks

众所周知,训练GAN和调整GAN实现的过程非常困难。你应该记住一些已知的技巧。像深度学习中的大多数事情一样:这些技巧是启发式的,而不是理论支持的指导方针。 他们得到了对手头现象的直观理解的支持,并且他们已经知道在经验上运作良好,尽管不一定在每种情况下都有效。
以下是实现GAN生成器和鉴别器时使用的一些技巧。它不是GAN相关技巧的详尽列表;你会在GAN文献中找到更多:

  • Generator使用tanh作为最后一层的激活函数,而不是sigmoid;
  • 隐空间取样时使用正态分布(高斯分布),而不是均匀分布;
  • 为了健壮性可以增加随机性。由于GAN训练导致动态平衡,GAN可能会以各种方式陷入困境。在训练期间引入随机性有助于防止这种情况。我们以两种方式引入随机性:通过在鉴别器中使用dropout并通
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值