持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情
本文将介绍一个简单高效的文本生成图像基准模型,该基准模型是DF-GAN20版代码,清楚简单,实用性高,本基准模型代码在他的基础上经过少量简化和处理,虚拟环境也进行了打包,非常适合作为一个基线模型,然后在其上进行对应创新。
一、下载代码
代码地址:github.com/Heavenhjs/d…
下载方法:git clone https://github.com/Heavenhjs/demot2i.git或者进入github下载压缩包
下载后的代码结构如下:
其中:code文件夹放置模型主要代码,data放置数据集(如bird、coco),DAMSMencoders放置已经训练好的文本编码器和图像编码器。
二、配置虚拟环境
点击下载已经打包好的虚拟环境demoEnv,将其放到Anaconda安装目录下的envs中,无需解压。比如D:\Anaconda3\envs:
放入之后可以在anaconda prompt或者pycharm终端中输入:
conda info --envs,如果显示有demoEnv则成功导入虚拟环境:
三、配置数据集
数据集已经打包上传至OneDrive,下载数据集CUB-Bird,替换代码项目的data文件夹:
四、开始运行
最终配置好的项目结构如下:
其中code/cfg里的yml文件存放模型的一些参数,code/miscc文件夹存放模型的选项和工具函数,DAMSM是深度注意多模态相似模块,dataset用于处理数据和加载dataloader,main是项目的入口文件,model是模型文件。
运行:
1、激活demoEnv环境:conda activate demoEnv
2、进入code目录,开始运行,模型进入训练:python main.py --cfg cfg/bird.yml
3、训练好了之后,将code/cfg/bird.yml中的B_VALIDATION 改为True,然后进入采样:python main.py --cfg cfg/bird.yml
五、结构解释
模型抛弃了以往的堆叠结构,只使用一个生成器、一个鉴别器、一个预训练过的文本编码器。
首先,从生成器开始看,生成器有两个输入:文本编码器(LSTM,用的是AttnGAN的那套)编码过后的sentence vector和从正态分布中采用的随机噪声。首先将噪声送入一个全连接层并重塑成需要的尺寸,然后经过一系列UPBlock块生成图像特征,UPBlock块包括:上采样层、残差块和DF-Block(DF-Block用于融合文本和图像特征),最后卷积层将图像特征转换为图像。
然后,分析鉴别器,鉴别器使用一系列DownBlock将图像转换为图像特征,然后把图像特征与sentence vector相连接,然后经过OneWay Output块计算对抗损失(包括视觉真实性和语义一致性)
创新:
- 提出了一种新的单级文本到图像主干,可以直接合成高分辨率图像,而不需要不同生成器之间的纠缠。
- 提出了一种由匹配感知梯度惩罚(MA-GP)和单向输出组成的目标感知鉴别器。它在不引入额外网络的情况下显著增强了文本图像的语义一致性。
- 提出了一种新的深度文本图像融合块(DFBlock),它能更有效、更深入地融合文本和视觉特征。
不足:
- 模型抛弃了AttnGAN以来提出的单词级信息,只引入了句子级的文本信息,这限制了细粒度视觉特征合成的能力
- 模型使用的text encoder仍然是AttnGAN中的encoder。若引入预先训练过的大型语言模型来提供额外的知识可能会进一步提高性能。
最后
💖 个人简介:人工智能领域研究生,目前主攻文本生成图像(text to image)方向
🎉 支持我:点赞👍+收藏⭐️+留言📝
如果这篇文章帮助到你很多,希望能点击下方打赏我一杯可乐!多加冰哦