哈Ha! 我向您介绍徐涛,张鹏川,黄秋元,张汉,张哲干,黄小雷,何小东的文章“
AttnGAN:细粒度的文本到带有注意生成的对抗网络的图像生成 ”的翻译。
在本出版物中,我想谈谈我对AttnGAN架构进行实验以从文本描述生成图像的过程。 在2018年初发布原始文章后,Habré已经提到了这种架构,我对这个问题很感兴趣-自己训练这样一个模型有多困难?
架构描述
对于那些不熟悉AttnGAN和经典GAN的人,我将简要介绍其本质。 经典GAN至少包含2个神经网络-生成器和鉴别器。 生成器的任务是生成与数据集中的实际数据“相似”的某些数据(图像,文本,音频,视频等)。 鉴别器的任务是评估生成的数据,尝试将它们与真实数据进行比较并拒绝它们。 生成器工作被拒绝的结果会刺激其生成最佳结果,以“欺骗”歧视者,而歧视者正学会更好地识别假货。
GAN进行了很多修改,AttnGAN的作者非常有创意地解决了建筑问题。 该模型由9个神经网络组成,可对其进行微调以进行交互。 看起来像这样:

文本和图像编码器(文本/图像编码器)将原始文本描述和真实图像转换为某种内部表示形式。 在这种情况下,特征是将文本视为单个单词的序列,将其表示与图像表示一起进行处理,从而使您可以将单个单词与图像的各个部分进行比较。 这样,就实现了DAMSM文章的作者所调用的注意力机制。
Fca-基于整个文本描述,在图像中创建整个场景的简洁表示。 输出中的C值与Z的正态分布中的向量连接起来,这确定了场景的可变性。 该信息是发电机运行的基础。
生成器是由三个级别组成的最大网络。 每个级别产生的分辨率从64 * 64到256 * 256像素不断提高的图像,并且使用Fattn注意网络调整每个级别的工作结果,该网络承载有关场景中单个对象正确位置的信息。 此外,每个级别的结果都由三个分别工作的鉴别器进行检查,这些鉴别器评估图像的真实性及其与场景总体概念的一致性。
培训课程
为了测试体系结构,我使用了标准的CUB数据集,其中包含鸟类的照片和文字描述。
整个模型分两个阶段进行训练。 第一步是DAMSM网络的预训练,它由文本和图像编码器组成。 在此阶段,如上所述,将创建一个如下所示的“注意力图”:

从图中可以看出,DAMSM可以非常准确地捕获来自文本描述和图像元素的单个单词之间的关系,该模型尤其容易识别颜色。 我必须说,该系统没有关于“红色”,“黄色”或“机翼”,“喙”是什么的任何附加信息。 只有一组文本和图像。
DAMSM培训没有任何问题,该数据集的培训时间为150-200个时代,相当于在高功率GPU上花费几个小时。
第二个主要阶段是使用DAMSM模型训练生成器。
每个级别的生成器都会生成更高分辨率的图像-看起来像这样:

生成器训练需要更长的时间,并且并不总是那么稳定,因此在此数据集上建议的训练时间为300-600个纪元,相当于在高功率GPU上约4-8天。
我认为,培训生成器的主要问题是缺乏足够好的指标,这些指标无法让我们以更正式的方式评估培训的质量。 我研究了Inception分数的几种实现方式,从理论上讲,该分数被定位为此类任务的通用度量标准-但在我看来,它们不足以令人信服。 如果您决定训练这样的发电机,则需要根据中间结果不断地目视监视训练的进度。 但是,对于任何此类任务,此规则都是正确的,始终需要视觉控制。
结果
现在有趣的部分。 使用训练有素的模型,我们将尝试生成图像,我们将从简单的句子开始:

让我们尝试更复杂的描述:

所有的文字描述都是发明的,我故意不使用数据集中的短语进行测试。 当然,并非所有这些图像都是在第一次尝试时获得的。 该模型是错误的,作者自己正在谈论这一点。 随着描述文本和要显示的元素的增加,维持整个场景的真实感变得越来越困难。 但是,如果您想在生产中使用类似的东西,例如为设计师生成某些对象的图片,则可以根据您的要求训练和定制系统,这可能非常严格。
对于每个文本描述,您可以生成许多图像选项(包括不切实际的图像选项),因此始终会有很多选择。
技术细节
在这项工作中,我在训练阶段使用了低功耗GPU进行原型制作,并使用了安装了Tesla K80的Google Cloud服务器。
源代码取自文章作者的资源库,并经过了认真的重构。 该系统在Pytorch 0.4.1的Python 3.6中进行了测试
感谢您的关注!
原始文章: AttnGAN:带有注意生成对抗网络的细粒度文本到图像生成 ,2018-徐涛,张鹏川,黄秋元,张涵,浙赣,黄小雷,何晓东。