Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
## Progressive Growing of GANs for Improved Quality, Stability, and Variation
## Progressive Growing of GANs for Improved Quality, Stability, and Variation<br><i>&mdash; Official Theano implementation of the ICLR 2018 paper</i>
**Tero Karras** (NVIDIA), **Timo Aila** (NVIDIA), **Samuli Laine** (NVIDIA), **Jaakko Lehtinen** (NVIDIA and Aalto University)

![Representative image](https://raw.githubusercontent.com/tkarras/progressive_growing_of_gans/master/representative_image_512x256.png)
* For business inquiries, please contact **[researchinquiries@nvidia.com](mailto:researchinquiries@nvidia.com)**
* For press and other inquiries, please contact Hector Marinez at **[hmarinez@nvidia.com](mailto:hmarinez@nvidia.com)**

![Representative image](https://raw.githubusercontent.com/tkarras/progressive_growing_of_gans/original-theano-version/representative_image_512x256.png)
<br>
**Picture:** Two imaginary celebrities that were dreamed up by a random number generator.

**Abstract:**
<br>
*We describe a new training methodology for generative adversarial networks. The key idea is to grow both the generator and discriminator progressively: starting from a low resolution, we add new layers that model increasingly fine details as training progresses. This both speeds the training up and greatly stabilizes it, allowing us to produce images of unprecedented quality, e.g., CelebA images at 1024�. We also propose a simple way to increase the variation in generated images, and achieve a record inception score of 8.80 in unsupervised CIFAR10. Additionally, we describe several implementation details that are important for discouraging unhealthy competition between the generator and discriminator. Finally, we suggest a new metric for evaluating GAN results, both in terms of image quality and variation. As an additional contribution, we construct a higher-quality version of the CelebA dataset.*
*We describe a new training methodology for generative adversarial networks. The key idea is to grow both the generator and discriminator progressively: starting from a low resolution, we add new layers that model increasingly fine details as training progresses. This both speeds the training up and greatly stabilizes it, allowing us to produce images of unprecedented quality, e.g., CelebA images at 1024<sup>2</sup>. We also propose a simple way to increase the variation in generated images, and achieve a record inception score of 8.80 in unsupervised CIFAR10. Additionally, we describe several implementation details that are important for discouraging unhealthy competition between the generator and discriminator. Finally, we suggest a new metric for evaluating GAN results, both in terms of image quality and variation. As an additional contribution, we construct a higher-quality version of the CelebA dataset.*

## Note about versions

This branch contains the **original Theano-based implementation** that we used to produce the results in our paper. Unless you are looking to reproduce the exact same set of experiments, we strongly suggest checking out our [new TensorFlow-based implementation](https://github.com/tkarras/progressive_growing_of_gans/tree/master) instead.

## Links

* [Paper (NVIDIA research)](http://research.nvidia.com/publication/2017-10_Progressive-Growing-of)
* [Paper (arXiv)](http://arxiv.org/abs/1710.10196)
* [Result video (YouTube)](https://youtu.be/XOxxPcy5Gr4)
* [One hour of imaginary celebrities (YouTube)](https://youtu.be/36lE9tV9vm0)
* [Pre-trained networks (Google Drive)](https://drive.google.com/open?id=0B4qLcYyJmiz0NHFULTdYc05lX0U)
* [Result video (YouTube)](https://youtu.be/G06dEcZ-QTg)
* [Pre-trained networks (Google Drive)](https://drive.google.com/drive/folders/0B4qLcYyJmiz0NHFULTdYc05lX0U?resourcekey=0-3SXNvbPCamZoHWDlmdJToQ&usp=sharing)

## Datasets

Expand All @@ -39,7 +45,7 @@ usage: h5tool.py [-h] <command> ...
Type "h5tool.py <command> -h" for more information.
```

The ```create_*``` commands take the original dataset as input and produce the corresponding HDF5 file as output. Additionally, the ```create_celeba_hq``` command requires a set of data files representing deltas from the original CelebA dataset. The deltas can be downloaded from [Google Drive (27.6GB)](https://drive.google.com/open?id=0B4qLcYyJmiz0TXY1NG02bzZVRGs).
The ```create_*``` commands take the original dataset as input and produce the corresponding HDF5 file as output. Additionally, the ```create_celeba_hq``` command requires a set of data files representing deltas from the original CelebA dataset. The deltas can be downloaded from [Google Drive (27.6GB)](https://drive.google.com/drive/folders/0B4qLcYyJmiz0TXY1NG02bzZVRGs?resourcekey=0-arAVTUfW9KRhN-irJchVKQ&usp=sharing).

## License

Expand All @@ -66,5 +72,3 @@ We have tested the implementation on the following system:
* Pillow 3.1.1, libjpeg8d
* numpy 1.13.1, scipy 0.19.1, h5py 2.7.0
* moviepy 0.2.3.2, cryptography 2.0.3, opencv 2.4.11, lmdb 0.92

We are planning to add support for TensorFlow and multi-GPU in the near future.
3 changes: 1 addition & 2 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
if 1:
run_desc = 'celeb-hq-1024x1024'
dataset = dict(h5_path='celeba-hq-1024x1024.h5', resolution=1024, max_labels=0, mirror_augment=True, max_images=30000)
train.update(lod_training_kimg=800, lod_transition_kimg=800, total_kimg=19000)

# Section 6.4: "LSUN results"
if 0:
Expand All @@ -122,8 +123,6 @@

dataset = dict(h5_path=h5_path, resolution=256, max_labels=0, mirror_augment=mirror_augment)
train.update(lod_training_kimg=800, lod_transition_kimg=800, total_kimg=20000, minibatch_overrides={})
G.update(fmap_base=4096)
D.update(fmap_base=4096)

# Section 6.1: "Importance of individual contributions in terms of statistical similarity"
if 0:
Expand Down