AttGAN: Facial Attribute Editing by Only Changing What You Want \ Zhenliang He1,2, Wangmeng Zuo4, Meina Kan1, Shiguang Shan1,3, Xilin Chen1 \ 1Key Lab of Intelligent Information Processing, Institute of Computing Technology, CAS, China \ 2University of Chinese Academy of Sciences, China \ 3CAS Center for Excellence in Brain Science and Intelligence Technology, China \ 3School of Computer Science and Technology, Harbin Institute of Technology, China
Other implementations of AttGAN
AttGAN-PyTorch by Yu-Jing Lin
AttGAN-PaddlePaddle by ceci3 and zhumanyu (AttGAN is one of the official reproduced models of PaddlePaddle)
Closely related works
An excellent work built upon our code - STGAN (CVPR 2019) by Ming Liu
Changing-the-Memorability (CVPR 2019 MBCCV Workshop) by acecreamu
Fashion-AttGAN (CVPR 2019 FSS-USAD Workshop) by Qing Ping
An unofficial demo video of AttGAN by 王一凡
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, Black_Hair, Blond_Hair, Brown_Hair, Bushy_Eyebrows, Eyeglasses, Male, Mouth_Slightly_Open, Mustache, No_Beard, Pale_Skin, Young
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
img_celeba.7z (move to ./data/img_celeba/img_celeba.7z): Google Drive or Baidu Netdisk (password rp0s)
annotations.zip (move to ./data/img_celeba/annotations.zip): Google Drive
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
alternative trained weights (move to ./output/*.zip)
AttGAN_128.zip (987.5MB)
AttGAN_128_generator_only.zip (161.5MB)
AttGAN_384_generator_only.zip (91.1MB)
unzip the file (AttGAN_128.zip for example)
unzip ./output/AttGAN_128.zip -d ./output/
testing (see above)
Example for Custom Dataset
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},}