Counting 3,039 Big Data & Machine Learning Frameworks, Toolsets, and Examples...
Suggestion? Feedback? Tweet @stkim1

Author
Last Commit
Aug. 16, 2018
Created
May. 6, 2018

         

AttGAN

Tensorflow implementation of AttGAN - Arbitrary Facial Attribute Editing: Only Change What You Want

Exemplar Results

  • See results.md for more results, we try higher resolution and more attributes (all 40 attributes!!!) here

  • Inverting 13 attributes respectively

    from left to right: Input, Reconstruction, Bald, Bangs, Black_Hair, Blond_Hair, Brown_Hair, Bushy_Eyebrows, Eyeglasses, Male, Mouth_Slightly_Open, Mustache, No_Beard, Pale_Skin, Young

  • Comparisons with VAE/GAN and IcGAN on inverting single attribute

  • Comparisons with VAE/GAN and IcGAN on simultaneously inverting multiple attributes

Usage

  • Prerequisites

    • Tensorflow 1.7 or 1.8
    • Python 2.7 or 3.6
  • Dataset

  • Well-trained models: download the models you need and unzip the files to ./output/ as below,

    output
    ├── 128_shortcut1_inject1_none
    └── 384_shortcut1_inject1_none_hd
    
  • Examples of training

    • see examples.md for more examples

    • training

      • for 128x128 images

        CUDA_VISIBLE_DEVICES=0 \
        python train.py \
        --img_size 128 \
        --shortcut_layers 1 \
        --inject_layers 1 \
        --experiment_name 128_shortcut1_inject1_none
      • for 384x384 images

        CUDA_VISIBLE_DEVICES=0 \
        python train.py \
        --img_size 384 \
        --enc_dim 48 \
        --dec_dim 48 \
        --dis_dim 48 \
        --dis_fc_dim 512 \
        --shortcut_layers 1 \
        --inject_layers 1 \
        --n_sample 24 \
        --experiment_name 384_shortcut1_inject1_none
      • for 384x384 HD images (need HD-Celeba)

        CUDA_VISIBLE_DEVICES=0 \
        python train.py \
        --img_size 384 \
        --enc_dim 48 \
        --dec_dim 48 \
        --dis_dim 48 \
        --dis_fc_dim 512 \
        --shortcut_layers 1 \
        --inject_layers 1 \
        --n_sample 24 \
        --use_cropped_img \
        --experiment_name 384_shortcut1_inject1_none_hd
    • tensorboard for loss visualization

      CUDA_VISIBLE_DEVICES='' \
      tensorboard \
      --logdir ./output/128_shortcut1_inject1_none/summaries \
      --port 6006
  • Example of testing single attribute

    CUDA_VISIBLE_DEVICES=0 \
    python test.py \
    --experiment_name 128_shortcut1_inject1_none \
    --test_int 1.0
  • Example of testing multiple attributes

    CUDA_VISIBLE_DEVICES=0 \
    python test_multi.py \
    --experiment_name 128_shortcut1_inject1_none \
    --test_atts Pale_Skin Male \
    --test_ints 0.5 0.5
  • Example of attribute intensity control

    CUDA_VISIBLE_DEVICES=0 \
    python test_slide.py \
    --experiment_name 128_shortcut1_inject1_none \
    --test_att Male \
    --test_int_min -1.0 \
    --test_int_max 1.0 \
    --n_slide 10

Citation

If you find AttGAN useful in your research work, please consider citing:

@article{he2017arbitrary,
  title={Arbitrary Facial Attribute Editing: Only Change What You Want},
  author={He, Zhenliang and Zuo, Wangmeng and Kan, Meina and Shan, Shiguang and Chen, Xilin},
  journal={arXiv preprint arXiv:1711.10678},
  year={2017}
}