progressive_infogan
progressive_infogan copied to clipboard
Progressive training of GANs with Mutual Information Penalty
Progressive InfoGAN
Progressive InfoGAN combines two techniques:
- progressive training (https://arxiv.org/abs/1710.10196), and
- InfoGAN (https://arxiv.org/abs/1606.03657).
What it does
- A Generator is trained on any unlabeled high-res dataset of images. For our experiments we use CelebA-HQ.
- After training, the Generator produces novel images, similar to those in the dataset.
- When producing an image, we can independently control its semantic feautres. In case of CelebA-HQ, semantic features include: the direction of the look, hair color, nose shape, and much more. See Summary of selected isolated features.
- Most importantly, these semantic features are discovered during training in a completely unsupervised fashion - no human input is required.
Under the hood
The InfoGAN technique was adapted to the progressive architecture of the model by splitting the structured code to parts, and feeding each part to the network by conditioning activations in the corresponding block of the Generator. You can find a detailed description of the architecture, along with quality assessment, in my Master's Thesis text (expected defense: Q4 2018).
Running
# Training:
# Fill in src/constants.py, and run
$ cd src
$ python jonasz/experiments/2018_08_28/exp_consistency_300.py
# Working with the trained Generator:
$ cd src
$ python -m jupyter notebook --port 5088
Now you can experiment with the generator in a notebook: src/jonasz/notebooks/generator.ipynb
Summary of selected isolated features
See also the animated, extended version of the summary at: https://youtu.be/U2okTa0JGZg. Some of the subtler changes are better visible when animated. For each of the features listed below, there is a link to the exact corresponding timestamp in the animation.
Smile: upper lip
Age
Look direction
Hair color
Left / right rotation
Face oval: size
Hairstyle: background size
Lower jaw size
Forward backward inclination
Mouth: open / closed
Hair: wavy / straight
Eyebrows: up / down
Nose length
Nose: upturned tip
Eyebrows shape
Vertical face stretch
Color of the irises
Shape of the nostrils
Hair texture
Lower eyelid
Wrinkles
A comprehensive list of all isolated features is at: https://youtu.be/mOckeVkM1jU.
Smile: upper lip (animation@02m43s):

Age (animation@04m22s):

Look direction (animation@03m16s):

Hair color (animation@00m06s):

Left / right rotation (animation@00m15s):

Face oval: size (animation@00m28s):

Hairstyle: background size (animation@01m08s):

Lower jaw size (animation@01m51s):

Forward / backward inclination (animation@01m41s):

Mouth: open / closed (animation@01m31s):

Hair: wavy / straight (animation@02m11s):

Eyebrows: up / down (animation@02m56s):

Nose length (animation@04m02s):

Nose: upturned tip (animation@03m52s):

Eyebrows shape (animation@03m06s):

Vertical face stretch (animation@03m32s):

Color of the irises (animation@05m07s):

Shape of the nostrils (animation@05m18s):

Hair texture (animation@06m10s):

Lower eyelid (animation@05m54s):

Wrinkles (animation@05m27s):
