/Awesome-GANs

Awesome Generative Adversarial Networks with tensorflow

Primary LanguagePythonMIT LicenseMIT

Awesome-GANs with Tensorflow

Tensorflow implementation of GANs (Generative Adversarial Networks)

Awesome License: MIT Language grade: Python

WIP : This repo is about to be refactored & supporting tf 2.x.

Maybe some of the codes wouldn't work on master branch, because i'm just working on the branch.

Environments

Because of the image and model size, (especially BEGAN, SRGAN, StarGAN, ... using high resolution images as input), if you want to train them comfortably, you need a GPU which has more than 8GB.

But, of course, the most of the implementations use MNIST or CIFAR-10, 100 DataSets. Meaning that we can handle it with EVEN lower spec GPU than 'The Preferred' :).

Usage

Now on refactoring... All GAN training script can be run module-wisely like below. (WIP)

Install dependencies

You can also use conda, virtualenv environments.

$ python3 -m pip install -r requirements.txt

Train GANs

Before running the model, make sure that

  1. downloading the dataset like CelebA, MNIST, etc what you want
  2. In awesome_gans/config.py, there are several configurations, customize with your flavor!
  3. running the model like below
$ python3 -m awesome_gans.acgan

DataSets

Supporting datasets are ... (code is in /awesome_gans/datasets.py)

  • MNIST / Fashion MNIST
  • CIFAR10 / 100
  • CelebA/CelebA-HQ
  • Pix2Pix
  • DIV2K
  • (more DataSets will be added soon!)

Repo Tree

│
├── awesome_gans (source codes & eplainations & results & models) 
│        │
│        ├── acgan
│        │    ├──gen_img (generated images)
│        │    │     ├── train_xxx.png
│        │    │     └── train_xxx.png
│        │    ├── model  (pre-trained model file)
│        │    │     └── model.txt (google-drive link)
│        │    ├── __init__.py
│        │    ├── __main__.py
│        │    ├── model.py (gan model)
│        │    ├── train.py (gan trainer)
│        │    ├── gan_tb.png   (tensorboard loss plot)
│        │    └── readme.md    (results & explainations)
│        ├── config.py         (configurations)
│        ├── modules.py        (networks & operations)
│        ├── utils.py          (auxiliary utils)
│        ├── image_utils.py    (image processing)
│        └── datasets.py       (dataset loader)
├── CONTRIBUTING.md
├── Makefile   (for linting the codes)
├── LICENSE
├── README.md  (Usage & GAN paper list-up)
└── requirements.txt

Pre-Trained Models

Here's a google drive link. You can download pre-trained models from here

Papers & Codes

Here's the list-up for tons of GAN papers. all papers are sorted by alphabetic order.

Start

Here's the beginning of the GAN.

Name Summary Paper Code
GAN Generative Adversarial Networks [arXiv] [code]

Theory & Concept

Here for the theories & concepts of the GAN.

Name Summary Paper Code
ACGAN Auxiliary Classifier Generative Adversarial Networks [arXiv] [code]
AdaGAN Boosting Generative Models [arXiv] [code]
bCR Improved Consistency Regularization for GANs [arXiv] [code]
BEGAN Boundary Equilibrium Generative Adversarial Networks [arXiv] [code]
BGAN Boundary-Seeking Generative Adversarial Networks [arXiv] [code]
BigGAN Large Scale GAN Training for High Fidelity Natural Image Synthesis [arXiv] [code]
CGAN Conditional Generative Adversarial Networks [arXiv] [code]
CoGAN Coupled Generative Adversarial Networks [arXiv] [code]
DCGAN Deep Convolutional Generative Adversarial Networks [arXiv] [code]
DRAGAN On Convergence and Stability of Generative Adversarial Networks [arXiv] [code]
EBGAN Energy-based Generative Adversarial Networks [arXiv] [code]
f-GAN Training Generative Neural Samplers using Variational Divergence Minimization [arXiv] [code]
GP-GAN Towards Realistic High-Resolution Image Blending [arXiv] [code]
Softmax GAN Generative Adversarial Networks with Softmax [arXiv] [code]
GAP Generative Adversarial Parallelization [arXiv] [code]
GEGAN Generalization and Equilibrium in Generative Adversarial Networks [arXiv] [code]
G-GAN Geometric GAN [arXiv] [code]
InfoGAN Interpretable Representation Learning by Information Maximizing Generative Adversarial Networks [arXiv] [code]
LAPGAN Laplacian Pyramid Generative Adversarial Networks [arXiv] [code]
LSGAN Loss-Sensitive Generative Adversarial Networks [arXiv] [code]
MAGAN Margin Adaptation for Generative Adversarial Networks [arXiv] [code]
MRGAN Mode Regularized Generative Adversarial Networks [arXiv] [code]
MSGGAN Multi-Scale Gradients for Generative Adversarial Networks [arXiv] [code]
PGGAN Progressive Growing of GANs for Improved Quality, Stability, and Variation [arXiv] [code]
RaGAN The relativistic discriminator: a key element missing from standard GAN [arXiv] [code]
SeAtGAN Self-Attention Generative Adversarial Networks [arXiv] [code]
SphereGAN Sphere Generative Adversarial Network Based on Geometric Moment Matching [CVPR2019] [code]
SGAN Stacked Generative Adversarial Networks [arXiv] [code]
SGAN++ Realistic Image Synthesis with Stacked Generative Adversarial Networks [arXiv] [code]
SinGAN Learning a Generative Model from a Single Natural Image [arXiv] [code]
StableGAN Stabilizing Adversarial Nets With Prediction Methods [arXiv] [code]
StyleGAN A Style-Based Generator Architecture for Generative Adversarial Networks [arXiv] [code]
StyleGAN2 Analyzing and Improving the Image Quality of StyleGAN [arXiv] [code]
StyleGAN2 ADA StyleGAN2 with adaptive discriminator augmentation [arXiv] [code]
TripleGAN Triple Generative Adversarial Networks [arXiv] [code]
UGAN Unrolled Generative Adversarial Networks [arXiv] [code]
WGAN Wasserstein Generative Adversarial Networks [arXiv] [code]
WGAN-GP Improved Training of Wasserstein Generative Adversarial Networks [arXiv] [code]

