/twin_ac

Primary LanguagePython

TAC-GAN

This repository is by Yanwu Xu and contains the PyTorch source code to reproduce the experiments in our NeurIPS2019 paper Twin Auxiliary Classifiers GAN by Mingming Gong*, Yanwu Xu*, Chunyuan Li, Kun Zhang, and Kayhan Batmanghelich†

Visualization on Mixture of Gaussian

Visualize the biased reconstruction of AC-GAN and our TAC-GAN correction to this as well as Projection-GAN.

Original TAC AC Projection

Experimemnts on real data

This implementation on cifar100 and Imagenet100 is based on pytorch of BigGAN implementation To prepare for the env for running our code. cd the repository and run

conda install pytorch torchvision cudatoolkit=10.1 -c pytorch (This should work directly)

conda env create -f environment.yml (Alternative)

Overlap MNIST with '0' '1' and '0' '2'

Cifar100 generation evaluation with Inception Score, FID and LPIPS, 32 resolution

IMANGENET1000 generated images, 128 resolution

To replicate our results of our NeuraIPS paper, do the follow:

Simulation on MOG toy data

MOG
├── MOG_visualization.ipynb - Notebook to run 1-D MOG.
├── One_Dimensional_MOG.py - Script to run 1-D MOG.
└── Two_Dimensional_MOG.py - Script to run 2-D MOG.

Experiments on real data

For the real data experiments, the code is based on pytorch BigGAN.

Training data preparation

FIrstly, you need to transfer imagenet1000 image to HDF5 file, follow the command of pytorch BigGAN implementation

Running on Cifar100 and Imagenet1000

MOG
├── TAC-BigGAN
   ├── scripts
      ├── twin_ac_launch_cifar100_ema.sh - Script to run TAC-GAN on cifar100
      ├── twin_ac_launch_BigGAN_ch64_bs256x8.sh - Script to run TAC-GAN on Imagenet1000

if you want to change the weight of auxiliary classifier, you can modify the '--AC_weight' arguments in 'twin_ac_launch_cifar100_ema.sh' script. The same for AC-GAN and Projection-GAN, change script to 'ac_launch_cifar100_ema.sh' and 'projection_launch_cifar100_ema.sh' respectively.

Citation

@article{DBLP:journals/corr/abs-1907-02690,
  author    = {Mingming Gong and
               Yanwu Xu and
               Chunyuan Li and
               Kun Zhang and
               Kayhan Batmanghelich},
  title     = {Twin Auxiliary Classifiers {GAN}},
  journal   = {CoRR},
  volume    = {abs/1907.02690},
  year      = {2019},
  url       = {http://arxiv.org/abs/1907.02690},
  archivePrefix = {arXiv},
  eprint    = {1907.02690},
  timestamp = {Mon, 08 Jul 2019 14:12:33 +0200},
  biburl    = {https://dblp.org/rec/bib/journals/corr/abs-1907-02690},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

Acknowledgments

This work was partially supported by NIH Award Number 1R01HL141813-01, NSF 1839332 Tripod+X, and SAP SE. We gratefully acknowledge the support of NVIDIA Corporation with the donation of the Titan X Pascal GPU used for this research. We were also grateful for the computational resources provided by Pittsburgh SuperComputing grant number TG-ASC170024.