| 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
```console 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
console
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
```console 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
```console mkdir -p ./data/anime
rsync --verbose --recursive rsync://176.9.41.242:873/biggan/portraits/ ./data/anime/original_imgs ```
process the data
console
python ./scripts/remove_black_edge.py
Run (support multi-GPU)
training on CelebA
console
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
console
CUDA_VISIBLE_DEVICES=0,1 \
python train.py \
--img_dir ./data/anime/remove_black_edge_imgs \
--experiment_name Anime
testing
console
CUDA_VISIBLE_DEVICES=0 \
python test_traversal_all_dims.py \
--experiment_name CelebA
loss visualization
console
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)
console
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}
}
$ claude mcp add EigenGAN-Tensorflow \
-- python -m otcore.mcp_server <graph>