| 雷峰网
资讯 人工智能
此为临时链接,仅用于文章预览,将在时失效

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

作者:何之源
2017/03/06 16:34

雷锋网按:本文作者何之源,复旦大学计算机科学硕士在读,研究人工智能计算机视觉方向。本文由雷锋网独家首发。

一、一个神奇的网站

前些日子在Qiita上看到了一篇神奇的帖子:Girl Friend Factory 機械学習で彼女を創る Qiita。帖子里面提到利用GAN,通过文字描述来生成二次元图像。这篇文章的作者还把他的想法搭建成了一个网站(网站地址:Girl Friend Factory),大概长下面这样:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

我之前也写过一篇文章介绍了如何利用GAN生成简单的二次元人物头像,但那只是完全的随机生成,你无法控制生成出的人物的属性。但这篇Qiita的帖子不一样,我们可以指定生成人物的属性,如发色、眼睛的颜色、发型,甚至是服装、装饰物,从而生成具有指定属性的图像。

这个网站提供的属性非常多,我简单地把它们翻译了一下:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

我会在后面详细地介绍它的实现原理,在那之前,我们先来试着玩一玩这个网站。

进入网站后,首先要等待模型加载(注意:这个网站国内可能出现连接不上的问题,需要自行解决。另外网站大概会下载70M左右的模型,需要耐心等待。)加载好后,点击上方的“無限ガチャ”(無限ガチャ实际上是“无限扭蛋器”的意思),就可以进行生成了。

先生成一个金发+碧眼,多次点击生成按钮可以生成多个,效果还可以:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

再生成黑发+碧眼试试:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

右击图像可以“注册为喜欢”,实际上就是一个收藏的功能。收藏之后可以"生成一覧"中找到。

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

另外,收藏图片后,点击上方的"属性モーフィング"还可以对属性做微调,如这里我可以更改发色:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

点击上方的"合成"按钮,你甚至可以把两个人物合成同一个!如下图所示:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

二、基本原理

上面的网站的原理是什么呢?原作者也提到了,其实就源于Generative Adversarial Text to Image Synthesis这篇论文。接下来就一起看一下它是怎么做的。

我们的目标实际上是通过“文字”生成“图像”。为此我们需要解决以下两个问题:

其中,第一个问题是用了之前一篇论文中的技术,这里就不细讲了。假设文字描述为t,我们可以通过一个函数φ将其转换为一个向量φ(t)。

第二个问题,如何利用向量φ(t)生成合适的图像?这就是GAN的工作,文中GAN的结构如下图所示:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

对比原始的GAN结构,这里对生成网络G和判别网络D的输入部分做了更改:

这实际上就是一个条件GAN(conditional GAN)。只需要简单地更改一下原始GAN的结构就可以完成。到了这里,就可以直接训练了,也可以完成我们文字 >图片的生成任务。但是直接训练的生成图片的质量不是很好,对此作者又提出了两点改进。

三、改进一:GANCLS(针对判别器D的改进)

为什么直接训练的效果不好?仔细想一下,我们会发现,在原始的GAN中,判别网络D只需要做一件事情,即判断生成的图片是否正常。但在这里,判别网络D需要做两件事情,一是和原始的GAN一样,判断图片是否正常,二是判断生成的图片是否符合文字描述。

因此,我们对原来的训练步骤做一些改进。不仅给D提供生成的图片和真实的图片两类样本,还给D提供真实图片 + 虚假描述的样本,强化D的训练效果,强迫D判断生成的图片是否真的符合文字描述。具体的训练步骤如下:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

我们可以看到,D的梯度由三部分构成:sr, sw, sf。sr是真实图片+正确文字。sw是真实图片 + 错误描述。sf是G生成的图片 + 正确描述。这样就可以加快D的训练进程,提高训练效率。

四、改进二:GANINT(针对G的改进)

要理解这部分改进,首先要明白,我们只使用了sf训练生成网络G(见上面的图片)。sf是什么呢?它只和G生成的图片、正确的文字描述两项有关系,也就是说,sf是和真实图片样本无关的。因此,我们可不可以用一种方法,增加正确文字描述的样本数呢?

答案是可以,因为我们只用到了文字描述的嵌入φ(t),在嵌入空间中我们实际是可以做一些简单的加减运算的。

设一个文字描述是φ(t1),另一个文字描述是φ(t2),我们可以得到他们的一个内插值aφ(t1) +(1a)φ(t2)。其中0<a<1。这样的内插实际上是得到了两个文字描述的某种“中间态”,为我们增加了样本数量。

我们知道,对于深度学习,样本数量越多,效果就会越好,因此这里的GANINT是对效果的提升有帮助的,实验中验证了这一点。

作者把上面的两种改进合在一起,就成了GANINTCLS,也是这篇文章的最终方法。

放一张论文作者实验的图,他是做了花的生成,最上面一行是Ground Truth,下面依次是GAN,GANCLS,GANINT,GANINTCLS:

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

五、参考资料

Girl Friend Factory 機械学習で彼女を創る Qiita

Girl Friend Factory

Conditional Generative Adversarial Nets

Generative Adversarial Text to Image Synthesis

长按图片保存图片,分享给好友或朋友圈

通过文字描述来生成二次元妹子?聊聊conditional GAN与 txt2img模型

扫码查看文章

正在生成分享图...

取消
相关文章
Baidu
map