Text-to-Image
用传统监督方法,火车有侧面图片也有正面图片,而训练的结果往往是产生多张火车图片(有正面、侧面)的平均,所以生成图片会比较模糊:
火车图片和Z共同输入至G中,生成一个图像
x
=
G
(
c
,
z
)
x = G(c,z)
x=G(c,z);
让D能判断出真实图片为1,生成图片为0;
然后G能输出偏真实的图片;
但完全忽略了输入的条件:
如果是conditional Generation,那么D也应该同时判断 1)x是不是真实的;2)c和x是否匹配。
同时满足,输出才为1:
算法
图中最后一行的“-”“改成“+”
在CGAN中的Discriminator,有两种方法,大部分论文用的是上半部分的方法。
但下半部分的方法也很有道理,先把x输入NN中看是否真实,输出一个数值;然后同时输出的x和c输入NN,看是否匹配,也输出一个数值。把两个必须满足的条件分开了。
这是学生的一些作业:
比较出名的例子:Stack GAN(先产生比较小的图,在产生比较大的图)
Image-to-image
src=“https://img-blog.csdnimg.cn/20181101092219962.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzMyNTEyMTIz,size_16,color_FFFFFF,t_70” width=“60%” alt=""/>
传统监督方法,结果会比较模糊。
用GAN就清晰很多(是否能匹配),但可能会产生奇怪的东西,所以也会增加一个条件:看生成的和原来的是否相差很多。
当图片很大的时候,可能整个模型会坏掉,所以每次让D只检查图片中的小块,小块的区域可以调参数大小,这就是Patch GAN。
Video
同样这也可以应用在声音上,用传统方法去噪,可能还有一些模糊:
用GAN,会更加清晰:
应用在视频上:让G看一段视频,让G生成接下来的事情
以下是产生小精灵游戏画面的结果(动图):