T2F 结合了最近的两个架构 StackGAN 和 ProGAN,用于从文本描述中合成面部,该项目使用 Face2Text 数据集,每个数据集包含 400 个图像和文字说明。 数据包含在 data / LFW / Face2Text / face2text_v0.1 目录下的存储库中。
Github 链接:
https://github.com/akanimax/T2F
一些样例
结构
LSTM 网络能够将文本描述编码为摘要向量,图中所示的嵌入(psy_t)通过调节增强块(单个线性层)以获得 GAN 作为输入的潜在向量的文本部分(使用类似重新参数化技术的VAE)。潜在向量的第二部分是随机高斯噪声。这样产生的潜在矢量被馈送到GAN的发生器部分,而嵌入被馈送到鉴别器的最后一层用于条件分布匹配。 GAN 的训练完全按照 ProGAN 论文的说明进行,即在增加的空间分辨率下逐层训练。使用淡入技术引入新层以避免破坏先前的学习。
运行代码
代码存在于 implementation/ 子目录中,该实现已经用 PyTorch 完成。因此,为了运行此代码,请安装 PyTorch 0.4.0。
代码结构
样本配置
# All paths to different required data objects
images_dir: "../data/LFW/lfw"
processed_text_file: "processed_annotations/processed_text.pkl"
log_dir: "training_runs/11/losses/"
sample_dir: "training_runs/11/generated_samples/"
save_dir: "training_runs/11/saved_models/"
# Hyperparameters for the Model
captions_length: 100
img_dims:
- 64
- 64
# LSTM hyperparameters
embedding_size: 128
hidden_size: 256
num_layers: 3 # number of LSTM cells in the encoder network
# Conditioning Augmentation hyperparameters
ca_out_size: 178
# Pro GAN hyperparameters
depth: 5
latent_size: 256
learning_rate: 0.001
beta_1: 0
beta_2: 0
eps: 0.00000001
drift: 0.001
n_critic: 1
# Training hyperparameters:
epochs:
- 160
- 80
- 40
- 20
- 10
# % of epochs for fading in the new layer
fade_in_percentage:
- 85
- 85
- 85
- 85
- 85
batch_sizes:
- 16
- 16
- 16
- 16
- 16
num_workers: 3
feedback_factor: 7 # number of logs generated per epoch
checkpoint_factor: 2 # save the models after these many epochs
use_matching_aware_discriminator: True # use the matching aware discriminator
使用 requirements.txt 安装该项目所有的依赖。
$ workon [your virtual environment]
$ pip install -r requirements.txt
样例运行:
$ mkdir training_runs
$ mkdir training_runs/generated_samples training_runs/losses training_runs/saved_models
$ train_network.py --config=configs/11.comf