Awesome
Latent Composition
Project Page | Paper | Bibtex
<img src='img/teaser.gif' width=300>Using latent space regression to analyze and leverage compositionality in GANs.
International Conference on Learning Representations, 2021
Lucy Chai, Jonas Wulff, Phillip Isola
Prerequisites
- Linux
- Python 3
- NVIDIA GPU + CUDA CuDNN
Table of Contents:<br>
- Colab - run it in your browser without installing anything locally<br>
- Setup - download pretrained models and resources
- Pretrained Models - quickstart with pretrained models<br>
- Notebooks - jupyter notebooks for interactive composition<br>
- Training - pipeline for training encoders<br>
Colab
- Interactive Masking Demo: Demonstrates using a masked encoder to investigate image priors in GANs.
- Interactive Composition Demo: Interface to compose multiple images using masked encoder.
- Finetune and Edit: For real images, finetune the encoder towards a specific image for better reconstruction. Further composition can be done in real time.
Setup
- Clone this repo:
git clone https://github.com/chail/latent-composition.git
- Install dependencies:
- we provide a Conda
environment.yml
file listing the dependencies. You can create a Conda environment with the dependencies using:
- we provide a Conda
conda env create -f environment.yml
- Download resources:
- we provide a script for downloading associated resources. Fetch these by running:
bash resources/download_resources.sh
<a name="pretrained"/>
Quickstart with pretrained models
Pretrained models will be automatically downloaded via PyTorch Hub. The above resources should also be downloaded via the download script for automatic collaging.
See the following code snippet for a basic example. An notebook format is provided in notebooks/quickstart.ipynb
from networks import networks
from utils import masking
nets = networks.define_nets('proggan', 'celebahq')
# proggan: celebahq, livingroom, church
# stylegan: ffhq, church, car, horse
with torch.no_grad():
im = nets.seed2image(1,seed=10)
hints, mask = masking.mask_upsample(im)
rec = nets.invert(hints, mask=mask)
<a name="notebooks"/>
Notebooks
Important: First, setup symlinks required for notebooks: bash notebooks/setup_notebooks.sh
, and add the conda environment to jupyter kernels: python -m ipykernel install --user --name latent-composition
.
We provide a few interactive examples:
notebooks/quickstart.ipynb
: basic usage examplenotebooks/interactive-masking.ipynb
: investigate GAN priors from incomplete imagesnotebooks/interactive-composition.ipynb
: compose multiple imagesnotebooks/finetune-and-edit.ipynb
: finetune the model on a real image, and then compose in real-time
Training
The following commands are examples of training a masked encoder on the church domain:
# proggan encoder
python -m training.train_pgan_encoder \
--netE_type resnet-18 --niter 5000 --lr 0.0001 --batchSize 16 \
--netG church --masked --outf <output_directory>
# stylegan encoder
python -m training.train_sgan_encoder \
--netE_type resnet-34 --niter 6800 --lr 0.0001 --batchSize 16 \
--netG church --masked --outf <output_directory>
Example commands for additional GAN domains are contained in:
training/train_pgan_encoder.sh
training/train_sgan_encoder.sh
Training progress can be visualized using:
tensorboard --logdir training/runs/
Experiments
Example commands for scripted experiment utilities are located in the experiments/
directory. Below is a short description of each script.
experiments/sample.sh
: sample and save images from the specified generatorexperiments/reencode.sh
: sample, encode, and regenerate images from the specified generatorexperiments/run_compositions.sh
: automate collage inputs using a pretrained segmenter, and invert using the encoderexperiments/metric_fid.sh
: computing FID metricsexperiments/metric_prdc.sh
: precision, recall, density, coverage metricsexperiments/metric_distance.sh
: reconstruction distances on composite images
Acknowledgements
We thank the authors of these repositories:
- Gan Seeing for GAN and visualization utilities
- StyleGAN 2 Pytorch for pytorch implementation of StyleGAN 2 and pretrained models
- Pixel2Style2Pixel for identity loss implementation
- Pytorch FID for FID implementation
Citation
If you use this code for your research, please cite our paper:
@inproceedings{chai2021latent,
title={Using latent space regression to analyze and leverage compositionality in GANs},
author={Chai, Lucy and Wulff, Jonas and Isola, Phillip},
booktitle={International Conference on Learning Representations},
year={2021}
}