
Figura 1: Sequências de edições de imagem realizadas usando o controle descoberto com nosso método, aplicado a três Gans diferentes. As inserções brancas especificam as edições específicas usando a notação explicada na Seção 3.4 ('edições de camada em camada').
Ganspace: descobrindo controles interpretáveis de GaN
Erik Härkönen 1,2 , Aaron Hertzmann 2 , Jaakko Lehtinen 1,3 , Sylvain Paris 2
1 Universidade Aalto, 2 Adobe Research, 3 Nvidia
https://arxiv.org/abs/2004.02546Resumo: Este artigo descreve uma técnica simples para analisar redes adversárias generativas (GANs) e criar controles interpretáveis para a síntese de imagem, como mudança de ponto de vista, envelhecimento, iluminação e hora do dia. Identificamos instruções latentes importantes com base na análise de componentes principais (PCA) aplicada no espaço de ativação. Em seguida, mostramos que as edições interpretáveis podem ser definidas com base na aplicação de camadas dessas direções de edição. Além disso, mostramos que o Biggan pode ser controlado com entradas em camadas de maneira semelhante ao estilo de estilo. Um usuário pode identificar um grande número de controles interpretáveis com esses mecanismos. Demonstramos resultados em GANs de vários conjuntos de dados.
Vídeo: https://youtu.be/jdticda_eai
Veja as instruções de configuração.
Esse repositório inclui versões de Biggan, Stylegan e Stylegan2 modificadas para suportar vetores latentes por camada.
Exploração do modelo interativo
# Explore BigGAN-deep husky
python interactive.py --model=BigGAN-512 --class=husky --layer=generator.gen_z -n=1_000_000
# Explore StyleGAN2 ffhq in W space
python interactive.py --model=StyleGAN2 --class=ffhq --layer=style --use_w -n=1_000_000 -b=10_000
# Explore StyleGAN2 cars in Z space
python interactive.py --model=StyleGAN2 --class=car --layer=style -n=1_000_000 -b=10_000
# Apply previously saved edits interactively
python interactive.py --model=StyleGAN2 --class=ffhq --layer=style --use_w --inputs=out/directions
Visualize os principais componentes
# Visualize StyleGAN2 ffhq W principal components
python visualize.py --model=StyleGAN2 --class=ffhq --use_w --layer=style -b=10_000
# Create videos of StyleGAN wikiart components (saved to ./out)
python visualize.py --model=StyleGAN --class=wikiart --use_w --layer=g_mapping -b=10_000 --batch --video
Opções
Command line paramaters:
--model one of [ProGAN, BigGAN-512, BigGAN-256, BigGAN-128, StyleGAN, StyleGAN2]
--class class name; leave empty to list options
--layer layer at which to perform PCA; leave empty to list options
--use_w treat W as the main latent space (StyleGAN / StyleGAN2)
--inputs load previously exported edits from directory
--sigma number of stdevs to use in visualize.py
-n number of PCA samples
-b override automatic minibatch size detection
-c number of components to keep
Todas as figuras apresentadas no papel principal podem ser recriadas usando os notebooks Jupyter incluídos:
figure_teaser.ipynbfigure_pca_illustration.ipynbfigure_pca_cleanup.ipynbfigure_style_content_sep.ipynbfigure_supervised_comp.ipynbfigure_biggan_style_resampling.ipynbfigure_edit_zoo.ipynb models/wrappers.py usando a interface BaseModel .get_model() em models/wrappers.py . É possível importar pesos de estilo treinado e stylegan2 do tensorflow para o Ganspace.
conda install tensorflow-gpu=1.* .__init__() , load_model() em models/wrappers.py em Stylegan.checkpoints/stylegan2/<dataset>_<resolution>.pt .__init__() , download_checkpoint() em models/wrappers.py em classe stylegan2. Gostaríamos de agradecer:
@inproceedings{härkönen2020ganspace,
title = {GANSpace: Discovering Interpretable GAN Controls},
author = {Erik Härkönen and Aaron Hertzmann and Jaakko Lehtinen and Sylvain Paris},
booktitle = {Proc. NeurIPS},
year = {2020}
}
O código deste repositório é liberado sob a licença Apache 2.0.
O diretório netdissect é um derivado do projeto de dissecção GaN e é fornecido sob a licença do MIT.
Os models/biggan e models/stylegan2 são fornecidos sob a licença do MIT.