/GenZoo

A repository providing implementations of generative models in various frameworks.

Primary LanguagePython

Introduction

GenZoo is a repository that provides implementations of generative models in various frameworks, namely Tensorflow and Pytorch.

This will be a project taken up by VLG-IITR for the summers of 2019, done with the collaborative efforts of various students. Although in this, we majorly focus on various types of VAEs and GANs, there are many different types of generative models, and hence many different ideas that can be added in this repo. You can read more about one of them here.

How to Contribute

  • Pick up any Generative Model from the list provided below (or any other model you like).
  • Open an issue with the name as the model in order to contribute for the same. Give your name, the framework, dataset and some resources you will be following for the same.
  • We will assign that issue to you (if no one has been assigned earlier).
  • Start implementing the model you chose (by forking the repo and creating a new branch). Some further instructions are as follows:
    • Create a new folder named as your Model (if such a folder is not already present).
    • Create the following inside the folder:
      • data_loader.py - To load the required dataset.
      • model.py - To define the architecture of your model.
      • train.py - To define the training iterations of your model.
      • main.py - Main function of your implementation to call all other methods. Plot a graph showing the loss curves during the entire training process, preferably on tensorboard or tensorboardX.
      • generated_images - Folder containing sample images generated by your model.
      • model.txt - Text file containing link to your saved model on Google Drive (make sure to make the file publicly accessible).
      • Train your model using Google Colab. Refer to instructions below for tips on using it.
    • Save your model on Google Drive. For pytorch, refer this and for tensorflow, refer this.
  • Open a pull request after you finish your implementation.
  • Your implementation will be added to GenZoo once we review your pull request.

Generative Models that can be Implemented

The following are some potential generative models that can be implemented. You may also implement a generative model of your choice.

Name of Generative Model Brief Description References (if any)
Variational Autoencoders (VAE) Better performing auto-encoder with an Encoder and Decoder structure that can be used for Generative Modelling. Kingma et al.
Fully Connected GAN Generative modelling by optimizing the problem by using principles from game theory. Goodfellow et al.
Deep Convolutional GAN (DCGAN) Better performing GANs with certain specifications in their architecture. Radford et al.
Wasserstein GAN (WGAN) Generative Adversarial Network with a different loss function for better optimization. Martin Arjovsky et al.
Conditional GAN Generating images based on some prior information. Mirza et al.
Cycle GAN Unpaired image to image translation without proper paired images and labels. Jun-Yan Zhu et al.
InfoGAN A GAN that is able to learn disentangled representations in a completely unsupervised manner. Chen et al.
β-VAE A VAE that is able to learn disentangled representations in an unsupervised manner. Higgins et al.
α-GAN Generative Adversarial Network combined with an Auto-Encoder and a different training strategy. Mihaela Rosca and Balaji Lakshminarayanan et al.

Possible Datasets

Name of Dataset Brief Description Reference
MNIST Digit Recognition dataset Yann LeCun et al.
CIFAR10 Color Image Recoginition dataset Alex Krizhevsky
CelebA Large scale dataset of celebrity faces Ziwei Liu
LSUN Large Scene Understanding Fisher Yu et al.

Apart from this, you can use any other dataset you see fit to train your generative model.

Training on Google Colab

Refer to the following links to learn to train your model on Google Colab:

For Pytorch

For Tensorflow