51

GitHub - chaiyujin/glow-pytorch: pytorch implementation of openai paper "Gl...

 5 years ago
source link: https://github.com/chaiyujin/glow-pytorch
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

readme.md

Glow

This is pytorch implementation of paper "Glow: Generative Flow with Invertible 1x1 Convolutions". Most modules are adapted from the offical TensorFlow version openai/glow.

TODO

  • Glow model. The model is coded as described in original paper, some functions are adapted from offical TF version. Most modules are tested.
  • Trainer, builder and hparams loaded from json.
  • Infer after training
  • Test LU_decomposed 1x1 conv2d

Scripts

  • Train a model with
    train.py <hparams> <dataset> <dataset_root>
    
  • Generate z_delta and manipulate attributes with
    infer_celeba.py <hparams> <dataset_root> <z_dir>
    

Training result

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
  • Download pre-trained model from Dropbox

Reconstruction

Following are some samples at training phase. Row 1: reconstructed, Row 2: original.

Manipulate attribute

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):

    attr_Smiling_0.png attr_Smiling_2.png attr_Smiling_4.png attr_Smiling_6.png attr_Smiling_8.png attr_Smiling_10.png
  • manipulate Young (from negative to positive):

    attr_Young_0.png attr_Young_2.png attr_Young_4.png attr_Young_6.png attr_Young_8.png attr_Young_10.png
  • manipulate Pale_Skin (from negative to positive):

    attr_Pale_Skin_0.png attr_Pale_Skin_2.png attr_Pale_Skin_4.png attr_Pale_Skin_6.png attr_Pale_Skin_8.png attr_Pale_Skin_10.png
  • manipulate Male (from negative to positive):

    attr_Male_0.png attr_Male_2.png attr_Male_4.png attr_Male_6.png attr_Male_8.png attr_Male_10.png

Issues

There might be some errors in my codes. Please help me to figure out.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK