Press enter or click to view image in full size
A esquerda temos o video de entrada, a direita a animação resultante aplicada sobre diferentes imagens

Este modelo foi proposto em um artigo escrito por Aliaksandr Siarohin, Stéphane Lathuilière, Sergey Tulyakov, Elisa Ricci e Nicu Sebe, no qual os autores desenvolveram um sistema que recebe como entrada um vídeo e uma imagem estática, e a partir disso, transfere os movimentos do vídeo para a imagem, como se a pessoa da foto estivesse se movendo.

Em outras palavras, trata-se de um gerador de animações faciais baseado em inteligência artificial, o que muitos chamam de DeepFace AI Generator.

Você pode conferir um resumo geral do sistema nesta página: https://aliaksandrsiarohin.github.io/first-order-model-website/

O artigo completo pode ser baixado em PDF aqui: http://papers.nips.cc/paper/8935-first-order-motion-model-for-image-animation

O código-fonte está disponível no GitHub: https://github.com/AliaksandrSiarohin/first-order-model

E há também uma demo pronta para execução no Google Colab: https://colab.research.google.com/github/AliaksandrSiarohin/first-order-model/blob/master/demo.ipynb

A Popularidade do Projeto

Devido à natureza extremamente visual e impressionante dos resultados, o projeto ganhou grande notoriedade rapidamente. Inclusive, derivados como o “Avatary” surgiram com base nesse trabalho, como reportado pelo Olhar Digital: https://olhardigital.com.br/noticia/software-aberto-cria-deepfakes-em-tempo-real-durante-reunioes-no-zoom/99619

A matéria original também foi publicada pela Vice: https://www.vice.com/en_us/article/g5xagy/this-open-source-program-deepfakes-you-during-zoom-meetings-in-real-time

Funcionamento do Sistema

O projeto foi desenvolvido em Python, e o autor utilizou Jupyter Notebook, ferramentas muito comuns em projetos de inteligência artificial.

O fluxo básico de funcionamento segue estas etapas:

  1. Redimensionamento da imagem e do vídeo: ambos precisam estar em proporções compatíveis.
  2. Carregamento dos dados: a imagem estática (modelo) e o vídeo (base).
  3. Detecção de keypoints: são identificados pontos-chave nos rostos (ou figuras), tanto no vídeo quanto na imagem. Esses pontos são usados para guiar os movimentos da animação.
  4. Pareamento relativo de características: os autores propõem um método para preservar as feições originais da imagem, evitando deformações baseadas nos movimentos do vídeo.
  5. Animação: o sistema utiliza a imagem, o vídeo e os dados extraídos para gerar uma nova animação. O resultado é, por exemplo, o rosto da foto reproduzindo os movimentos da pessoa no vídeo.

Esse processo também pode ser aplicado ao corpo inteiro ou até a animais, como é mostrado nos exemplos da página do projeto.

Criando Suas Próprias Animações

É possível criar suas próprias animações seguindo um processo similar ao descrito acima:

  • Prepare uma imagem recortada de um rosto.
  • Prepare um vídeo com o rosto em movimento, com um enquadramento semelhante ao da foto.
  • Execute o pipeline do projeto com esses novos dados.

Contudo, o treinamento com novos dados é um processo complexo, que exige leitura aprofundada do artigo e familiaridade com redes neurais. Para os mais curiosos, há alternativas mais simples, como o Avatary, que permite animações em tempo real com interface amigável.

Considerações Sobre a Execução

Mesmo para rodar os exemplos prontos, é necessário configurar corretamente o ambiente, incluindo a instalação de pacotes — alguns dos quais requerem versões específicas. Esse processo pode se tornar trabalhoso e sujeito a imprevistos.

Para rodar a demo, é necessário baixar arquivos de checkpoints treinados (os “keypoints”), que são grandes (~700 MB). Isso indica que o treinamento original foi bastante custoso computacionalmente.

Apesar disso, o projeto é fantástico e inovador, e é provável que vejamos mais ferramentas acessíveis implementando essas técnicas em breve.

Avatary: A Alternativa Simples

Uma forma prática de experimentar essa tecnologia é usando o Avatary — um projeto de código aberto criado pela comunidade e baseado no modelo do artigo.

🔗 https://github.com/alievk/avatarify

Passo a Passo para Instalação (Linux Ubuntu)

  1. Baixe a rede de pesos: https://drive.google.com/file/d/1coUCdyRXDbpWnEkA99NLNY60mb9dQ_n3/view?usp=sharing
  2. Baixe o Miniconda com Python 3.7: https://docs.conda.io/en/latest/miniconda.html#linux-installers

3. Instale o Miniconda:

bash Miniconda3-latest-Linux-x86_64.sh

4. Clone o projeto e instale:

git clone https://github.com/alievk/avatarify.git
cd avatarify
bash scripts/install.sh

5. Coloque o arquivo da rede de pesos dentro da pasta avatarify.

Como Rodar

  • No diretório avatars/, adicione as imagens que você deseja usar como avatar.
  • Certifique-se de que as fotos sejam quadradas, com o rosto em tamanho mediano e fundo neutro.
  • Execute o Avatary:
bash run.sh

Isso criará uma webcam virtual. No seu app de vídeo (Zoom, Teams, etc.), selecione essa câmera como entrada.

Possíveis Problemas

O Avatary depende do v4l2loopback, que cria a webcam virtual. Em sistemas mais modernos, o Secure Boot pode impedir sua execução.

A solução que funcionou comigo foi desativar o Secure Boot. Caso tenha problemas, pesquise a mensagem de erro no Google para possíveis alternativas.

Originalmente publicado em 21/05/2020.