Deepfakes: finalmente enganamos as máquinas

filipeguelber
bawilabs
Published in
6 min readMay 10, 2018

Este artigo é baseado no original: https://hackernoon.com/exploring-deepfakes-20c9947c22d9

Deepfake é um portmanteau dedeep learning” e “fake”. Basicamente, é utilizar deeplearning para criar um conteúdo fake. O nome foi usado como um perfil para postar vídeos explícitos (pra surpresa de ninguém) de celebridades no Reddit (ainda sem surpresa).

A ideia do artigo é explicar a técnica usada para a criação desses vídeos e lançar propostas de um uso melhor que vão além dos possíveis danos a inocentes, propagação de fake news e danificar para sempre a credibilidade de evidências em vídeo.

Vamos começar!

Para exemplificar usaremos dois Jô Soares gringos: Jimmy Fallon and John Oliver.

Felizmente existe um repositório no Github que contém o código original do DeepFake, inclusive com algumas melhorias. O uso é simples mas ainda existe o trabalho de coletar e preparar os dados de treinamento.

Para facilitar ainda mais, vamos utilizar outro repositório, que tem um script que trabalha diretamente com vídeos do YouTube. Ele coleta e pré-processa todos os dados necessários. (Kudos for Gaurav Oberoi).

Resultado: Jimmy Fallon transformando-se em John Oliver

Os vídeos abaixo foram gerados treinando o modelo com aproximadamente 15k imagens do rosto de cada um (30k imagens no total). Os rostos foram obtidos de 6 a 8 vídeos do YouTube com duração de 3 a 5 minutos cada, com 20 frames por segundo, e filtrando apenas aqueles frames que mostravam faces. Tudo foi feito automaticamente, bastando somente especificar uma lista de urls do YouTube.

O tempo total de treinamento foi 72h em uma NVIDIA GTX 1080 TI GPU. A fase de treinamento é limitada pela GPU, mas os downloads dos vídeos e tratamento dos frames podem ser paralelizados.

Embora tenha utilizado milhares de imagens para cada pessoa, era possível fazer um trabalho decente com 300 imagens. Mas, como as imagens foram obtidas a partir de vídeos, foi muito fácil conseguir várias delas para o treinamento.

Embora não seja perfeito, o resultado é bastante convincente.

Desvendando o segredo

A parte principal do código do Deepfake é um autoencoder, um deep neural network que aprende como tratar uma entrada e comprimí-la em uma representação menor, o “encoding”, e então regerar a entrada original a partir desse enconding.

Colocar um gargalo no meio, força a rede a recriar essas imagens ao invés de apenas retornar o que ela “vê”. O processo de encoding ajuda ao capturar padrões, por exemplo, como desenhar a sobrancelha do Jimmy Fallon.

Deepfake vai um pouco além por ter um encoder para comprimir uma face em um encoding e dois decoders, um para recriar o Fallon e outra para recriar o Oliver.

Acima pode-se perceber como os 3 componentes são treinados:

  1. Passamos uma imagem destorcida de Fallon para o encoder e tentamos reconstruir a face dele com o decoder A (do próprio Fallon). Isso força o decoder A a aprender como criar o rosto do Fallon a partir de uma entrada ruidosa.
  2. Usando o mesmo encoder, passamos a imagem destorcida do rosto do Oliver e tentamos reconstruí-la usando o decoder B (do próprio Oliver).
  3. Vamos fazendo isso até que os dois decoders possam criar suas respectivas faces e o encoder tenha aprendido como “capturar a essência do rosto”, sendo ele do Fallon ou do Oliver.

Limitações

Embora os resultados sejam bons, temos algumas limitações:

  • Somente funciona se existirem várias imagens do alvo: necessita-se de 300 a 2000 imagens do rosto de uma pessoa para que a rede possa aprender a recriá-lo e consiga colocá-lo em um vídeo. Esse número depende de quão variados os rostos são e o quão próximos do vídeo original as faces estão (considerando posição, orientação do rosto, iluminação etc). Assim, pode funcionar bem para celebridades ou qualquer um com muitas fotos online.
  • Construir o modelo pode ser caro: levou 48h para ter resultados OK e 72h para obter esses demonstrados cima. Com a hora de GPU custando em média $0.50 isso custaria $36 somente para construir o modelo para um par de pessoas.
  • Os modelo são exclusivos para um par de pessoas: não é possível aproveitar o treinamento de uma par para treinar outro o que faz com que o custo seja efetivamente por par de pessoas.
  • Reusar modelos reduz o tempo de treinamento e por conseguinte o custo: se você usa um modelo Fallen-para-Oliver para converter, por exemplo, Jimmi Kimmels para John Oliver, os resultados serão um pouco piores. Entretanto, se você treinar um novo modelo com imagens de Kimmel e Oliver, mas começar com o modelo Fallen-para-Oliver já treinado, este novo treinamento demoraria 20–50% do tempo.

Naturalmente, são problemas que podem resolvidos com maior pesquisa sobre o assunto.

E da pra usar comercialmente ?

Produção de conteúdo em vídeo

Se eles puderem criar bons vídeos com essa técnica, ela irá mudar a demanda por editores que atualmente fazem esse trabalho complexo de edição.

Outra hipótese é filmar vídeos com atores desconhecidos e então sobrepor com a face das celebridades. O mesmo poderia ser aplicado para o caso de dublês de cenas perigosas, por exemplo.

Em cenários ainda mais hipotéticos, os estúdios poderiam modificar os atores baseado no mercado alvo, colocando um rosto oriental ao exibir um filme na China, por exemplo.

O Netflix poderia oferecer a opção de escolher os atores, antes de apertar o play.

Atores aposentados ou mortos poderiam continuar gerando receita licenciando o seu rosto para outros vídeos.

Social Apps

Apps que alteram o rosto ou trocam faces já fazem bastante sucesso. A chance de fazer isso com uma qualidade ainda maior certamente seria o novo hit dentre os apps sociais. Além disso a criação de expressões e novas aparências a partir de um rosto tem grande chance de sucesso.

Licenciar o rosto das celebridades

Celebridades poderiam licenciar o rosto para ser usado em manequins para vendas on-line, por exemplo.

Anúncios personalizados

Imagine ver um anúncio com o seu rosto no lugar do modelo? Ou sua família ou amigos em um anúncio de restaurante, festa ou outro tipo de diversão?

Crianças poderiam ver o seu rosto relacionando-se com os personagens que mais gosta, transformando a interação delas em algo ainda mais imersivo.

Conclusão

Não se pode negar que a abordagem dos encoders e o resultado obtido foram muito bons. Resta agora saber qual o rumo a tecnologia irá tomar e entender que a questão está muito mais na intenção do autor do que na ferramenta em si.

--

--