Criando Faces Fakes com Redes Neurais

Carlos Tadei
3 min readAug 29, 2021

Nesse artigo vou explicar uma breve introdução de como as Deep Convolutional Generative Adversarial Networks (DCGANs) funcionam, e vamos criar imagens de faces de forma muito simples.

Uma breve introdução: Gans

Para entender as Gans, nos precisamos entender dois termos: o Gerador e o Discriminador. O primeiro e responsável por criar as imagens, ele aprende uma representação e então gera imagens similares, enquanto que o discriminador aprende a discriminar se aquela imagem e fake ou real, ele olha para a image gerada e a imagem real e classifica elas como sendo reais ou fakes.

Basicamente o nosso intuito e ‘enganar’ o discriminador, com o passar da aprendizagem nosso gerador vai ser capaz de gerar imagens fakes que são muito similares com as reais, e nosso discriminador vai classifica a imagem fake como sendo real.

https://learning.oreilly.com/api/v2/epubs/urn:orm:book:9781839213472/files/assets/949e1bc1-dfaf-4701-abc7-a700459989c5.png

O que são DCGANs ?

Diferente das Gans, as DCGANs usam redes convolucionais que de longe possuem um desempenho melhor para imagens comparado as redes neurais convencionais.

Redes Neurais Convolucionais: https://medium.com/neuronio-br/entendendo-redes-convolucionais-cnns-d10359f21184

Vamos começar :

Utilizaremos o pytorch que e muito poderoso e fácil de implementar.

Começamos importando todas as bibliotecas necessarias na implementação e também as imagens.

Nessa etapa, construímos nosso conjunto de dados, utilizando o HaarCascade para detectar as faces nas imagens, recortamos somente as faces, criamos nossa classe para processar as imagens e finalizamos utilizando o dataloader para carregar as imagens.

Download do HaarCascade: https://bityli.com/Fb9FB

Coloque o arquivo do HaarCascade e passe o path correto.

Finalmente podemos criar nossas duas redes neurais, o discriminador e o gerador:

Chegamos no treinamento, vamos treinar por apenas 25 épocas não se esqueça de disponibilizar uma GPU para o treinamento, você pode utilizar o Google Colab com uma GPU.

Aqui precisamos analisar cuidadosamente, apesar de poucas épocas o nosso erro do gerador diminuiu enquanto que do nosso discriminador aparentemente não variou muito, mas aqui nosso intuito e justamente enganar nosso discriminador, precisamos fazer o erro do gerador diminuir, com um modelo mais poderosos e mais épocas o erro do discriminador pode subir.

Criando novas faces

Conclusão:

As imagens ficaram bastante ruidosas e embasadas, as imagens estão decentes podemos ver que se trata de rostos, mas não estão muito realistas.

Código completo no Google Colab.

Fontes:

As implementações foram encontradas no livro abaixo.

--

--