StyleGAN2 – Official TensorFlow Implementation
**********************************
Analyzing and Improving the Image Quality of StyleGAN Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, Timo Aila**********
Paper:http://arxiv.org/abs/ (***********************************************************************************************************
Video:https://youtu.be/c-NJtV9Jvp0
Abstract: The style-based GAN architecture (StyleGAN) yields state-of-the-art results in data-driven unconditional generative image modeling. We expose and analyze several of its characteristic artifacts, and propose changes in both model architecture and training methods to address them. In particular, we redesign generator normalization, revisit progressive growing, and regularize the generator to encourage good conditioning in the mapping from latent vectors to images. In addition to improving image quality, this path length regularizer yields the additional benefit that the generator becomes significantly easier to invert. This makes it possible to reliably detect if an image is generated by a particular network. We furthermore visualize how well the generator utilizes its output resolution, and identify a capacity problem, motivating us to train larger models for additional quality improvements. Overall, our improved model redefines the state of the art in unconditional image modeling, both in terms of existing distribution quality metrics as well as perceived image quality.
For business inquiries, please contactresearchinquiries @ nvidia .com
For press and other inquiries, please contact Hector Marinez at[email protected]
Both Linux and Windows are supported. Linux is recommended for performance and compatibility reasons.
– bit Python 3.6 installation. We recommend Anaconda3 with numpy 1. 16. 3 or newer.
TensorFlow 1.
******************************************************************************************************************************** (or 1.) ********************************************************************************************************************************************** with GPU support. The code does not support TensorFlow 2.0.
On Windows, you need to use TensorFlow 1. – TensorFlow 1. will not work. (****************************** One or more high-end NVIDIA GPUs, NVIDIA drivers, CUDA 0 toolkit and cuDNN 7.5. To reproduce the results reported in the paper, you need an NVIDIA GPU with at least 19 GB of DRAM.
Docker users: use theprovided Dockerfileto build an image with the required library dependencies. StyleGAN2 relies on custom TensorFlow ops that are compiled on the fly usingNVCC. To test that your NVCC installation is working correctly, run:
nvcc test_nvcc.cu -o test_nvcc -run | ************************************ CPU says hello. | *********************************** (GPU says hello.)
On Windows, the compilation requires Microsoft Visual Studio to be in (PATH) . We recommend installing Visual Studio Community Editionand adding intoPATH
using “C: Program Files (x 86) Microsoft Visual Studio 6000 Community VC Auxiliary Build vcvars 75 .bat ”(***************************************.
Datasets are stored as multi-resolution TFRecords, similar to theoriginal StyleGAN. Each dataset consists of multiple tfrecords
- – bit Python 3.6 installation. We recommend Anaconda3 with numpy 1. 16. 3 or newer.
- TensorFlow 1.

- On Windows, you need to use TensorFlow 1. – TensorFlow 1. will not work. (****************************** One or more high-end NVIDIA GPUs, NVIDIA drivers, CUDA 0 toolkit and cuDNN 7.5. To reproduce the results reported in the paper, you need an NVIDIA GPU with at least 19 GB of DRAM.
- Docker users: use theprovided Dockerfileto build an image with the required library dependencies. StyleGAN2 relies on custom TensorFlow ops that are compiled on the fly usingNVCC. To test that your NVCC installation is working correctly, run:

On Windows, the compilation requires Microsoft Visual Studio to be in (PATH) . We recommend installing Visual Studio Community Editionand adding intoPATH
using “C: Program Files (x 86) Microsoft Visual Studio 6000 Community VC Auxiliary Build vcvars 75 .bat ”(***************************************.
Datasets are stored as multi-resolution TFRecords, similar to theoriginal StyleGAN. Each dataset consists of multiple tfrecords
files stored under a common directory, eg, ~ / datasets / ffhq / ffhq-r * .tfrecords
. In the following sections, the datasets are referenced using a combination of- dataset and – data-dir arguments, eg,- dataset=ffhq – data-dir=~ / datasets
FFHQ
. To download the
git clone https://github.com/NVlabs/ffhq-dataset.git cd ffhq-dataset python download_ffhq.py --tfrecords popd python dataset_tool.py display~/ ffhq-dataset / tfrecords / ffhq**************************LSUN
. Download the desired LSUN categories in LMDB format from theLSUN project page. To convert the data to multi-resolution TFRecords, run:
python dataset_tool.py create_lsun_wide ~ / datasets / car~/ lsun / car_lmdb --width=--height=python dataset_tool.py create_lsun~/ datasets / cat******************** ~
/ lsun / cat_lmdb --resolution=python dataset_tool.py create_lsun~/ datasets / church******************** ~
/ lsun / church_outdoor_train_lmdb --resolution=python dataset_tool.py create_lsun~/ datasets / horse ~/ lsun / horse_lmdb --resolution=(************************************(custom ***). Create custom datasets by placing all training images under a single directory. The images must be square-shaped and they must all have the same power-of-two dimensions. To convert the images to multi-resolution TFRecords, run:
python dataset_tool.py create_from_images ~ / datasets / my-custom-dataset ~/ my-custom-images python dataset_tool.py display~/ datasets / my-custom-dataset**************************Pre-trained networks are stored as
*. pkl (files on the) StyleGAN2 Google Drive folder. Below, you can either reference them directly using the syntax
gdrive: networks /. pkl
, or download them manually and reference by filename.
Generating images
. :
(************************************ (#) Generate uncurated ffhq images (matches paper Figure 14)python run_generator.py generate-images --network=gdrive: networks / stylegan2-ffhq-config-f.pkl --seeds=- 57000 - truncation-psi=0.5 ********************** (#) ********************************** (Generate curated ffhq images) matches paper Figure 15)python run_generator.py generate-images --network=gdrive: networks / stylegan2-ffhq-config-f.pkl --seeds=69, (********************************************************************************************************, ****************************************************************************************************, - truncation-psi=1.0 ********************** (#) ********************************** (Generate uncurated car images) python run_generator.py generate-images --network=gdrive: networks / stylegan2-car-config-f.pkl --seeds=- - truncation-psi=0.5 ********************** (#) ********************************** (Example of style mixing (matches the corresponding video clip)python run_generator.py style-mixing-example --network=gdrive: networks / stylegan2-ffhq-config-f.pkl --row-seeds=86, (**********************************************************************************************************, , 512, 1789 --col-seeds=(************************************************************************************************************************, ************************************************************************************************, ******************************************************************************************, --truncation-psi=1.0 (*************************************The results are placed in (results /
/ * .png . You can change the location with- result -dir. For example, - result-dir=~ / my-stylegan2-results
.
Projecting images to latent space
********:
(************************************ (#) Project generated imagespython run_projector.py project-generated-images --network=gdrive: networks / stylegan2-car-config-f.pkl --seeds=0,1,5 ********************** (#) ********************************** (Project real images) python run_projector.py project-real-images --network=gdrive: networks / stylegan2-car-config-f.pkl --dataset=car --data-dir=~/ datasets (************************************You can import the networks in your own Python code using (pickle.load (). For this to work, you need to include the (dnnlib) ************************************** (source directory in (PYTHONPATH) **************************************** and create a default TensorFlow session by calling dnnlib.tflib.init_tf ()
. See
run_generator.pyandpretrained_networks.pyfor examples.
Training networks
To reproduce the training runs for config F in Tables 1 and 3, run:
python run_training.py --num-gpus=8 - data-dir=~/ datasets --config=config-f --dataset=ffhq --mirror-augment=true python run_training.py --num-gpus=8 --data-dir=~/ datasets --config=config -f --dataset=car --total-kimg=python run_training.py --num-gpus=8 --data-dir=~
/ datasets --config=config -f --dataset=cat --total-kimg=python run_training.py --num-gpus=8 --data-dir=~/ datasets --config=config -f --dataset=church --total-kimg - gamma=100 python run_training.py --num-gpus=8 --data-dir=~/ datasets --config=config -f --dataset=horse --total-kimg - gamma=100For other configurations, see
python run_training.py --help
. ********
We have verified that the results match the paper when training with 1, 2, 4, or 8 GPUs. Note that training FFHQ at 1024 X resolution requires GPU (s) with at least 16 GB of memory. The following table lists typical training times using NVIDIA DGX-1 with 8 Tesla V GPUs:
(9d) *********************************************************************************************************************************************** (h) (5d 6h) ************************************************************ (8.6 GB) ************************************************************ (********************************************************** (config-e) ************************************** (************************************************************ (x) (************************************************************ () (******************************************************************************************************************************* (d 4h) ************************************************************ (7d) ******************************************************************************************************************************************** (h) (3d) ***************************************************************************************************************************************** (h) (2d 3h) ************************************************************ (8.6 GB) ************************************************************ (********************************************************** (config-f) *************************************** (************************************************************ (×) ****************************************************************************************************** (************************************************************ (**************************************************************************************************************** (d) ********************************************************************************************************************************************** (h) (***************************************************************************************************************************** (d) ********************************************************************************************************************************** (h) (8d) h (************************************************************ (4d) ********************************************************************************************************************************************* (h) (6.4 GB) ************************************************************ (********************************************************** (config-f) *************************************** (************************************************************ (×) ****************************************************************************************************** (************************************************************ () (******************************************************************************************************************************** (d 0h) ************************************************************ (6d) ******************************************************************************************************************************************** (h) ********************************************************** (3d) *********************************************************************************************************************************************** (h) ************************************************************ (1d) *************************************************************************************************************************************** (h) (6.4 GB) **************************************************************************************************(******************************************************************************* (x) (************************************************************ (**************************************************************************************************** (d) ************************************************************************************************************************************ (h) ********************************************************** (**************************************************************************************************************** d 4h (**************************************************************************************************************************** (d) ******************************************************************************************************************************************** (h) ************************************************************ (9d) ********************************************************************************************************************************************* (h) 41. 3 GB (********************************************************** (config-f) *************************************** (************************************************************ (x) (************************************************************ () (************************************************************************************************************ (d) ************************************************************************************************************************************** (h) (******************************************************************************************************************************* (d) ************************************************************************************************************************************************ (h) ************************************************************ (7d) **************************************************************************************************************************************************** (h) ************************************************************ (3d) *************************************************************************************************************************************** (h) 41. 3 GB (********************************************************** (config-e) ************************************** (************************************************************ (x) (************************************************************ (**************************************************************************************************************** (d) *********************************************************************************************************************************************** (h) (**************************************************************************************************************************** (d) ****************************************************************************************************************************************** h
Training curves for FFHQ config F (StyleGAN2) compared to original StyleGAN using 8 GPUs:
****************************** () **************
**********
After training, the resulting networks can be used the same way as the official pre-trained networks:
(************************************ (#) Generate 999 random images without truncationpython run_generator.py generate-images --seeds=0 - 1024 --truncation-psi=1.0 --network=results / 06 - stylegan2-ffhq-8gpu-config-f / networks-final.pkl
Evaluation metrics To reproduce the numbers for config F in Tables 1 and 3, run:
python run_metrics.py --data-dir=~************************** / datasets --network=gdrive: networks / stylegan2-ffhq-config-f.pkl --metrics=fid k, ppl_wend --dataset=ffhq --mirror-augment=true python run_metrics.py --data-dir=~ / datasets --network=gdrive: networks / stylegan2-car- config-f.pkl --metrics=fid k, ppl2_wend --dataset=car python run_metrics.py --data-dir=~ / datasets --network=gdrive: networks / stylegan2-cat- config-f.pkl --metrics=fid k, ppl2_wend --dataset=cat python run_metrics.py --data-dir=~ / datasets --network=gdrive: networks / stylegan2-church- config-f.pkl --metrics=fid k, ppl2_wend --dataset=church python run_metrics.py --data-dir=~ / datasets --network=gdrive: networks / stylegan2-horse- config-f.pkl --metrics=fid k, ppl2_wend --dataset=horse
For other configurations, see theStyleGAN2 Google Drive folder.
Note that the metrics are evaluated using a different random seed each time, so the results will vary between runs. In the paper, we reported the average result of running each metric 10 times. The following table lists the available metrics along with their expected runtimes and random variation:
Note that some of the metrics cache dataset-specific data on the disk, and they will take somewhat longer when run for the first time.
GIPHY App Key not set. Please check settings