text-to-image:基于 TensorFlow 的文本到图像合成项目

Text to image synthesis using thought vectors

分支1Tags0

使用思维向量实现文本到图像合成

加入聊天讨论

本项目是基于TensorFlow的实验性实现,用于从标题生成图像,使用的是SkipThought向量技术。图像由论文《生成对抗网络文本到图像合成》中提出的GAN-CLS算法合成。该实现基于优秀的TensorFlow中的DCGAN。模型架构如下图所示,蓝色条代表标题的SkipThought向量。

模型架构

图片来源:《生成对抗网络文本到图像合成》论文

系统需求

数据集

  • 执行python download_datasets.py脚本可以自动下载和解压所需的数据集和模型,这需要数GB的存储空间。
  • 目前模型在花卉数据集上训练。请从此链接下载图像并保存至Data/flowers/jpg目录下。同时从此链接下载标题,解压缩后将text_c10文件夹复制到Data/flowers目录内。
  • 按照此处说明下载预训练的SkipThought向量模型和词汇表,并将其保存在Data/skipthoughts目录下。
  • 在Data目录下创建空文件夹samples、val_samples和Models,这些将用来存放生成的图像样例和训练好的模型。

使用方法

  • 数据处理:提取花卉数据集的SkipThought向量:

    python data_loader.py --data_set="flowers"
    
  • 训练

    • 基础用法:python train.py --data_set="flowers"
    • 可选项:
      • z_dim:噪声维度,默认为100。
      • t_dim:文本特征维度,默认为256。
      • batch_size:批次大小,默认为64。
      • image_size:图像尺寸,默认为64。
      • 其余参数如gf_dim、df_dim、gfc_dim、caption_vector_length、学习率等也都有默认值。
  • 从标题生成图像

    • 将标题写入文本文件并保存为Data/sample_captions.txt,然后生成这些标题的思维向量:
    python generate_thought_vectors.py --caption_file="Data/sample_captions.txt"
    
    • 接着使用以下命令根据思维向量生成图像:
    python generate_images.py --model_path=<训练模型路径> --n_images=8
    

    参数n_images指定每个标题生成的图像数量,生成的图像将保存于Data/val_samples目录下。通过python generate_images.py --help获取更多选项。

示例生成图像

以下是根据生成模型的标题所得到的图像示例。

标题 生成图像
花朵具有黄色花药、红色雌蕊及鲜红花瓣
这种花的花瓣为黄、白、紫三色,带有深线条
此花朵的花瓣白色,中心呈黄色
这朵花有许多小而圆的粉红花瓣
这朵橙色花朵的花瓣边缘皱褶、圆形
这朵花的花瓣为黄色,中心为棕色

实现细节

  • 仅使用了SkipThought向量的单向部分,未尝试结合双向向量进行训练。
  • 在GPU上进行了大约200个周期的训练,耗时约2-3天。
  • 生成的图像尺寸为64x64。
  • 训练前处理批次时,以50%的概率对图像进行水平翻转。
  • 训练集与验证集的划分比例为0.75。

预训练模型

  • 可从这里下载预训练模型,并存放在Data/Models目录,用于生成图像。

待办事项

  • 使用MS-COCO数据集训练模型,生成更通用的图像。
  • 探索除了SkipThought向量之外的其他标题嵌入方案,尝试与GAN-CLS模型联合训练标题嵌入RNN。

参考资料

  • 《生成对抗网络文本到图像合成》论文
  • 《生成对抗网络文本到图像合成》代码
  • 《SkipThought向量》论文
  • 《SkipThought向量》代码
  • TensorFlow中的DCGAN
  • TensorLayer中的DCGAN

替代实现

  • Scot Reed的Torch版本文本到图像
  • Dong Hao的Tensorlayer版本文本到图像

许可证

MIT

项目介绍

思维向量驱动的文本到图像生成【此简介由AI生成】

定制我的领域
822.17 K398访问 GitHub