| 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
EigenGAN: Layer-Wise Eigen-Learning for GANs
Zhenliang He1,2, Meina Kan1,2, Shiguang Shan1,2,3
1Key Lab of Intelligent Information Processing, Institute of Computing Technology, CAS, China
2University of Chinese Academy of Sciences, China
3Peng Cheng Laboratory, China
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.6source activate EigenGANconda install opencv scikit-image tqdm tensorflow-gpu=1.15conda 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/animersync --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={IEEE International Conference on Computer Vision (ICCV)},
year={2021}
}















