GAN
Generator效能评估
GAN的训练需要齐头并进,一旦一方不在进步,则另一方也无法再进步。
Quality of Image
借助一个影像分辨系统,来分辩由Generator产生的图片,最终产生一个P(c|y)几率分布,如果P越集中,意味着看系统看到的图片大多数是同一类的图片,则Generator产生的效果越好
Diversity—Mode Collapse(模型崩溃)
只集中产生某种图像的,导致最终结果会有很多重复。原因就是Generator找到Discriminator一个盲点,只要产生这种图像就可以骗过,因此,就会集中产生这种图像。
没有啥好办法解决,强如Google也不行。
Mode Dropping——(模型下降)
产生的图像的多样性只有原数据集的一部分,如上图,在下一次迭代之后,所有人脸的肤色都变成黄色了,丢失了原本原本肤色的多样性。因此这种问题不好解决。
一个评估方法
把图像丢到一个Inception Network(一个影像分辨network)中,取出进入softmax之前的输出vector, 同时还有真实数据集的vector。假设这个两个vector都是Gaussian Distribution,来计算他们的FID。FID越小越好。(有些小问题:直接当Gaussian Distribution?而且需要很大的sample集)
还有一个问题就是可能Generator会产生相同图片
这个就很难做到具体评估。(没有说怎么解决=。=)
Conditional Generation——条件式生成
加入具体限定词x,来限定Genertor输出,比如x是红眼睛,则Generator生成的图片就都要是红眼睛
因此训练Discriminator的时候则要同时输入y和x,最终得到的scalar取决于y是否真实同时y和x是否匹配,而且三种案例:1. 文字和图片相符合 2 .没有生成图片 3. 文字图片不符合,才能训练好。
而且除了输入文字产生图像,也可以输入图像产生图像
或者听到声音产生图像
Cycle GAN
通过GAN来完成unsupervised(无成对资料)的情况,如风格转换(之前的都是supervised的图像)
此时把输入输出看作一个范围,输入一个范围里的图片,输入另一个范围里的图片。
但是会发生忽略输入的图片的情况,即自己产生符合y domain的图,骗过Discriminator,但是这个图与x domain毫无关联
因此要改装一下原本的GAN
因此,要多一个Generator,把前一个Generator的生成的图,还原回数据集,来强化第一个Generator生成结果与输入结果的关系。虽然无法保证能一定很像,但实践时其实会很像。
同样加上一个反向的过程,输入y domain的图像,通过第一个G生成x domain的图像,骗过x domain的Discriminator,同时通过第二个G,还原回x domain的图,强化第一个G生成图与原图的关系。
这合起来就是Cycle GAN
一个人脸转换二次元的网站