【GANs学习笔记】(二十五)S²GAN,S²GAN-CO,S³GAN(CompareGAN)

完整笔记:http://www.gwylab.com/note-gans.html
—————————————————————————————————

5. S3GAN

5.1 S3GAN解决的问题

  上一节我们提到,BigGAN实现了大规模高清图片的生成,但是,BigGAN的训练成本是非常大的,一个显著的缺陷是它需要大量的标注数据才能实现训练(因为判别器做判断的依据就是图像的标注)。因此,制作一个大规模的有标记图片数据集是耗时耗力的,为了解决这一问题,S2GAN,S2GAN-CO,以及S3GAN相继被提出了, 这些方法仅使用 10%有标记的数据就能够匹配 ImageNet上BigGAN 生成的样本质量,并且在使用 20%有标记的数据时超过它。

5.2 S2GAN

  我们先回顾一下BigGAN使用的模型架构(重点关注判别器),如下图:
          在这里插入图片描述
  这是一种带有投影判别器的条件GAN。判别器试图通过组合无条件分类器 cr/f 和通过投影层P实现的类条件分类器来从表示D ̃中预测实际图像 xr (具有标签 yr )或生成图像 xf (具有标签 yf )是否在其输入处。
  现在我们不希望这些标签都由人工来标注,于是我们想引入一个新的网络,能够为图像自动添加标签。这个学习网络的构造方式有两种,一种是无监督方法,另一种是半监督方法。
          在这里插入图片描述
  上图就是无监督方法的网络架构。很好理解,给判别器加一个特征提取器 (图中的F) ,从没有标注的真实训练数据里面,学到它们的表征。对这个表征做聚类 (图中 cCL ) ,然后把聚类的分配结果,当成标注来用。损失函数用自监督损失。这种方法不需要任何的已有标注数据,让网络通过对真实数据聚类从而学会去给真数据与假数据添加不同的标签。
  另外一种方法是基于半监督方法的网络架构,它可以利用少量已标注的数据进行学习。遗憾的是,原论文中没有为这种方法绘制示意图,但是用简单的文字也可以很好解释:在训练集的一个子集已经标注过的情况下,根据这些已知信息来学习表征,同时训练一个线性分类器。这样,损失函数会在自监督的基础上,再加一项半监督的交叉熵损失。预训练了特征提取器之后,就可以拿去训练GAN了。
  上面第二种基于半监督学习的方法,即用一小部分已知标注训练出的GAN,就叫做S²GAN。

5.3 S2GAN-CO

  S²GAN有一个不太好的地方是,预训练网络在实际训练中会占用很多时间,现在我们不想要这个预训练的过程,我们希望GANs的训练与标记网络的训练能同时进行,于是,S²GAN的协同版——S²GAN-CO被提出了。
          在这里插入图片描述
  如上图所示,直接在判别器的表征(D ̃)上面,训练一个半监督的辅助分类器( cCT ),用来预测没有标注的图像。这个过程,和GAN的训练一同进行。这个结构,就叫做S²GAN-CO。

5.4 S3GAN

  S²GAN还不够强大,因为稳定性不佳一直是GANs训练过程中容易出现的问题(可参见BigGAN中的相关讨论),为了提升S²GAN的训练稳定性,S³GAN被提出了。

          在这里插入图片描述
  如上图所示,考虑到判别器本身是一个分类器,如果把这个分类器扩增一下,对于提升训练的稳定性是有帮助的。于是,S³GAN给了分类器一个额外的自监督任务,就是为旋转扩增过的训练集 (包括真图和假图) ,做个预测。再把这个步骤,和前面的半监督模型结合起来,就得到了上图所示S³GAN的网络架构图。实验证明,升级版的S³GAN确实在训练的稳定性上得到提升。

  综上,就是S²GAN及S³GAN的介绍,它们仅仅是在BigGAN的网络架构上做出了进一步调整,就实现了与BigGAN相媲美甚至超越BigGAN的图片生成表现,最重要的是它们为无监督的GANs训练提供了一个非常好的样板,解决了传统GANs过于依赖标记数据的问题。
  最后,让我们来观摩一下S³GAN生成图片与BigGAN生成图片的对比。(上面是BigGAN的生成效果,下面是S³GAN的生成效果)。
          在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/a312863063/article/details/88795626
GAN