Coder Social home page Coder Social logo

glsgan's Introduction

Generalized Loss-Sensitive Generative Adversarial Networks (GLS-GAN)

File: glsgan.lua

Author: Guo-Jun Qi,

[email protected]

Date: 3/6/2017

This implements a Generalized LS-GAN (GLS-GAN). For details, please refer to Appendix D in

Guo-Jn Qi. Loss-Sensitive Generative Adversarial Networks on Lipschitz Densities. arXiv:1701.06264 [pdf]

The cost function used in this GLS-GAN implementation is a leaky rectified linear unit (LeakyReLU) whose slope is set in the input opt. By default it is -1.

  • If you set slope to 0, you shall get LS-GAN;
  • If you set slope to 1.0, you shall get WGAN.
  • If you set slope to -1.0, the cost function becomes L1 cost, i.e., C(a)=|a| and the loss function L will minimize |\Delta(real, fake)+L(real)-L(fake)|. This is a very interesting case of GLS-GAN beyond the unknown class of GANs
  • In the theory we showed in the preprint, slope can be set to any value in [-\infty, 1].

Please note that the GLS-GAN is proposed as our future work in the above preprint paper, so it has NOT been carefully tested yet. Please use it at your own discretion.

Notes on tuning hyperparameters

The most important hyperparameter that has a direct impact on the performance is the opt.slope controlling the negative slope of the Leaky Linear Rectifier of the cost function. You can make a side-by-side comparison among WGAN (slope=1), LS-GAN (slope=0), and other GLS-GANs by varying opt.slope.

We compared some results generated by different slopes on celebA at An incomplete map of the GAN models.

For celebA dataset

  1. Setup and download dataset
mkdir celebA; cd celebA

Download img_align_celeba.zip from http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html under the link "Align&Cropped Images".

unzip img_align_celeba.zip; cd ..
DATA_ROOT=celebA th data/crop_celebA.lua
  1. Training the GLS-GAN
  • GLS-GAN with C(a)=|a|
DATA_ROOT=celebA dataset=folder slope=-1 th glsgan.lua
  • GLS-GAN with C(a)=a, i.e., Wasserstein GAN
DATA_ROOT=celebA dataset=folder slope=1 th glsgan.lua
  • GLS-GAN with C(a)=(a)_+, i.e., LS-GAN
DATA_ROOT=celebA dataset=folder slope=0 th glsgan.lua

For LSUN dataset

  1. Please download bedroom_train_lmdb from http://lsun.cs.princeton.edu

  2. Prepare the dataset following the instructions below

  3. Install LMDB in your system: sudo apt-get install liblmdb-dev

  4. Install torch packages: luarocks install lmdb.torch luarocks install tds

  5. Once downloading bedroom_train_lmdb, unzip the dataset and put it in a directory lsun/train

  6. Create an index file : Copy lsun_index_generator.lua to lsun/train, and run cd lsun/train DATA_ROOT=. th lsun_index_generator.lua Now you should have bedroom_train_lmdb_hashes_chartensor.t7 in lsun/train

  7. Now return to the parent direcotry of lsun, and you should be ready to run lsgan.lua: DATA_ROOT=lsun th glsgan.lua

How to display the generated images

To display images during training and generation, we will use the display package.

  • Install it with: luarocks install https://raw.githubusercontent.com/szym/display/master/display-scm-0.rockspec
  • Then start the server with: th -ldisplay.start
  • Open this URL in your browser: http://localhost:8000

Acknowledge:

  1. parts of codes are reused from DCGAN at https://github.com/Newmu/dcgan_code

glsgan's People

Contributors

guojunq avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.