Keras implementations of Generative Adversarial Networks (GANs) suggested in research papers. If dense layers produce reasonable results for a given model I will often prefer them over convolutional layers. The reason is that I would like to enable people without GPUs to test these implementations out. These models are in some cases simplified versions of the ones ultimately described in the papers, but I have chosen to focus on getting the core ideas covered instead of getting every layer configuration right. However, because of this the results will not always be as nice as in the papers.
- Keras-GAN
- About
- Table of Contents
- Installation
- Implementations
- Auxiliary Classifier GAN
- Adversarial Autoencoder
- Bidirectional GAN
- Boundary-Seeking GAN
- Conditional GAN
- Context-Conditional GAN
- Context Encoder
- Coupled GANs
- CycleGAN
- Deep Convolutional GAN
- DiscoGAN
- DualGAN
- Generative Adversarial Network
- Improved Wasserstein GAN
- InfoGAN
- LSGAN
- Pix2Pix
- PixelDA
- Semi-Supervised GAN
- Super-Resolution GAN
- Wasserstein GAN
$ git clone https://github.com/eriklindernoren/Keras-GAN
$ cd Keras-GAN/
$ sudo pip3 install -r requirements.txt
Implementation of Auxiliary Classifier Generative Adversarial Network.
Paper: https://arxiv.org/abs/1610.09585
$ cd acgan/
$ python3 acgan.py
Implementation of Adversarial Autoencoder.
Paper: https://arxiv.org/abs/1511.05644
$ cd aae/
$ python3 aae.py
Implementation of Bidirectional Generative Adversarial Network.
Paper: https://arxiv.org/abs/1605.09782
$ cd bigan/
$ python3 bigan.py
Implementation of Boundary-Seeking Generative Adversarial Networks.
Paper: https://arxiv.org/abs/1702.08431
$ cd bgan/
$ python3 bgan.py
Implementation of Semi-Supervised Learning with Context-Conditional Generative Adversarial Networks.
Paper: https://arxiv.org/abs/1611.06430
$ cd ccgan/
$ python3 ccgan.py
Implementation of Conditional Generative Adversarial Nets.
Paper:https://arxiv.org/abs/1411.1784
$ cd cgan/
$ python3 cgan.py
Implementation of Context Encoders: Feature Learning by Inpainting.
Paper: https://arxiv.org/abs/1604.07379
$ cd context_encoder/
$ python3 context_encoder.py
Implementation of Coupled generative adversarial networks.
Paper: https://arxiv.org/abs/1606.07536
$ cd cogan/
$ python3 cogan.py
Implementation of Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks.
Paper: https://arxiv.org/abs/1703.10593
$ cd cyclegan/
$ bash download_dataset.sh apple2orange
$ python3 cyclegan.py
Implementation of Deep Convolutional Generative Adversarial Network.
Paper: https://arxiv.org/abs/1511.06434
$ cd dcgan/
$ python3 dcgan.py
Implementation of Learning to Discover Cross-Domain Relations with Generative Adversarial Networks.
Paper: https://arxiv.org/abs/1703.05192
$ cd discogan/
$ bash download_dataset.sh edges2shoes
$ python3 discogan.py
Implementation of DualGAN: Unsupervised Dual Learning for Image-to-Image Translation.
Paper: https://arxiv.org/abs/1704.02510
$ cd dualgan/
$ python3 dualgan.py
Implementation of Generative Adversarial Network with a MLP generator and discriminator.
Paper: https://arxiv.org/abs/1406.2661
$ cd gan/
$ python3 gan.py
GAN on RGB face images Code
$ cd gan/
<follow steps at the top of gan_rgb.py>
$ python3 gan_rgb.py
Implementation of Improved Training of Wasserstein GANs.
Paper: https://arxiv.org/abs/1704.00028
$ cd improved_wgan/
$ python3 improved_wgan.py
Implementation of InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets.
Paper: https://arxiv.org/abs/1606.03657
$ cd infogan/
$ python3 infogan.py
Implementation of Least Squares Generative Adversarial Networks.
Paper: https://arxiv.org/abs/1611.04076
$ cd lsgan/
$ python3 lsgan.py
Implementation of Unpaired Image-to-Image Translation with Conditional Adversarial Networks.
Paper: https://arxiv.org/abs/1611.07004
$ cd pix2pix/
$ bash download_dataset.sh facades
$ python3 pix2pix.py
Implementation of Unsupervised Pixel-Level Domain Adaptation with Generative Adversarial Networks.
Paper: https://arxiv.org/abs/1612.05424
Trains a classifier on MNIST images that are translated to resemble MNIST-M (by performing unsupervised image-to-image domain adaptation). This model is compared to the naive solution of training a classifier on MNIST and evaluating it on MNIST-M. The naive model manages a 55% classification accuracy on MNIST-M while the one trained during domain adaptation gets a 95% classification accuracy.
$ cd pixelda/
$ python3 pixelda.py
Method | Accuracy |
---|---|
Naive | 55% |
PixelDA | 95% |
Implementation of Semi-Supervised Generative Adversarial Network.
Paper: https://arxiv.org/abs/1606.01583
$ cd sgan/
$ python3 sgan.py
Implementation of Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network.
Paper: https://arxiv.org/abs/1609.04802
$ cd srgan/
<follow steps at the top of srgan.py>
$ python3 srgan.py
Implementation of Wasserstein GAN (with DCGAN generator and discriminator).
Paper: https://arxiv.org/abs/1701.07875
$ cd wgan/
$ python3 wgan.py