Need help with AttGAN-Tensorflow?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

LynnHo
519 Stars 121 Forks MIT License 49 Commits 1 Opened issues

Description

AttGAN: Facial Attribute Editing by Only Changing What You Want, IEEE TIP 2019

Services available

!
?

Need anything else?

Contributors list

# 46,757
tensorf...
dragan
lsgan
CSS
46 commits
# 70,471
CSS
guideli...
leanclo...
Markdow...
1 commit

News

  • 11 Jan 2020: We clean up the code to make it more readable! The old version is here: v1.


     


AttGAN
TIP Nov. 2019, arXiv Nov. 2017

TensorFlow implementation of AttGAN: Facial Attribute Editing by Only Changing What You Want.

Related

Exemplar Results

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

  • Inverting 13 attributes respectively

    from left to right: Input, Reconstruction, Bald, Bangs, BlackHair, BlondHair, BrownHair, BushyEyebrows, Eyeglasses, Male, MouthSlightlyOpen, Mustache, NoBeard, PaleSkin, Young

Usage

  • Environment

    • Python 3.6
    • TensorFlow 1.15
    • OpenCV, scikit-image, tqdm, oyaml
    • we recommend Anaconda or Miniconda, then you can create the AttGAN environment with commands below

      conda create -n AttGAN python=3.6
      
      

      source activate AttGAN

      conda install opencv scikit-image tqdm tensorflow-gpu=1.15

      conda install -c conda-forge oyaml

    • NOTICE: if you create a new conda environment, remember to activate it before any other command

      source activate AttGAN
      
  • Data Preparation

    • Option 1: CelebA-unaligned (higher quality than the aligned data, 10.2GB)

      • download the dataset

      • unzip and process the data

        7z x ./data/img_celeba/img_celeba.7z/img_celeba.7z.001 -o./data/img_celeba/
        
        

        unzip ./data/img_celeba/annotations.zip -d ./data/img_celeba/

        python ./scripts/align.py

    • Option 2: CelebA-HQ (we use the data from CelebAMask-HQ, 3.2GB)

      • CelebAMask-HQ.zip (move to ./data/CelebAMask-HQ.zip): Google Drive or Baidu Netdisk
      • unzip and process the data

        unzip ./data/CelebAMask-HQ.zip -d ./data/
        
        

        python ./scripts/split_CelebA-HQ.py

  • Run AttGAN

    • training (see examples.md for more training commands)

      \\ for CelebA
      CUDA_VISIBLE_DEVICES=0 \
      python train.py \
      --load_size 143 \
      --crop_size 128 \
      --model model_128 \
      --experiment_name AttGAN_128
      
      

      \ for CelebA-HQ CUDA_VISIBLE_DEVICES=0
      python train.py
      --img_dir ./data/CelebAMask-HQ/CelebA-HQ-img
      --train_label_path ./data/CelebAMask-HQ/train_label.txt
      --val_label_path ./data/CelebAMask-HQ/val_label.txt
      --load_size 128
      --crop_size 128
      --n_epochs 200
      --epoch_start_decay 100
      --model model_128
      --experiment_name AttGAN_128_CelebA-HQ

    • testing

      • single attribute editing (inversion)

        \\ for CelebA
        CUDA_VISIBLE_DEVICES=0 \
        python test.py \
        --experiment_name AttGAN_128
        
        

        \ for CelebA-HQ CUDA_VISIBLE_DEVICES=0
        python test.py
        --img_dir ./data/CelebAMask-HQ/CelebA-HQ-img
        --test_label_path ./data/CelebAMask-HQ/test_label.txt
        --experiment_name AttGAN_128_CelebA-HQ

      • multiple attribute editing (inversion) example

        \\ for CelebA
        CUDA_VISIBLE_DEVICES=0 \
        python test_multi.py \
        --test_att_names Bushy_Eyebrows Pale_Skin \
        --experiment_name AttGAN_128
        
      • attribute sliding example

        \\ for CelebA
        CUDA_VISIBLE_DEVICES=0 \
        python test_slide.py \
        --test_att_name Pale_Skin \
        --test_int_min -2 \
        --test_int_max 2 \
        --test_int_step 0.5 \
        --experiment_name AttGAN_128
        
    • loss visualization

      CUDA_VISIBLE_DEVICES='' \
      tensorboard \
      --logdir ./output/AttGAN_128/summaries \
      --port 6006
      
    • convert trained model to .pb file

      python to_pb.py --experiment_name AttGAN_128
      
  • Using Trained Weights

  • Example for Custom Dataset

Citation

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

@ARTICLE{8718508,
author={Z. {He} and W. {Zuo} and M. {Kan} and S. {Shan} and X. {Chen}},
journal={IEEE Transactions on Image Processing},
title={AttGAN: Facial Attribute Editing by Only Changing What You Want},
year={2019},
volume={28},
number={11},
pages={5464-5478},
keywords={Face;Facial features;Task analysis;Decoding;Image reconstruction;Hair;Gallium nitride;Facial attribute editing;attribute style manipulation;adversarial learning},
doi={10.1109/TIP.2019.2916751},
ISSN={1057-7149},
month={Nov},}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.