李宏毅《GAN Lecture》学习笔记3 - Unsupervised Conditional GAN
Unsupervised Conditional GAN
上一篇介绍的Conditional GAN是需要成对的
数据作为训练集,而在很多情况下,很难准备这样的训练集。不成对的数据较为容易收集,那么,利用这些不成对的
数据做Conditional GAN就是Unsupervised Conditional GAN.
有两种实现方式:
- 对于差别不大的情况(只是颜色和纹理的变化),可以直接转换
- 对于差别很大的情况,需要投射到一个Common Space上
直接转换
目标函数有两个:
- 生成的图片尽可能像Domain Y的图片
- 输入的图片和生成的图片要相关
关于条件2的方法之一是无视这个问题,因为generator生成的图片与输入本身也不会差太多,尤其是简单的网络,当然,复杂的网络可能会出现一些变化,这时需要添加一些控制。
另外一种方式是通过DNN将图像生成对应的embedding,并最小化两个embedding的距离。
第三种方法也就是大家熟知的CycleGAN。
在训练X->Y的generator,同时,也训练一个Y->X的generator。然后,最小化两次转换后的输入和输出距离。
另外,CycleGAN也可以是双向的,也就是说,X可以转成Y,Y也可以转成X。下图的G和D会有差异。
下面的Disco GAN和Dual GAN,从本质上看和CycleGAN是一样的。
Star GAN
多个domain之间的转换时,如果使用Cycle GAN,需要的G会很多。而Star GAN只需要一个G,就可以完成多个domain的互转。
下面是StarGAN的算法流程:
左侧是D,输入是real images和fake images,输出是(1)real/fake,(2)所属的domain;
中间两个蓝色的G,其实是一个G啦,完成CycleGAN的两次转换,从X->Y->X,最后,最小化输入图像和输出图像的距离;
右侧的D是用于判断生成的image是否是真实的,以及domain是否与期望一致。
论文中使用的案例(1),性别、头发颜色作为不同的domain
案例(2),不同的表情作为domain
转到Latent Space
训练两套Encoder和Decoder,并最小化reconstruction error
但是,这种训练方法是独立进行的,导致X和Y没有关系。Latent feature可能并没有一致的关系,这样,就无法生成符合预期的图像。
解决这个问题的方法有以下几种:
(1)encoder之间,后面几层参数共用。decoder也是如此。这种方式的极端情况,就是使用一个encoder和一个decoder。
这种方式通过增加更多的layer,来使得latent feature相同。
(2)对latent feature增加D,来判断是否来自不同的domain。训练过程就是要骗过D,这样,就可以让两个domain的latent feature相同。
(3)下面这种方式类似于CycleGAN,大致过程是:X1->Y2-Y2>X2,最后,最小化reconstruction error
(4)下面这种方式也是类似,差异是比较的是latent feature