Conditional GAN = Conditional Generation by GAN
Conditional GAN和GAN的Generator是一样的,差别就是在Discriminator
我们学过GAN,GAN的主要作用是用来做生成对象。输入向量,得到对应的对象,但是生成的对象无法控制
用传统的做法,即Traditional supervised approach,怎么做?
以上是数据的例子,我们训练一个neural netowrk,然后输入一个文字,输出对应一个图片,我们希望图片与目标图片越接近越好。
这样做有什么问题呢?我们来看一下,例如文字:train对应的图片有很多张。例如下面的火车有正面,有侧面的,如果用传统的NN来训练,模型会想让火车长得像左边,又像一个右边的,这样的结果是不好的。模型会想产生多张图像的平均,结果就会很模糊。
如果是用GAN来做: 先用Generator来生成图片,输入是两个:一个是条件,一个是从某个分布中sample出来的向量。
然后Discriminator来判断图片是否是生成的
这样做是有问题的,因为Discriminator只会根据生成的图片是否清晰,是否真实来进行判别,所以Generator 只会按这个标准来生成图片,而没有去按条件(例如:火车)来生成图片。
这里的Discriminator吃两个输入:一个是条件,一个是要判断的图片对象。输出是一个向量,输出向量要判断两个事情: x is realistic or not + c and x are matched or not 下面是输出向量的例子:
常见的Discriminator构架如下图,把x丢到一个NN里面得到一个向量表示,然后把文字丢到一个NN里面得到一个向量表示,把两个向量concat起来之后,丢到一个NN里面得到具体的分数。
https://blog.csdn.net/oldmao_2001/article/details/105903619