Deep Fakes ao vivo — que tal entrar em uma video conferência com o rosto de outra pessoa ?!

Alessandro Cauduro
Ensina.AI
Published in
4 min readMay 28, 2018

TL; DR; O que acontece quando nos passamos por outra pessoa em tempo real? Vamos experimentar!

Deep Fakes é o nome dado a tecnologia que utiliza Deep Learning para substituir o rosto de uma pessoa pela de outra de maneira automática. Com essa tecnologia é possível criar imagens ou vídeos “fakes” que parecem ser de verdade. Por isso o termo “Deep Fakes”.

Fazendo um call com o Caio “utilizando” o rosto do “John Oliver”

Essa tecnologia veio a partir depois de experiências de pesquisadores que testavam arquiteturas auto-encoder para geração de conteúdo automático (GAN). A ideia em si é simples: para cada pessoa são treinadas duas redes neurais que codificam e que decodificam a imagem de um rosto. O pulo do gato, foi codificar o rosto da primeira pessoa com uma rede e depois decodificar essa imagem com a rede treinada no segundo rosto!

Fonte
John Oliver sendo treinado com o meu rosto

Para fazermos o treinamento é necessário uma centena de imagens do rosto de cada pessoa (quanto mais melhor) em poses diferentes (o que é relativamente fácil de se conseguir para celebridades). Para facilitar esse trabalho de coleta de imagens podemos extrair os rostos a partir de vídeos existentes. Dessa forma fica bem fácil!

Após a rede neural treinar e aprender as características de cada rosto, ela pode começar a “sonhar” como seria o rosto da outra pessoa em posições na qual ela nunca viu antes.

Treinando o meu rosto com o John Oliver

Antes de existir essa técnica, trocar o rosto ou era muito simples e utilizado em brincadeiras estilo Snapchat ou para ficar bom deveria ser feito manualmente usando Photoshop. Isso exige uma pessoa habilidosa e muito tempo, ou seja, não é nada prático para ser feito em um vídeo.

Isso mudou no começo do ano, quando o software “Deep Fakes” foi liberado anonimamente e que se baseou nas pesquisas publicadas. A partir disso qualquer pessoa com uma placa de vídeo pode experimentar e gerar os seus vídeos. Por causa disso, o assunto pegou fogo e começou a ser utilizado para usos controversos como colocar o rosto de celebridades em filmes pornôs dos quais elas jamais teriam feito! A utilização não consensual fez com que até o Reddit, que é uma comunidade super liberal, decidisse proibir o subreddit /r/deepfakes.

O segundo grande caso de uso é mais divertido: colocar o Nicolas Cage na maior quantidade de filmes possíveis :-).

Por alguma razão que não é clara, a internet ama o Nick, e isso me lembrou desse site de correlações bizarras (e falsas).

O terceiro grande caso de uso: Deep Fakes ao Vivo

A primeira coisa que pensei quando ouvi falar sobre o Deep Fakes, foi como seria se as pessoas começassem a usar a tecnologia para se passar por outras em tempo real? Ou seja, eu entrar online com o rosto de outra pessoa, isso seria engraçado ou teria implicações éticas? Decidi ver o esforço de fazer isso acontecer e testar na prática!

Eu tenho um computador rápido (Quad-Core 6700K, placa de vídeo Titan X Pascal rodando Ubuntu) então achei que tecnicamente iria funcionar. Felizmente consegui fazer tudo funcionar em um final de semana! Isso foi possível, pois parti fazendo um fork do trabalho já feito por https://github.com/deepfakes/faceswap e pelo Gaura Oberoi https://github.com/goberoi/faceit que implementou a extração de frames de vídeo do Youtube.

Resultados

Depois de treinar o modelo por um pouco mais de 48h, já comecei a ver resultados muito bons. Ao utilizar com a webcam, consegui um frame-rate bom (melhor do que o esperado) e que fica natural em uma video-conferência que já é meio travada por natureza.

Foi muito engraçado, entrar online com o rosto do John Oliver e convidar amigos para bate papo e filmar a reação deles. Deve ser mais engraçado ainda entrar no Chat Roulette (se é que isso ainda existe) ou tentar se passar por outra pessoa ao vivo (ex: um político). Sempre na brincadeira né!

Como testar

Coloquei os fontes do projeto no meu Github: https://github.com/alew3/faceit_live , basta seguir as instruções por lá. Aproveitei e criei um Dockerfile para facilitar o setup que me tomou bastante tempo.

*Este artigo é uma tradução do meu texto em inglês.

--

--