Skip to content

Latest commit

 

History

History
 
 

GAN

Generative Adversarial Networks

Reproduce the following GAN-related methods, 100~200 lines each:

Please see the docstring in each script for detailed usage and pretrained models. MultiGPU training is supported.

Reproduce DCGAN following the setup in dcgan.torch.

  • Generated samples

sample

  • Vector arithmetic: smiling woman - neutral woman + neutral man = smiling man

vec

Image-to-Image translation following the setup in pix2pix.

For example, with the cityscapes dataset, it learns to generate semantic segmentation map of urban scene:

im2im

This is a visualization from tensorboard. Left to right: original, ground truth, model output.

Reproduce the mnist experiement in InfoGAN. It assumes 10 latent variables corresponding to a categorical distribution, 2 latent variables corresponding to a uniform distribution. It then maximizes mutual information between these latent variables and the image, and learns interpretable latent representation.

infogan

  • Left: 10 latent variables corresponding to 10 digits.
  • Middle: 1 continuous latent variable controlled the rotation.
  • Right: another continuous latent variable controlled the thickness.

Train a simple GAN on mnist, conditioned on the class labels.

These variants are implemented by some small modifications on top of DCGAN.py. BEGAN has the best visual quality among them. Some BEGAN samples:

began-sample

Reproduce CycleGAN with the original datasets, and DiscoGAN on CelebA. They are pretty much the same idea with different architecture. CycleGAN horse-to-zebra in tensorboard:

cyclegan-sample