Generative Adversarial Networks

Yuze-L

GAN

论文链接:https://arxiv.org/abs/1406.2661

Generative Adversarial Networks

同时训练两个模型:

  • Generative Model () that captures the data distribution
  • Discriminant Model () that estimates the probability that a sample came from the training data rather than

为了学习generator对于数据的分布,定义输入噪声的先验,则代表一个映射

同理,代表来自数据集而非的概率

实际上在做一个带有价值函数的两人极大极小值游戏

具体算法

GAN Algorithm

conditional GAN

参考链接:https://zhuanlan.zhihu.com/p/618066889

我们无法控制GAN的输出类型。为了让输出可控,我们可以增加一个额外的输入标签作为指导条件(也就是

在cGAN中,指导条件(称作)也会编码成向量形式,通过concatenate的方式与随机向量融合,并放入生成器中生成图像。在鉴别阶段,依然会作为额外信息,通过多层映射与真实数据、生成数据融合,形成新的向量,送入鉴别器进行判断。

pix2pix

本质上pix2pix也是一种特殊的cGAN

对应的任务是image-to-image translation(色彩填充、轮廓标签、填充生成等)

输入的图像是一个高维的向量,因此我们的G不只是一个简单的解码器,而是Encoder-decoder的一个结构。最常用的就是U-Net

U-Net

https://zh.wikipedia.org/wiki/U-Net

一种卷积神经网络,可以用更少的训练图像产生更精确的分割。

在传统的encoder-decoder基础上增加了skip-connection结构,将encode过程中卷积得到的不同尺寸的特征图,直接concatenate到decode过程中相应尺寸的特征图上,这样避免了一些特征在下采样过程中的损失,尽可能的保留了原始图像在不同尺寸上的特征信息。

所以,输入给判别器的实际上还有,通过patch Discriminator来分辨

pix2pix

还有一个问题,采用encoder-decoder的结构的生成器训练完成后模型参数不再发生变化,那么输入图像对应的输出是唯一确定的。所以,我们需要引入服从标准正态分布的随机向量来增添其随机性。也就是说:

但是cGAN的随机性不是特别好.

pix2pix模型的损失函数除了上面的(让图像看起来更加真实),还有L1范数,使得输出细节更加贴近目标图像。

单独使用L1或者L2都会导致结果更加偏向模糊,这是因为这两种损失函数均是对对应像素差取均值,这样的话会使得输出的像素分布更加平缓,从而只能很好的保留低频信息,却无法生成准确的高频信息

PatchGAN

原来我们对于生成的图片只有一个True/False,但是通过PatchGAN,我们将原始图片通过卷积称为的特征图,每个点都代表着原始图像中的一小块区域(patch)的评价。

区别

参考:https://sahiltinky94.medium.com/understanding-patchgan-9f3c8380c207

区别

CNN将一张输入图像输入网络后,会给出整个输入图像大小属于标量向量的概率。

然而,在PatchGAN中,在将一张输入图像输入网络后,它会给出向量的True/False

CNN和PatchGAN的区别图解

尝试实操

https://www.tensorflow.org/tutorials/generative/pix2pix?hl=zh-cn

可以训练 但是不想训练了()

  • Title: Generative Adversarial Networks
  • Author: Yuze-L
  • Created at : 2024-07-31 14:54:58
  • Updated at : 2024-07-31 21:12:56
  • Link: https://yuze-l.github.io/2024/07/31/GAN/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
Generative Adversarial Networks