Gender | Bangs | Body Side | Pose (Yaw) |
---|---|---|---|
Lighting | Smile | Face Shape | Lipstick Color |
Painting Style | Pose (Yaw) | Pose (Pitch) | Zoom & Rotate |
---|---|---|---|
Flush & Eye Color | Mouth Shape | Hair Color | Hue (Orange-Blue) |
More Unsupervisedly Learned Dimensions
TensorFlow implementation of EigenGAN: Layer-Wise Eigen-Learning for GANs
Usage
-
Environment
-
Python 3.6
-
TensorFlow 1.15
-
OpenCV, scikit-image, tqdm, oyaml
-
we recommend Anaconda or Miniconda, then you can create the environment with commands below
conda create -n EigenGAN python=3.6 source activate EigenGAN 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 EigenGAN
-
-
Data Preparation
-
CelebA-unaligned (10.2GB, higher quality than the aligned data)
-
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
-
-
-
download the dataset
mkdir -p ./data/anime rsync --verbose --recursive rsync://78.46.86.149:873/biggan/portraits/ ./data/anime/original_imgs
-
process the data
python ./scripts/remove_black_edge.py
-
-
-
Run (support multi-GPU)
-
training on CelebA
CUDA_VISIBLE_DEVICES=0,1 \ python train.py \ --img_dir ./data/img_celeba/aligned/align_size(572,572)_move(0.250,0.000)_face_factor(0.450)_jpg/data \ --experiment_name CelebA
-
training on Anime
CUDA_VISIBLE_DEVICES=0,1 \ python train.py \ --img_dir ./data/anime/remove_black_edge_imgs \ --experiment_name Anime
-
testing
CUDA_VISIBLE_DEVICES=0 \ python test_traversal_all_dims.py \ --experiment_name CelebA
-
loss visualization
CUDA_VISIBLE_DEVICES='' \ tensorboard \ --logdir ./output/CelebA/summaries \ --port 6006
-
-
Using Trained Weights
-
trained weights (move to ./output/*.zip)
-
unzip the file (CelebA.zip for example)
unzip ./output/CelebA.zip -d ./output/
-
testing (see above)
-
Citation
If you find EigenGAN useful in your research works, please consider citing:
@article{he2021eigengan,
title={EigenGAN: Layer-Wise Eigen-Learning for GANs},
author={He, Zhenliang and Kan, Meina and Shan, Shiguang},
journal={arXiv:2104.12476},
year={2021}
}