几种常见的gan

1 单判别器单生成器

我们这一期文章不打算从头开始讲述GAN,所以如果大家没有相关基础的,就先看一下我们上一期GAN的介绍。

【技术综述】有三说GANs(上)

一个基本的用于生成图像的GAN的结构就是这样的。

几种常见的gan_第1张图片

Generator就是生成器,它输入噪声,输出产生的图像。通常噪声就是一个一维的向量,经过reshape为二维图像,然后利用若干个反卷积层来学习上采样。

如全卷积的DCGAN模型[1],输入就是1*100的向量,然后经过一个全连接层学习,reshape到4*4*1024的张量,再经过4个上采样的反卷积网络,生成64*64的图。

Discrimator就是普通的CNN分类器,输入真实样本或者生成的假样本进行分类,在DCGAN中也是4个卷积层。

2 多判别器单生成器

采用多个判别器[2]的好处带来了类似于boosting的优势,训练一个过于好的判别器,会损坏生成器的性能,这是GAN面临的一个大难题。如果能够训练多个没有那么强的判别器,然后进行boosting,可以取得不错的效果,甚至连dropout技术都可以应用进来。

几种常见的gan_第2张图片

多个判别器还可以相互进行分工,比如在图像分类中,一个进行粗粒度的分类,一个进行细粒度的分类。在语音任务中,各自用于不同声道的处理。

3 单判别器多生成器

一般来说,生成器相比判别器要完成的任务更难,因为它要完成数据概率密度的拟合,而判别器只需要进行判别,导致影响GAN性能的一个问题就是模式坍塌,即生成高度相似的样本。

采用多个生成器单个判别器的方法,可以有效地缓解这个问题。

几种常见的gan_第3张图片

从上图结构可以看出,多个生成器采用同样的结构,在网络的浅层还共享权重。

4 增加分类器

在利用GAN进行半监督的图像分类任务时,判别器需要同时担任两个角色,即判别生成的假样本,以及预测类别,这对判别器提出了较高的要求。通过增加一个分类器可以分担判别器的工作量,即将捕捉样本和标签的条件分布这一任务交给生成器和分类器,而判别器只专注于区分真实样本和生成的样本。

这一类结构以Triple Generative Adversarial Nets为代表,下图是它的网络结构。

几种常见的gan_第4张图片

5 多个生成器多个判别器

多个生成器和多个判别器就又有几种。

5.1 级联结构[5]

早期以DCGAN为代表的网络生成的图片分辨率太低,质量不够好,都不超过100×100,在32×32或者64×64左右。这是因为难以一次性学习到生成高分辨率的样本,收敛过程容易不稳定。

类似的问题在图像分割,目标检测中都存在。在目标检测中,级联网络被广泛使用,即采用从粗到精的方法依次改进检测器的性能。在图像分割中进行上采样时也采用学习小倍率的放大而不是大倍率的方法,如利用两个2倍上采样替换一个4倍的上采样,不仅可以增强网络的表达能力,还降低了学习难度。

基于此,金字塔GAN结构被提出并广泛使用,它参考图像领域里面的金字塔结构由粗到精一步一步生成图像,并添加残差进行学习。

几种常见的gan_第5张图片

上图就是它的结构,从低分辨率z3开始,逐级提升,最终生成I0,这是一个金字塔形状的结构,以下符号较多用图片代替。

几种常见的gan_第6张图片

5.2 并行与循环结构[6]

GAN有一大应用就是风格化,实现两个域之间的风格互换,以CycleGAN[6]为典型代表。它包含了多个生成器和多个判别器。Cycle的典型结构如下:

几种常见的gan_第7张图片

几种常见的gan_第8张图片

X和Y分别表示两个域的图像,可知这里存在两个生成器G和F,分别用于从X到Y的生成和Y到X到生成,包含两个判别器,分别是Dx和Dy。而损失本身也增加了一个循环损失,感兴趣读者可以去细读文章。

另外在cross domain学习中也常用到多判别器多生成器多结构,分别学习不同的域。而且各个域的判别器和生成器通常会共享一些权重,如下图是CoGAN[7]的网络结构。

几种常见的gan_第9张图片

另外还有一些零零散散的结构,比如3D GAN,RNN GAN,由于都是上面这几类的变种,不再统一介绍。

你可能感兴趣的:(深度学习gan,深度学习,神经网络,机器学习)