Fusão dos jogadores do Benfica, Porto e Sporting
No último post fizemos uma análise ao enviesamento das capas dos jornais desportivos portugueses. Hoje exploramos algo um pouco mais divertido, e aplicamos uma técnica de geração de caras aos jogadores de Benfica, Porto e Sporting.
Quem sabe se não geramos as próximas estrelas da Liga NOS?
Plantel do Benfica
Comecamos por resolver a principal lacuna do plantel do Benfica. Falamos da posição de lateral direito. Seria André Grimaldo a solução ideal para este lugar?
Já na frente de ataque, Bruno Lage conseguiu relançar a carreira de Adel Taarabt. Apesar das boas exibições recentes, uma combinação com Pizzi seria um jogador ainda melhor.
Plantel do Porto
À semelhança com o Benfica, o plantel do Porto também apresenta alguma falta de qualidade no lado direito do sector defensivo. Estou convicto que juntando a velocidade de Wilson Manafa com a técnica de Alex Telles teríamos um verdadeiro craque.
Já na frente de ataque, talvez uma combinação entre os jogadores do Porto Fábio Silva e Zé Luis trouxesse os golos que o Porto tanto precisa.
Plantel do Sporting
O jogador mais valioso do Sporting é sem dúvida Bruno Fernandes. No entanto, uma mistura com Wendel seria seguramente uma boa adição para o meio campo.
As novas contratações do Sporting para época 19/20 não têm propriamente deslumbrado. Talvez uma combinação de Jese com Bolasie se tornasse um reforço interessante.
Combinação dos plantéis de Benfica, Porto e Sporting
Num caso extremo, podíamos mesmo combinar todos os jogadores do Benfica, Porto e Sporting, criando assim uma super equipa em todas as posições…
Como são geradas as fusões das caras
Estas fusões das caras dos jogadores do Benfica, Porto e Sporting foram criadas usando um modelo chamado StyleGAN.
StyleGAN
As GANs (Generative Adversarial Networks) são modelos eficazes para a geração de imagens sintéticas de alta qualidade. Estes modelos são normalmente compostos por dois componentes:
- Gerador: rede neuronal que gera imagens (sintéticas)
- Discriminador: rede neuronal que dada uma imagem, tenta classificá-la como sendo real ou sintética (criada pelo gerador).
Estas redes neuronais são treinadas em conjunto de modo a que:
- O gerador gere imagens o mais realistas possível, capazes de enganar o discriminador
- O discriminador consiga distinguir o melhor possível quais as imagens reais (provenientes de um conjunto de imagens de treino fornecidas à partida), e quais as imagens sintéticas
As StyleGANs são uma extensão deste modelo, com alguns truques para melhorar a performance do gerador. A Figura 15 descreve a arquitectura proposta para o gerador da StyleGAN. Essencialmente, o gerador é composto por 2 redes neuronais: mapping network e synthesis network.
A mapping network é treinada para mapear ruído Gaussiano (espaço latente $z$) num outro espaço latente $w$ com múltiplas camadas, onde cada camada representa uma propriedade das imagens a serem geradas. No caso das caras, estas propriedades poderão ser o formato da cara, o penteado, cor dos olhos, etc…
Em conjunto com uma camada constante aprendida à priori, este espaço latente $w$ é depois usado pela synthesis network para gerar uma imagem sintética. Esta arquitectura permite a StyleGAN gerar caras aleatórias.
StyleGAN Encoder
Portanto, o modelo StyleGAN por si só permite-nos gerar caras aleatórias a partir de um ruído Gaussiano. No entanto, nós não queremos gerar caras aleatórias—queremos gerar caras parecidas com as fotos dos jogadores do Porto, Benfica e Sporting. Isto é possível através de uma técnica chamada StyleGAN Encoder.
Na prática, o StyleGAN Encoder aprende o inverso da synthesis network—dada uma imagem tenta construir o espaço latente $w$ associado.
O processo começa com uma estimativa do espaço latente associado $\hat{w}$. A estimativa inicial pode ser escolhida aleatoriamente (apesar de existirem métodos mais inteligentes para esta escolha). Este espaço latente estimado pode ser passado pela synthesis network, gerando uma imagem. A imagem gerada será provavelmente muito diferente da imagem real. Esta diferença é medida através de uma função de custo, a qual nos indica correcções à nossa estimativa do espaço latente.
Este processo é depois repetido com a nova estimativa do espaço latente. Em princípio, a nova imagem gerada será ligeiramente melhor do que a anterior, levando a um erro de reconstrução menor, e menos correcções a fazer.
Continuamos a repetir este processo até estarmos satisfeitos com o erro de reconstrução, e guardamos o melhor espaço latente que encontrámos. Esta arquitectura permite encontrar o espaço latente $w$ associado com uma dada cara.
Combinações de espaços latentes
Dada uma foto da cara de cada jogador, já conseguimos gerar o espaço latente $w$ associado. Agora podemos passar à parte mais divertida—misturar as caras.
Voltemos ao exemplo do Pizzi e do Bruno Fernandes. Primeiro, geramos os espaços latentes respectivos: $w_{\mathrm{pizzi}}$ e $w_{\mathrm{bruno}}$. Depois podemos explorar combinações convexas destes espaços latentes:
$$ w_{\mathrm{mistura}} = \theta w_{\mathrm{pizzi}} + (1 - \theta) w_{\mathrm{bruno}},$$ com $\theta \in [0, 1]$. Quando $\theta$ está mais próximo de 0, a cara misturada é mais parecida com o Pizzi. Em sentido inverso, quando $\theta$ está mais próximo de 1, a cara misturada é mais parecida com o Bruno Fernandes. A galeria em baixo mostra combinações diferentes.