A StyleGAN [1] contribuiu com algo inédito para a comunidade de Deep Learning: a capacidade de criar uma base de dados sintética e em alta definição de imagens de faces com grande diversidade de atributos desde idade e gênero até o uso de acessórios como barbas e óculos.
O gerador proposto pelos autores amostra vetores $z \in \mathbb{R}^n$ em que cada dimensão n vem de uma distribuição estatística, mais comumente a distribuição normal. Com o vetor, o gerador consegue ser treinado de forma adversária para construir imagens realistas de faces humanas.
Os autores demostraram que antes de iniciar a construção da imagem pode-se passar o vetor $z$ por um perceptron multicamadas para transformar $z$ em $w \in \mathbb{R}^n$. A vantagem de fazer isso é que o perceptron pode ser treinado junto com o gerador, e consequentemente o espaço latente $W$ aprende a representar mais realisticamente a distribuição dos atributos das images do dataset de treino.

Além disso, outra vantagem é os atributos são linearmente separáveis no espaço latente $W$. A consequência disso é que as regiões dos atributos são bem definidas, e pode-se tratar elas de forma binária (ex. homem vs mulher, novo vs velho) para poder manipular as características da face gerada, simplesmente fazendo transformações vetoriais dentro do espaço $W$.
Uma desvantagem da StyleGAN é que ela parte do vetor obtido de um conjunto de distribuições aleatórias e cria uma imagem sem controle. Seria interessante se, a partir de uma imagem qualquer, obter o vetor $W$ que faria a StyleGAN gerar essa mesma imagem.
Dada uma saída do gerador, a técnica que permite encontrar o vetor que gera aquela saída se chama Inversão de GAN (GAN Inversion). O artigo [2] mostra uma forma de treinar um encoder que gere $w$ a partir de uma imagem $i$, de forma que o gerador da StyleGAN gere novamente a imagem $i$ quando receber $w$ como entrada.
Os autores usam o próprio gerador como treinador do encoder e fazem um treinamento de forma a garantir que o domínio dos atributos não seja alterado. Eles mostram que os vetores obtidos podem ser reconstruídos corretamente pela StyleGAN e que é possível manipular as imagens simplesmente fazendo operações vetoriais, como interpolação ou mapeamento (somar ao vetor original um outro vetor que leva a posição dele para outra região do espaço latente, mudando suas características).


Fazer um primeiro teste de utilizar operações vetoriais para interpolar imagens.
Para testar isso sem perder muito tempo com ter que adaptar um código novo, eu parti do modelo de Pix2Pix que foi usado nos estudos 1 - Pix2Pix em imagens de carros e 2 - Selecionando as imagens de carro e retreinando a Pix2Pix. O dataset utilizado foi o CelebAHQ
Primeiramente, para obter um Encoder que transformasse as imagens em vetores que carregassem suas características, eu treinei um modelo de Pix2Pix como um Autoencoder. Ou seja, a mesma imagem que era alimentada ao gerador como um input, era também enviada ao discriminador como um target. O gerador utilizado foi um U-Net [3], que faz sucessivas convoluções na imagem até reduzi-la a um vetor, e depois reconstrói a imagem utilizando convoluções inversas.