论文笔记:Seeing What a GAN Cannot Generate

Seeing What a GAN Cannot Generate

尽管生成对抗网络(GAN)在合成图像上非常成功,但在GAN训练期间,mode-collapse仍然是一个严重的问题。迄今为止,很少有工作集中在理解和量化模型丢弃的模式上。这项工作在分发级别和实例级别都可视化了mode-collapse。首先,我们部署一个语义分割网络,将生成图像中的分割对象的分布与训练集中的目标分布进行比较。统计上的差异揭示了GAN忽略的对象类。其次,鉴于已识别的遗漏对象类别,我们直接可视化GAN的遗漏。特别是,我们通过GAN比较了各个照片及其近似反演之间的特定差异。为此,我们放松了反演问题,并解决了将GAN层而非整个生成器反演的棘手问题。最后,我们使用此框架来分析在多个数据集上训练的GAN,并确定它们的典型失败案例。

原文链接:arxiv
PPT:Slide
Demo:Demo

1. Abstract

GAN合成的图片足够以假乱真,但是我们对GAN能够产生哪些图像和不能产生的图像却不够了解。我们要怎么知道生成图像的过程中GAN丢弃了哪些细节或者模式,于是这篇文章提出了一个问题并进行解答:What a GAN cannot generate? 模型是难以学到图像中所有的复杂部分还是忽略了一部分特殊的语义。

如下图所示,原始的图片中的人物和教堂中的围墙都在生成的时候忽略了。

2. Method

为了解决上述问题,文中一共分成了以下两个部分,在统计意义和单个实例中显示GAN可以产生哪些和不能产生的模式:

  • 统计分析图像中的语义分割在原始图像和生成图像中的差异。(distribution-level)
  • 可视化在图像进行重建的过程中生成器忽略哪些object。(instance-level)如果我们能够使得模型最大化的接近原始图像,那么原始图像与生成图像之间的差异就是模型的缺陷,这部分细节在GAN训练和生成的过程中被忽略掉了。

2.1 Quantifying distribution-level mode collapse

要如何观察到模型中有哪些漏掉的mode,最简单的方法就是统计图像中的类别信息差异。比如在卧室中,可以统计原始图像中和生成图像中的存在了多少窗帘,并且通过这种差异就可以看到GAN在窗帘上是否存在漏洞。

为了分割图像,文中使用了Unified Perceptual Segmentation Parsing network,该网络可以为图像中每一个pixel标注信息,最多可以标注336个不同的类别。通过计算每一个类别在图像中的面积就可以得到GAN的统计差异(平均值),如下图。

mean area表中蓝色表示原始图像中的统计面积,红色是生成图像中的统计面积。Relative delta表示原始图像与生成图像的差异,可以看到chest等物体很少会在生成图像中出现。

同时文中使用了一个Frechet Segmentation Distance(FSD)量化这种差异,类比于Frechet Inception Distan(FID),如下:\text{FSD} \equiv \| \mu_{g} - \mu_{t} \| ^{2} + \text{Tr}(\sum_{g}+\sum_{t}-2(\sum_{g}\sum_{t})^{\frac{1}{2}})

2.2 Quantifying instance-level mode collapse

首先定义(x,x')为原始图像与生成图像pair,那么问题就是分析这个pair的差异,x为原始图像。通过层级反演可以得到图像的最近似输入,但是全部网络的反演及其困难,于是文中仅反演最后几层。

  • Step 1: 训练一个编码器。
  • Step 2: 通过编码器对原始图像进行编码获得z0。
  • Step 3: 对生成器的第R层进行优化,使得结果尽可能的接近原始图像。

优化目标,找到合适的中间层输入,使得生成图像尽可能的与原始图像相似。

\begin{aligned} x' &= G_{f}(r^{\ast}) \\ \text{where} \, r^{\ast} &= \text{arg min}_{r} \, l(G_{f}(R),x) \end{aligned}

3. Result

在三个GAN模型中进行测试:WGAN-GP,StyleGAN,Progressive GAN,并通过#2.1中的评价标准得到结果如下,styleGAN最能还原出原始图像。

在Progressive GAN测试的结果。

4. Discussion

这篇论文通过逐层反演GAN来发现模型中的缺陷以及忽略掉的信息,并通过统计和可视化实例对GAN模型进行解释。文章已经告诉我们模型确实不能产生哪些模式,那么我们需要问为什么,模型为什么会忽略掉这些模型,这些忽略的信息是因为训练集不够还是模型本身不足够拟合这么多复杂的信息。

同样可以思考要怎么帮助模型理解训练集中我们关注的最主要的概念,比如如果模型确实不足够拟合这么多信息,那么我们有没有办法让模型在合成的过程中忽略我们不想要的东西。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容