1 Introduction
1.1 Structure of this survey
1.2 Relevance to other surveys and significance
2 Background
2.1 Autoencoder (AE)
2.2 Variational Autoencoder (VAE)
2.3 Generative Adversarial Networks (GAN)
2.4 Glow
2.5 Vector Quantized Variational Auto Encoder-2 (VQ-VAE-2)
2.6 GAN variants
2.7 Analysis of GAN variants
3 Applications
3.1 Image domain
3.2 Audio domain
3.3 Video domain
3.4 Miscellaneous GAN applications
4 GAN training
4.1 Problems with training GAN
4.2 Analysis of GAN training obstacles
4.3 Techniques to improve GAN training
4.4 Performance analysis
5 Conclusion and future research directions