f: 😒 → 😄
This repository contains Tensorflow implementations of some models dealing with image translation. Here they are applied to the problem of facial attribute editing (e.g. smile to non-smile and vice versa). Some models can only handle one attribute at a time and some can handle multiple.
For dataset split on a given feature. (Expected by CycleGAN, etc).
$ python -m smile.data.prepare.create_dataset --dataset-dir datasets/celeb --split-attribute SmilingFor dataset with attributes included in Tfrecords. (Expected by AttGAN, etc).
$ python -m smile.data.prepare.create_dataset --dataset-dir datasets/celeb --include-attributes$ python -m smile.models.cyclegan.train \
--x-train datasets/celeb/tfrecords/smiling/train/* \
--x-test datasets/celeb/tfrecords/smiling/test/* \
--y-train datasets/celeb/tfrecords/not_smiling/train/* \
--y-test datasets/celeb/tfrecords/not_smiling/test/*See more results and commands to recreate
$ python -m smile.models.attgan.train \
--train-tfrecords datasets/celeb/tfrecords/all_attributes/train/* \
--test-tfrecords datasets/celeb/tfrecords/all_attributes/test/* \
--considered-attributes Smiling Male Mustache Blond_HairSee more results and commands to recreate
$ python -m smile.models.stargan.train \
--train-tfrecords datasets/celeb/tfrecords/all_attributes/train/* \
--test-tfrecords datasets/celeb/tfrecords/all_attributes/test/* \
--considered-attributes Smiling Male Mustache Blond_HairSee more results and commands to recreate
$ python -m smile.models.unit.train \
--x-train datasets/celeb/tfrecords/smiling/train/* \
--x-test datasets/celeb/tfrecords/smiling/test/* \
--y-train datasets/celeb/tfrecords/not_smiling/train/* \
--y-test datasets/celeb/tfrecords/not_smiling/test/* \
--adversarial_loss lsganSee more results and commands to recreate
| On | Off | |
|---|---|---|
| 5_o_Clock_Shadow | 0.111 | 0.889 |
| Arched_Eyebrows | 0.267 | 0.733 |
| Attractive | 0.513 | 0.487 |
| Bags_Under_Eyes | 0.205 | 0.795 |
| Bald | 0.022 | 0.978 |
| Bangs | 0.152 | 0.848 |
| Big_Lips | 0.241 | 0.759 |
| Big_Nose | 0.235 | 0.765 |
| Black_Hair | 0.239 | 0.761 |
| Blond_Hair | 0.148 | 0.852 |
| Blurry | 0.051 | 0.949 |
| Brown_Hair | 0.205 | 0.795 |
| Bushy_Eyebrows | 0.142 | 0.858 |
| Chubby | 0.058 | 0.942 |
| Double_Chin | 0.047 | 0.953 |
| Eyeglasses | 0.065 | 0.935 |
| Goatee | 0.063 | 0.937 |
| Gray_Hair | 0.042 | 0.958 |
| Heavy_Makeup | 0.387 | 0.613 |
| High_Cheekbones | 0.455 | 0.545 |
| Male | 0.417 | 0.583 |
| Mouth_Slightly_Open | 0.483 | 0.517 |
| Mustache | 0.042 | 0.958 |
| Narrow_Eyes | 0.115 | 0.885 |
| No_Beard | 0.835 | 0.165 |
| Oval_Face | 0.284 | 0.716 |
| Pale_Skin | 0.043 | 0.957 |
| Pointy_Nose | 0.277 | 0.723 |
| Receding_Hairline | 0.08 | 0.92 |
| Rosy_Cheeks | 0.066 | 0.934 |
| Sideburns | 0.057 | 0.943 |
| Smiling | 0.482 | 0.518 |
| Straight_Hair | 0.208 | 0.792 |
| Wavy_Hair | 0.32 | 0.68 |
| Wearing_Earrings | 0.189 | 0.811 |
| Wearing_Hat | 0.048 | 0.952 |
| Wearing_Lipstick | 0.472 | 0.528 |
| Wearing_Necklace | 0.123 | 0.877 |
| Wearing_Necktie | 0.073 | 0.927 |
| Young | 0.774 | 0.226 |
- Add gif of progress samples.
- Add evaluation method based on classifier of identities? sort of like inception score
- CycleGAN
- AttGAN
- UNIT (bad results, needs work)
- StarGAN
- Augmented CycleGAN
- Sparsely Grouped GAN
- Fusion GAN
- DiscoGAN
- MUNIT
- XGAN
- DTN
- Spectral normalization
- Progressive growing utility
- Attention mechanism, see self-attention GAN
- Facial landmarks as supervision
- https://github.com/yingcong/Facelet_Bank
- Simultaneous vs alternating gradient descent.
- TTUR
- Standardize architecture for comparisons. Densenet, resnet, unet.
- Try other upsampling methods, see some checkerboarding sometimes. Or tune kernel sizes / strides.
- Docker for reproducing.
- Add terraform/cloudformation scripts for cloud resource management.
- Option to download dataset (and read from) cloud storage.