My playground for generative modeling.
The code was developed and tested under the environment:
- OS: Ubuntu 18.04.4 LTS (5.0.0-37-generic)
- CUDA 10.1.243
- NVIDIA's drivers 435.21
- Conda 4.8.3
- Python 3.7.7
- PyTorch 1.4.0
pip install -r requirements.txtAlmost all configuration is made using Hydra framework from Facebook Research.
To change various settings you can either edit .yaml files
in the config folder or pass corresponding params to the command line.
The second option is useful for quick testing.
For more information about configuration options available please visit Hydra docs.
To point the train script to your local data folder update data.root setting in the config/train_gan.yaml
or pass it as a command line argument:
python src/train_gan.py data.root=/path/to/local/dirThe are a few predefined model presets available. You can find them in the config/model folder.
Update defaults.model entry in the config/train_gan.yaml
or pass model arg with a name of preset you want to use:
python src/train_gan.py model=stylegan2/config_fDon't forget to change model resolution model.*.params.img_res and
number of classes model.*.params.num_classes according to your dataset.
Use sample.mode=random to generate randomly sampled images.
out.cols and out.rows can be used
to save many images as an image grid in a single file. If both set to 1, each image will be saved in it's own file.
python src/generate_images.py model=stylegan2/config_f sample.mode=random sample.num_images=100 \
model.G.weights=/path/to/model/state_dict \
out.dir=/path/to/save/dirChange sample.mode to style-mixing.
Use out.cols and out.rows to specify the number of images to mix.
This will produce (rows x cols) mixed images along with (rows + cols) original images, used
as a source for style mixing.
sample.num_images setting will be ignored (subject to change).
python src/generate_images.py model=stylegan2/config_f sample.mode='style-mixing' \
out.cols=8 out.rows=3 \
model.G.weights=/path/to/model/state_dict \
out.dir=/path/to/save/dirYou can find other settings in config/generate_images.yaml.
Launch distributed training on GPUs:
python -m torch.distributed.launch --nproc_per_node=2 --use_env src/train_gan.pyIt's important to run torch.distributed.launch with --use_env,
otherwise hydra will yell
at you for passing unrecognized arguments.
Some parts of this work are derivatives and as such they are licensed under the same license terms as the original work. See corresponding README.md for details:
@article{Karras2019stylegan2,
title = {Analyzing and Improving the Image Quality of {StyleGAN}},
author = {Tero Karras and Samuli Laine and Miika Aittala and Janne Hellsten and Jaakko Lehtinen and Timo Aila},
journal = {CoRR},
volume = {abs/1912.04958},
year = {2019},
}