Applied Vision

Here for the GAN applications on Vision domain, like image-to-image translation, image in-painting, single image super resolution , etc.

Name Summary Paper Code
3D GAN 3D Generative Adversarial Networks [MIT] [code]
CycleGAN Unpaired img2img translation using Cycle-consistent Adversarial Networks [arXiv] [code]
DAGAN Instance-level Image Translation by Deep Attention Generative Adversarial Networks [arXiv] [code]
DeblurGAN Blind Motion Deblurring Using Conditional Adversarial Networks [arXiv] [code]
DualGAN Unsupervised Dual Learning for Image-to-Image Translation [arXiv] [code]
EdgeConnect Generative Image Inpainting with Adversarial Edge Learning [arXiv] [code]
ESRGAN Enhanced Super-Resolution Generative Adversarial Networks [arXiv] [code]
FUNIT Few-Shot Unsupervised Image-to-Image Translation [arXiv] [code]
CA & GA Generative Image Inpainting w/ Contextual Attention & Gated Convolution [CVPR2018], [ICCV2019] [code]
HiFaceGAN Face Renovation via Collaborative Suppression and Replenishment [arXiv] [code]
MUNIT Multimodal Unsupervised Image-to-Image Translation [arXiv] [code]
SpAtGAN Generative Adversarial Network with Spatial Attention for Face Attribute Editing [ECCV2018] [code]
SalGAN Visual Saliency Prediction Generative Adversarial Networks [arXiv] [code]
SRGAN Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network [arXiv] [code]
StarGAN Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation [arXiv] [code]
StarGAN V2 Diverse Image Synthesis for Multiple Domains [arXiv] [code]
TecoGAN Learning Temporal Coherence via Self-Supervision for GAN-based Video Generation [arXiv] [code]
TextureGAN Controlling Deep Image Synthesis with Texture Patches [arXiv] [code]
TUNIT Rethinking the Truly Unsupervised Image-to-Image Translation [arXiv] [code]
TwinGAN Cross-Domain Translation fo Human Portraits [github] [code]
UNIT Unsupervised Image-to-Image Translation Networks [arXiv] [code]
XGAN Unsupervised Image-to-Image Translation for Many-to-Many Mappings [arXiv] [code]

Applied Audio

Here for the GAN applications on Audio domain, like wave generation, wave to wave translation, etc.

Name Summary Paper Code
AAS Adversarial Audio Synthesis [arXiv] [code]
BeatGAN Generating Drum Loops via GANs [arXiv] [code]
GANSynth Adversarial Neural Audio Synthesis [arXiv] [code]
MuseGAN Multi-track Sequential GANs for Symbolic Music Generation and Accompaniment [arXiv] [code]
SEGAN Speech Enhancement Generative Adversarial Network [arXiv] [code]
StarGAN-VC Non-parallel many-to-many voice conversion with star generative adversarial networks [arXiv] [code]
TempoGAN A Temporally Coherent, Volumetric GAN for Super-resolution Fluid Flow [arXiv] [code]
Parallel WaveGAN A fast waveform generation model based on GAN with multi-resolution spectrogram [arXiv] [code]
WaveGAN Synthesizing Audio with Generative Adversarial Networks [arXiv] [code]

Applied Others

Here for the GAN applications on other domains, like nlp, tabular, etc.

Name Summary Paper Code
AnoGAN Unsupervised Anomaly Detection with Generative Adversarial Networks [arXiv] [code]
CipherGAN Unsupervised Cipher Cracking Using Discrete GANs [github] [code]
DiscoGAN Discover Cross-Domain Generative Adversarial Networks [arXiv] [code]
eCommerceGAN A Generative Adversarial Network for E-commerce [arXiv] [code]
PassGAN A Deep Learning Approach for Password Guessing [arXiv] [code]
SeqGAN Sequence Generative Adversarial Networks with Policy Gradient [arXiv] [code]
TAC-GAN Text Conditioned Auxiliary Classifier Generative Adversarial Network [arXiv] [code]

Useful Resources

Here for the useful resources when you try to train and stable a gan model.

Name Summary Link
GAN Hacks a bunch of tips & tricks to train GAN stable github

To-Do

  1. updating worth a try GAN papers
  2. refactoring the whole codes
  3. supporting tensorflow 2.x
  4. linking to the official implementations, if not, unofficial implementations

Note

Any suggestions and PRs and issues are WELCOME :)

Author

HyeongChan Kim / @kozistr