This is pytorch implementation of paper "Glow: Generative Flow with Invertible 1x1 Convolutions". Most modules are adapted from the offical TensorFlow version openai/glow.
train.py <hparams> <dataset> <dataset_root>
z_delta
and manipulate attributes with
infer_celeba.py <hparams> <dataset_root> <z_dir>
Currently, I trained model for 45,000 batches with hparams/celeba.json
using CelebA dataset. In short, I trained with follwing parameters
HParam | Value |
---|---|
image_shape | (64, 64, 3) |
hidden_channels | 512 |
K | 32 |
L | 3 |
flow_permutation | invertible 1x1 conv |
flow_coupling | affine |
batch_size | 12 on each GPU, with 4 GPUs |
learn_top | false |
y_condition | false |
Following are some samples at training phase. Row 1: reconstructed, Row 2: original.
Use the method decribed in paper to calculate z_pos
and z_neg
for a given attribute.
And z_delta = z_pos - z_neg
is the direction to manipulate the original image.
manipulate Smiling
(from negative to positive):
manipulate Young
(from negative to positive):
manipulate Pale_Skin
(from negative to positive):
manipulate Male
(from negative to positive):
There might be some errors in my codes. Please help me to figure out.