Triangle-GAN

October 30, 2017 · View on GitHub

This is an implemtation for NIPS paper: Triangle Generative Adversarial Networks

1. Experiments Settings:

1. Running environment:

tensorflow 1.1.0, python 2.7;

2. Dataset Format

For domain transfer and classification task, CelebA and MSCOCO dataset need to be in HDF5 format;

For semi-supervised learning tasks, please see here

3. Resources

For domain transfer and classification task: If you want to re-run the CelebA experiment, the feature can be downloaded here: CelebA tag features

2. Basic Model:

Here's is our model:

alt text

The value function for TriGAN model:

alt text The objective of Δ\Delta-GAN is to match the three joint distributions: p(x,y)p(x, y), px(x,y)p_x(x, y) and py(x,y)p_y(x, y). If this is achieved, we are ensured that we have learned a bidirectional mapping px(xy)p_x(x|y) and py(yx)p_y(y|x) that guarantees the generated fake data pairs (x^,y)(\hat{x}, y) and (x,y^)(x, \hat{y}) are indistinguishable from the true data pairs (x,y)(x, y). In order to match the joint distributions, an adversarial game is played. Joint pairs are drawn from three distributions: p(x,y)p(x, y), px(x,y)p_x(x, y) or py(x,y)p_y(x, y), and two discriminator networks are learned to discriminate among the three, while the two conditional generator networks are trained to fool the discriminators.

3. Compare with simplified Triple GAN:

alt text

figure (a): the joint distribution p(x,y)p(x,y) of real data.

figure (b): Δ\Delta-GAN left: the joint distribution px(x,y)p_x(x,y); right: the joint distribution py(x,y)p_y(x,y).

figure (c): Tirple GAN without regularization terms left: the joint distribution px(x,y)p_x(x,y); right: the joint distribution py(x,y)p_y(x,y).

4. Results

1. conditional generated CIFAR images:

alt text

2. MSCOCO:

1. generated COCO

alt text

2. COCO to attributes to COCO

alt text

3. CelebA tasks:

1. faces to attributes to faces

alt text

2. face editting

alt text