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) |
#
TensorFlow implementation of EigenGAN: Layer-Wise Eigen-Learning for GANs
Schema
Manifold Perspective
#
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://176.9.41.242: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)
If you find EigenGAN useful in your research works, please consider citing:
@inproceedings{he2021eigengan,
title={EigenGAN: Layer-Wise Eigen-Learning for GANs},
author={He, Zhenliang and Kan, Meina and Shan, Shiguang},
booktitle={International Conference on Computer Vision (ICCV)},
year={2021}
}