The original code address
https://github.com/hwalsuklee/tensorflow-generative-model-collections
tensorflow-generative-model-collections
Tensorflow implementation of various GANs and VAEs.
Pytorch version
Pytorch Version is now availabel at https://github.com/znxlwm/pytorch-generative-model-collections
Project progress
It's adapted to the cifar10, celebA. Details can be reached via email.
Generative Adversarial Networks (GANs)
Lists
Name | Paper Link | Value Function |
---|---|---|
GAN | Arxiv | |
LSGAN | Arxiv | |
WGAN | Arxiv | |
WGAN-GP | Arxiv | |
DRAGAN | Arxiv | |
CGAN | Arxiv | |
infoGAN | Arxiv | |
ACGAN | Arxiv | |
EBGAN | Arxiv | |
BEGAN | Arxiv | |
VAE_GAN | Arxiv | to be add |
SAGAN | Arxiv |
Variants of GAN structure
Results for mnist
Network architecture of generator and discriminator is the exaclty sames as in infoGAN paper.
For fair comparison of core ideas in all gan variants, all implementations for network architecture are kept same except EBGAN and BEGAN. Small modification is made for EBGAN/BEGAN, since those adopt auto-encoder strucutre for discriminator. But I tried to keep the capacity of discirminator.
The following results can be reproduced with command:
python main.py --dataset mnist --gan_type <TYPE> --epoch 25 --batch_size 64
Random generation
All results are randomly sampled.
Name | Epoch 2 | Epoch 10 | Epoch 25 |
---|---|---|---|
GAN | |||
LSGAN | |||
WGAN | |||
WGAN-GP | |||
DRAGAN | |||
EBGAN | |||
BEGAN | |||
VAE_GAN | |||
SAGAN |
Conditional generation
Each row has the same noise vector and each column has the same label condition.
Name | Epoch 1 | Epoch 10 | Epoch 25 |
---|---|---|---|
CGAN | |||
ACGAN | |||
infoGAN |
InfoGAN : Manipulating two continous codes
Results for fashion-mnist
Comments on network architecture in mnist are also applied to here.
Fashion-mnist is a recently proposed dataset consisting of a training set of 60,000 examples and a test set of 10,000 examples. Each example is a 28x28 grayscale image, associated with a label from 10 classes. (T-shirt/top, Trouser, Pullover, Dress, Coat, Sandal, Shirt, Sneaker, Bag, Ankle boot)
The following results can be reproduced with command:
python main.py --dataset fashion-mnist --gan_type <TYPE> --epoch 40 --batch_size 64
Random generation
All results are randomly sampled.
Name | Epoch 1 | Epoch 20 | Epoch 40 |
---|---|---|---|
GAN | |||
LSGAN | |||
WGAN | |||
WGAN-GP | |||
DRAGAN | |||
EBGAN | |||
BEGAN | |||
VAE_GAN | to be add | ||
SAGAN |
Conditional generation
Each row has the same noise vector and each column has the same label condition.
Name | Epoch 1 | Epoch 20 | Epoch 40 |
---|---|---|---|
CGAN | |||
ACGAN | |||
infoGAN |
Without hyper-parameter tuning from mnist-version, ACGAN/infoGAN does not work well as compared with CGAN.
ACGAN tends to fall into mode-collapse.
infoGAN tends to ignore noise-vector. It results in that various style within the same class can not be represented.
InfoGAN : Manipulating two continous codes
Some results for celebA or cifar10
(to be added)
Variational Auto-Encoders (VAEs)
Lists
Name | Paper Link | Loss Function |
---|---|---|
VAE | Arxiv | |
CVAE | Arxiv | |
DVAE | Arxiv | (to be added) |
AAE | Arxiv | (to be added) |
Variants of VAE structure
Results for mnist
Network architecture of decoder(generator) and encoder(discriminator) is the exaclty sames as in infoGAN paper. The number of output nodes in encoder is different. (2x z_dim for VAE, 1 for GAN)
The following results can be reproduced with command:
python main.py --dataset mnist --gan_type <TYPE> --epoch 25 --batch_size 64
Random generation
All results are randomly sampled.
Name | Epoch 1 | Epoch 10 | Epoch 25 |
---|---|---|---|
VAE | |||
GAN |
Results of GAN is also given to compare images generated from VAE and GAN. The main difference (VAE generates smooth and blurry images, otherwise GAN generates sharp and artifact images) is cleary observed from the results.
Conditional generation
Each row has the same noise vector and each column has the same label condition.
Name | Epoch 1 | Epoch 10 | Epoch 25 |
---|---|---|---|
CVAE | |||
CGAN |
Results of CGAN is also given to compare images generated from CVAE and CGAN.
Learned manifold
The following results can be reproduced with command:
python main.py --dataset mnist --gan_type VAE --epoch 25 --batch_size 64 --dim_z 2
Please notice that dimension of noise-vector z is 2.
Name | Epoch 1 | Epoch 10 | Epoch 25 |
---|---|---|---|
VAE |
Results for fashion-mnist
Comments on network architecture in mnist are also applied to here.
The following results can be reproduced with command:
python main.py --dataset fashion-mnist --gan_type <TYPE> --epoch 40 --batch_size 64
Random generation
All results are randomly sampled.
Name | Epoch 1 | Epoch 20 | Epoch 40 |
---|---|---|---|
VAE | |||
GAN |
Results of GAN is also given to compare images generated from VAE and GAN.
Conditional generation
Each row has the same noise vector and each column has the same label condition.
Name | Epoch 1 | Epoch 20 | Epoch 40 |
---|---|---|---|
CVAE | |||
CGAN |
Results of CGAN is also given to compare images generated from CVAE and CGAN.
Learned manifold
The following results can be reproduced with command:
python main.py --dataset fashion-mnist --gan_type VAE --epoch 25 --batch_size 64 --dim_z 2
Please notice that dimension of noise-vector z is 2.
Name | Epoch 1 | Epoch 10 | Epoch 25 |
---|---|---|---|
VAE |
Results for celebA
(We are building, GAN has been adapted)
Folder structure
The following shows basic folder structure.
├── main.py # gateway
├── data
│ ├── mnist # mnist data (not included in this repo)
│ | ├── t10k-images-idx3-ubyte.gz
│ | ├── t10k-labels-idx1-ubyte.gz
│ | ├── train-images-idx3-ubyte.gz
│ | └── train-labels-idx1-ubyte.gz
│ └── fashion-mnist # fashion-mnist data (not included in this repo)
│ ├── t10k-images-idx3-ubyte.gz
│ ├── t10k-labels-idx1-ubyte.gz
│ ├── train-images-idx3-ubyte.gz
│ └── train-labels-idx1-ubyte.gz
├── GAN.py # vainilla GAN
├── ops.py # some operations on layer
├── utils.py # utils
├── logs # log files for tensorboard to be saved here
└── checkpoint # model files to be saved here
Training Tips
Use SGD for discriminator and ADAM for generator prepare a new model
Acknowledgements
This implementation has been based on this repository and tested with Tensorflow over ver1.0 on Windows 10 and Ubuntu 14.04.
GANs Summary
- 3D-GAN - Learning a Probabilistic Latent Space of Object Shapes via 3D Generative-Adversarial Modeling (github)
- 3D-IWGAN - Improved Adversarial Systems for 3D Object Generation and Reconstruction (github)
- 3D-RecGAN - 3D Object Reconstruction from a Single Depth View with Adversarial Learning (github)
- ABC-GAN - ABC-GAN: Adaptive Blur and Control for improved training stability of Generative Adversarial Networks (github)
- AC-GAN - Conditional Image Synthesis With Auxiliary Classifier GANs
- acGAN - Face Aging With Conditional Generative Adversarial Networks
- AdaGAN - AdaGAN: Boosting Generative Models
- AE-GAN - AE-GAN: adversarial eliminating with GAN
- AEGAN - Learning Inverse Mapping by Autoencoder based Generative Adversarial Nets
- AffGAN - Amortised MAP Inference for Image Super-resolution
- AL-CGAN - Learning to Generate Images of Outdoor Scenes from Attributes and Semantic Layouts
- ALI - Adversarially Learned Inference
- AlignGAN - AlignGAN: Learning to Align Cross-Domain Images with Conditional Generative Adversarial Networks
- AM-GAN - Activation Maximization Generative Adversarial Nets
- AnoGAN - Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery
- ARAE - Adversarially Regularized Autoencoders for Generating Discrete Structures (github)
- ARDA - Adversarial Representation Learning for Domain Adaptation
- ARIGAN - ARIGAN: Synthetic Arabidopsis Plants using Generative Adversarial Network
- ArtGAN - ArtGAN: Artwork Synthesis with Conditional Categorial GANs
- b-GAN - Generative Adversarial Nets from a Density Ratio Estimation Perspective
- Bayesian GAN - Deep and Hierarchical Implicit Models
- Bayesian GAN - Bayesian GAN
- BCGAN - Bayesian Conditional Generative Adverserial Networks
- BEGAN - BEGAN: Boundary Equilibrium Generative Adversarial Networks
- BGAN - Binary Generative Adversarial Networks for Image Retrieval (github)
- BiGAN - Adversarial Feature Learning
- BS-GAN - Boundary-Seeking Generative Adversarial Networks
- C-RNN-GAN - C-RNN-GAN: Continuous recurrent neural networks with adversarial training (github)
- CaloGAN - CaloGAN: Simulating 3D High Energy Particle Showers in Multi-Layer Electromagnetic Calorimeters with Generative Adversarial Networks (github)
- CAN - CAN: Creative Adversarial Networks, Generating Art by Learning About Styles and Deviating from Style Norms
- CatGAN - Unsupervised and Semi-supervised Learning with Categorical Generative Adversarial Networks
- CausalGAN - CausalGAN: Learning Causal Implicit Generative Models with Adversarial Training
- CC-GAN - Semi-Supervised Learning with Context-Conditional Generative Adversarial Networks (github)
- CDcGAN - Simultaneously Color-Depth Super-Resolution with Conditional Generative Adversarial Network
- CGAN - Conditional Generative Adversarial Nets
- CGAN - Controllable Generative Adversarial Network
- Chekhov GAN - An Online Learning Approach to Generative Adversarial Networks
- CM-GAN - CM-GANs: Cross-modal Generative Adversarial Networks for Common Representation Learning
- CoGAN - Coupled Generative Adversarial Networks
- Conditional cycleGAN - Conditional CycleGAN for Attribute Guided Face Image Generation
- constrast-GAN - Generative Semantic Manipulation with Contrasting GAN
- Context-RNN-GAN - Contextual RNN-GANs for Abstract Reasoning Diagram Generation
- Coulomb GAN - Coulomb GANs: Provably Optimal Nash Equilibria via Potential Fields
- Cramèr GAN - The Cramer Distance as a Solution to Biased Wasserstein Gradients
- crVAE-GAN - Channel-Recurrent Variational Autoencoders
- CS-GAN - Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets
- CVAE-GAN - CVAE-GAN: Fine-Grained Image Generation through Asymmetric Training
- CycleGAN - Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (github)
- D2GAN - Dual Discriminator Generative Adversarial Nets
- DAN - Distributional Adversarial Networks
- DCGAN - Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (github)
- DeliGAN - DeLiGAN : Generative Adversarial Networks for Diverse and Limited Data (github)
- DiscoGAN - Learning to Discover Cross-Domain Relations with Generative Adversarial Networks
- DistanceGAN - One-Sided Unsupervised Domain Mapping
- DM-GAN - Dual Motion GAN for Future-Flow Embedded Video Prediction
- DR-GAN - Representation Learning by Rotating Your Faces
- DRAGAN - How to Train Your DRAGAN (github)
- DSP-GAN - Depth Structure Preserving Scene Image Generation
- DTN - Unsupervised Cross-Domain Image Generation
- DualGAN - DualGAN: Unsupervised Dual Learning for Image-to-Image Translation
- Dualing GAN - Dualing GANs
- EBGAN - Energy-based Generative Adversarial Network
- ED//GAN - Stabilizing Training of Generative Adversarial Networks through Regularization
- EGAN - Enhanced Experience Replay Generation for Efficient Reinforcement Learning
- ExprGAN - ExprGAN: Facial Expression Editing with Controllable Expression Intensity
- f-GAN - f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization
- FF-GAN - Towards Large-Pose Face Frontalization in the Wild
- Fila-GAN - Synthesizing Filamentary Structured Images with GANs
- Fisher GAN - Fisher GAN
- Flow-GAN - Flow-GAN: Bridging implicit and prescribed learning in generative models
- GAMN - Generative Adversarial Mapping Networks
- GAN - Generative Adversarial Networks (github)
- GAN-CLS - Generative Adversarial Text to Image Synthesis (github)
- GAN-sep - GANs for Biological Image Synthesis (github)
- GAN-VFS - Generative Adversarial Network-based Synthesis of Visible Faces from Polarimetric Thermal Faces
- GANCS - Deep Generative Adversarial Networks for Compressed Sensing Automates MRI
- GAP - Context-Aware Generative Adversarial Privacy
- GAWWN - Learning What and Where to Draw (github)
- GeneGAN - GeneGAN: Learning Object Transfiguration and Attribute Subspace from Unpaired Data (github)
- Geometric GAN - Geometric GAN
- GMAN - Generative Multi-Adversarial Networks
- GMM-GAN - Towards Understanding the Dynamics of Generative Adversarial Networks
- GoGAN - Gang of GANs: Generative Adversarial Networks with Maximum Margin Ranking
- GP-GAN - GP-GAN: Towards Realistic High-Resolution Image Blending (github)
- GP-GAN - GP-GAN: Gender Preserving GAN for Synthesizing Faces from Landmarks
- GRAN - Generating images with recurrent adversarial networks (github)
- IAN - Neural Photo Editing with Introspective Adversarial Networks (github)
- IcGAN - Invertible Conditional GANs for image editing (github)
- ID-CGAN - Image De-raining Using a Conditional Generative Adversarial Network
- iGAN - Generative Visual Manipulation on the Natural Image Manifold (github)
- Improved GAN - Improved Techniques for Training GANs (github)
- InfoGAN - InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets (github)
- IRGAN - IRGAN: A Minimax Game for Unifying Generative and Discriminative Information Retrieval models
- IWGAN - On Unifying Deep Generative Models
- l-GAN - Representation Learning and Adversarial Generation of 3D Point Clouds
- LAGAN - Learning Particle Physics by Example: Location-Aware Generative Adversarial Networks for Physics Synthesis
- LAPGAN - Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks (github)
- LD-GAN - Linear Discriminant Generative Adversarial Networks
- LDAN - Label Denoising Adversarial Network (LDAN) for Inverse Lighting of Face Images
- LeakGAN - Long Text Generation via Adversarial Training with Leaked Information
- LeGAN - Likelihood Estimation for Generative Adversarial Networks
- LR-GAN - LR-GAN: Layered Recursive Generative Adversarial Networks for Image Generation
- LS-GAN - Loss-Sensitive Generative Adversarial Networks on Lipschitz Densities
- LSGAN - Least Squares Generative Adversarial Networks
- MAD-GAN - Multi-Agent Diverse Generative Adversarial Networks
- MAGAN - MAGAN: Margin Adaptation for Generative Adversarial Networks
- MalGAN - Generating Adversarial Malware Examples for Black-Box Attacks Based on GAN
- MaliGAN - Maximum-Likelihood Augmented Discrete Generative Adversarial Networks
- MARTA-GAN - Deep Unsupervised Representation Learning for Remote Sensing Images
- McGAN - McGan: Mean and Covariance Feature Matching GAN
- MD-GAN - Learning to Generate Time-Lapse Videos Using Multi-Stage Dynamic Generative Adversarial Networks
- MDGAN - Mode Regularized Generative Adversarial Networks
- MedGAN - Generating Multi-label Discrete Electronic Health Records using Generative Adversarial Networks
- MGAN - Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks (github)
- MGGAN - Multi-Generator Generative Adversarial Nets
- MIX+GAN - Generalization and Equilibrium in Generative Adversarial Nets (GANs)
- MMD-GAN - MMD GAN: Towards Deeper Understanding of Moment Matching Network (github)
- MMGAN - MMGAN: Manifold Matching Generative Adversarial Network for Generating Images
- MoCoGAN - MoCoGAN: Decomposing Motion and Content for Video Generation (github)
- MPM-GAN - Message Passing Multi-Agent GANs
- MuseGAN - MuseGAN: Symbolic-domain Music Generation and Accompaniment with Multi-track Sequential Generative Adversarial Networks
- MV-BiGAN - Multi-view Generative Adversarial Networks
- OptionGAN - OptionGAN: Learning Joint Reward-Policy Options using Generative Adversarial Inverse Reinforcement Learning
- ORGAN - Objective-Reinforced Generative Adversarial Networks (ORGAN) for Sequence Generation Models
- PAN - Perceptual Adversarial Networks for Image-to-Image Transformation
- PassGAN - PassGAN: A Deep Learning Approach for Password Guessing
- Perceptual GAN - Perceptual Generative Adversarial Networks for Small Object Detection
- PGAN - Probabilistic Generative Adversarial Networks
- pix2pix - Image-to-Image Translation with Conditional Adversarial Networks (github)
- PixelGAN - PixelGAN Autoencoders
- Pose-GAN - The Pose Knows: Video Forecasting by Generating Pose Futures
- PPGN - Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space
- PrGAN - 3D Shape Induction from 2D Views of Multiple Objects
- PSGAN - Learning Texture Manifolds with the Periodic Spatial GAN
- RankGAN - Adversarial Ranking for Language Generation
- RCGAN - Real-valued (Medical) Time Series Generation with Recurrent Conditional GANs
- RefineGAN - Compressed Sensing MRI Reconstruction with Cyclic Loss in Generative Adversarial Networks
- RenderGAN - RenderGAN: Generating Realistic Labeled Data
- ResGAN - Generative Adversarial Network based on Resnet for Conditional Image Restoration
- RNN-WGAN - Language Generation with Recurrent Generative Adversarial Networks without Pre-training (github)
- RPGAN - Stabilizing GAN Training with Multiple Random Projections (github)
- RTT-GAN - Recurrent Topic-Transition GAN for Visual Paragraph Generation
- RWGAN - Relaxed Wasserstein with Applications to GANs
- SAD-GAN - SAD-GAN: Synthetic Autonomous Driving using Generative Adversarial Networks
- SalGAN - SalGAN: Visual Saliency Prediction with Generative Adversarial Networks (github)
- SBADA-GAN - From source to target and back: symmetric bi-directional adaptive GAN
- SD-GAN - Semantically Decomposing the Latent Spaces of Generative Adversarial Networks
- SEGAN - SEGAN: Speech Enhancement Generative Adversarial Network
- SeGAN - SeGAN: Segmenting and Generating the Invisible
- SegAN - SegAN: Adversarial Network with Multi-scale L1 Loss for Medical Image Segmentation
- SeqGAN - SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient (github)
- SGAN - Texture Synthesis with Spatial Generative Adversarial Networks
- SGAN - Stacked Generative Adversarial Networks (github)
- SGAN - Steganographic Generative Adversarial Networks
- SimGAN - Learning from Simulated and Unsupervised Images through Adversarial Training
- SketchGAN - Adversarial Training For Sketch Retrieval
- SL-GAN - Semi-Latent GAN: Learning to generate and modify facial images from attributes
- SN-GAN - Spectral Normalization for Generative Adversarial Networks (github)
- Softmax-GAN - Softmax GAN
- Splitting GAN - Class-Splitting Generative Adversarial Networks
- SRGAN - Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
- SS-GAN - Semi-supervised Conditional GANs
- ss-InfoGAN - Guiding InfoGAN with Semi-Supervision
- SSGAN - SSGAN: Secure Steganography Based on Generative Adversarial Networks
- SSL-GAN - Semi-Supervised Learning with Context-Conditional Generative Adversarial Networks
- ST-GAN - Style Transfer Generative Adversarial Networks: Learning to Play Chess Differently
- StackGAN - StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks
- SteinGAN - Learning Deep Energy Models: Contrastive Divergence vs. Amortized MLE
- S^2GAN - Generative Image Modeling using Style and Structure Adversarial Networks
- TAC-GAN - TAC-GAN - Text Conditioned Auxiliary Classifier Generative Adversarial Network (github)
- TAN - Outline Colorization through Tandem Adversarial Networks
- TextureGAN - TextureGAN: Controlling Deep Image Synthesis with Texture Patches
- TGAN - Temporal Generative Adversarial Nets
- TP-GAN - Beyond Face Rotation: Global and Local Perception GAN for Photorealistic and Identity Preserving Frontal View Synthesis
- Triple-GAN - Triple Generative Adversarial Nets
- Unrolled GAN - Unrolled Generative Adversarial Networks (github)
- VAE-GAN - Autoencoding beyond pixels using a learned similarity metric
- VariGAN - Multi-View Image Generation from a Single-View
- VAW-GAN - Voice Conversion from Unaligned Corpora using Variational Autoencoding Wasserstein Generative Adversarial Networks
- VEEGAN - VEEGAN: Reducing Mode Collapse in GANs using Implicit Variational Learning (github)
- VGAN - Generating Videos with Scene Dynamics (github)
- VGAN - Generative Adversarial Networks as Variational Training of Energy Based Models (github)
- ViGAN - Image Generation and Editing with Variational Info Generative Adversarial Networks
- VIGAN - VIGAN: Missing View Imputation with Generative Adversarial Networks
- VRAL - Variance Regularizing Adversarial Learning
- WaterGAN - WaterGAN: Unsupervised Generative Network to Enable Real-time Color Correction of Monocular Underwater Images
- WGAN - Wasserstein GAN (github)
- WGAN-GP - Improved Training of Wasserstein GANs (github)
- WS-GAN - Weakly Supervised Generative Adversarial Networks for 3D Reconstruction
- α-GAN - Variational Approaches for Auto-Encoding Generative Adversarial Networks (github)
- Δ-GAN - Triangle Generative Adversarial Networks