This repository contains the official PyTorch implementation for the paper: SofGAN: A Portrait Image Generator with Dynamic Styling. We propose a SofGAN image generator to decouple the latent space of portraits into two subspaces: a geometry space and a texture space. Experiments on SofGAN show that our system can generate high quality portrait images with independently controllable geometry and texture attributes.
git clone https://github.com/apchenstu/sofgan.git --recursive conda install pytorch==1.7.1 torchvision==0.8.2 cudatoolkit=10.2 -c pytorch pip install tqdm argparse scikit-image lmdb config-argparse dlib
Please see each subsection for training on different datasets. Available training datasets:
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 --master_port=9999 train.py \ --num_worker 4 --resolution 1024 --name $exp_name --iter 10000000 --batch 1 --mixing 0.9 \ path/to/your/image/folders \ --condition_path path/to/your/segmap/folders
In our experiments, 4x Nividia 2080Ti GPU would take around
20 days to reach
10000k iterations. Adjusting the image resolution and max iterations to suit your own dataset. Emperically, for datasets like FFHQ and CelebA(resolution
1024x1024) the network would converge after
1000k iterations and achieve fancy results.
Notice: training on none pair-wise data (image/segmap) is encouraged. Since it's one of the key features of our SofGAN.
We provide a rendering script in
renderer.ipynb, where you can restyle your own photos, videos and generate free-viewpoint portrait images while maintaining the geometry consistency.
Just to download our checkpoints and unzip to the root folder.
The Painter is included in
Painter, you can pull down and drawing on-the-fly.
Before that, you need to install the enviroment with
pip install -r ./Painter/requirements.txt