Inverting the Generator of a GAN 生成器反向

       上一篇文章的卷积反卷积自编码框架本来我是打算用作GAN的生成器,这样一来我用GAN生成的图像就可以受我控制了,而不是像DCGAN那样生成器的输入是一个随机的100维向量。

       但是用卷积与反卷积自编码来作为生成器,我觉得似乎有点麻烦,首先要训练一个编码器网络,然后将编码器网络生成的向量代替类似于DCGAN中的z向量,实现对GAN生成模型输出的控制效果。因为我也不搞GAN,所以不如去找找现成的,于是乎就上IEEE Trans上找到可找篇论文

Creswell A , Bharath A A . Inverting the Generator of a Generative Adversarial Network[J]. IEEE Transactions on Neural Networks and Learning Systems, 2018:1-8.

         整篇论文看下来有不少细节问题,比如图文不对应,不过不影响论文内容,整体上来说所用的方法是简洁明了的。

1、什么是生成器反向?

1.1 GAN基本原理

       这就要从GAN 的基本原理说起了,放个传送门,简单来说,GAN 由两部分组成:Generator(生成器):生成模型的目的,就是要尽量去模仿、建模和学习真实数据的分布规律;Discriminator(鉴别器:而判别模型则是要判别自己所得到的一个输入数据,究竟是来自于真实的数据分布还是来自于一个生成模型。基本框架如下:

Inverting the Generator of a GAN 生成器反向

所以对于传统的GAN来说,输入一个随机噪声,生成器生成与样本图像类似的图像,所以说生成器的输入z看作生成图像G(z)的一种表示,而且DCGAN已经证明了GANs能够学习一种rich linear structure”

       即对z空间的代数运算常常会导致图像空间在语义上有意义的合成样本

       例如假设图片A 对应的输入为ZA , 图片B 对应的输入为ZB , 可以ZA ZB 之间做插值,并使用G 生成每一个插值对应的图片DCGAN 可以让生成的图像以比较自然的方式A 过渡B。举个栗子:

Inverting the Generator of a GAN 生成器反向

不仅可以对输入信号z 进行过渡插值,还可以对其进行更复杂的类似于代数的运算如图8-4 所示,用代表“露出笑容的女性”的z减去”女性再加上“男性”,最后得到了“露出笑容的男性”。对Z-Space的性质有个大概的理解后,接下来看什么是反向生成。

1.2 反向生成(INVERTING THE GENERATOR

先上图:

Inverting the Generator of a GAN 生成器反向

       简单来说就是我有一张target image x,我想要用一个训练好的GAN生成我这张x,那我怎么知道该给生成器G的z什么,那按照传统的GAN中z向量都是随机或者说按照一定分布生成的,总不能一个一个z的试,所以本文介绍了一种能够利用经过训练的GANs生成器,将数据样本比如图像投影潜在z空间的反演模型;这么做有啥用?当然有用了,比如由于图像在Z空间的表示通常是有意义的,所以可以直接利用图像集在Z空间的表示进行识别任务;其次可以通过对Z空间的操作生成图像等等

······当然了这一块之前也肯定有人做了,他们怎么做的呢?他们跟我的想法类似,都是借助神经网络实现的,比如说设计一个编码器,这么做有什么不好呢?因为这样增加了参数的数量,参数越多不仅网络参数难调而且容易出现过拟合的情况;

生成器反向这种方法也能用于评估GANs网络的性能,为什么呢,因为如下图所示,将反向过程输出的Z空间向量z,再经过GAN的生成器生成图像,通过生成的图像与原图作对比,就可以大概看出来你训练出来的GAN网络性能如何,学习到了哪些特征,学习到的特征是不是很充分,这就属于该方法可对GAN网络模型进行定性分析,如果对原图与生成图像再求一个均方差MSE,这就属于该方法可对GAN网络模型进行定量分析。所以可以利用该方法来对两个GANs生成模型进行评估对比

Inverting the Generator of a GAN 生成器反向

 

这篇文章的贡献贴上:

  • A novel approach to invert the generator of any pretrained GAN, provided that the computational graph for the generator network is available
  • we are able to infer a Z-space representation for a target image, such that when passed through the GAN, it produces a sample visually similar to the target image
  • The proposed inversion technique may be used to both qualitatively and quantitatively compare GAN models;
  • We show that batches of z samples can be inferred from batches of image samples, which improve the efficiency of the inversion process by allowing multiple images to be inverted in parallel

2、具体实现

至于说Inverting a Batch of Samples都是唬人的,就是相当于并行多个单sample,类似于深度学习中简化计算用的向量化手段。不过原理还是挺简单的,多的不想写了,做个简单了解算了

Target image????∈R^(m∗m)              Pretrained GANs: G( )

目的:推理出目标image x Z空间的表示 ????????

约束条件z 通过生成模型生成的image应当与x很相似;

所以该问题转换为最小化问题,z^∗可通过梯度下降法求得:

Inverting the Generator of a GAN 生成器反向