Do Zero a Deepfake

Compartilhe!

É fácil criar um deepfake?

Esta é minha experiência para começar com deepfakes usando DeepFaceLab. Este artigo narra as etapas gerais pelas quais passei para criar um vídeo deepfake para demonstrar o quão avançada a tecnologia se tornou e como é simples de usar. Este não é um tutorial passo a passo, mas indicará onde você precisa ir.

Introdução

Estou além de fascinado por deepfakes. Dos vídeos de mashups de celebridades como o rosto de Jim Carrey transferidos para o corpo de Alison Brie.

… Às implicações que o vídeo e o áudio falsos terão no mundo em geral

É fácil gerar um deepfake?

Fundo

Tive a oportunidade recente de explorar a pesquisa deepfake como um projeto paralelo e, é claro, comecei a explorá-la. Eu não tinha nenhuma experiência em deepfakes, mas tenho acompanhado as notícias sobre eles como todo mundo. Tenho experiência em aprendizado de máquina, mas para aplicativos não relacionados. Nenhuma de minha experiência foi aplicável a esses experimentos, exceto ser capaz de solucionar bloqueios gerais de software. Comecei do zero.

Limpei meu antigo PC com Windows 10, inicializei e comecei a trabalhar nas atualizações. Uma pesquisa rápida mostrou que o Windows estava OK, então eu continuei com ele por enquanto. Havia um limite de tempo na primeira rodada de pesquisa, então cortei os atalhos que pareciam seguros de cortar. Comecei a experiência com minha velha placa de vídeo Nvidia Geforce GTX 970 4gb, mas depois atualizei para duas placas Nvidia Geforce RTX 2080 11gb. Os anos 2080 são grandes, caros e exagerados para a maioria das aplicações. Se você está procurando experimentar deepfakes como hobby, pode se safar com uma GTX 1080 de 11gb. A RAM é crítica e você não irá longe sem ela.

Primeiros passos: DeepFaceLab vs Faceswap

Dois projetos dominam a geração deepfake de código aberto, DeepFaceLab (DFL) e Faceswap . A troca facial, na superfície, parecia a aposta mais segura. Tem vários contribuidores, maior popularidade e mais documentação, mas não consegui ir longe com isso. Tive muita dificuldade em treinar e, mesmo tendo o suficiente para avançar, o processo de conversão nunca terminava. Desde então, resolvi ambos os problemas – o primeiro abandonando a GUI e usando o Ubuntu, o segundo ajustando as configurações de FPS de vídeo – mas tive que me comprometer com o DFL porque funcionou e o tempo estava passando.

Usando DeepFaceLab

Você pode baixar compilações pré-construídas do Windows no Google Drive ou Mega . Eles fornecerão as dependências e permitirão que você inicie o processo o mais rápido possível. O manual vem traduzido do russo através do Google Translate e, mesmo assim, faz o trabalho e conduz você em cada etapa com o mínimo de dor de cabeça.

Etapa 1: Extração

A primeira etapa na criação do deepfake é extrair os quadros e, em seguida, os rostos dos vídeos de origem e destino. Você está procurando por várias centenas a alguns milhares de imagens de alta qualidade no final. Cada uma das etapas do DFL vem na forma de um arquivo em lote executável que apresenta opções e é executado até a conclusão ou até você abortá-lo. O uso avançado vem da execução direta do python, mas você pode ir longe usando os executáveis ​​empacotados passo a passo.

Seu modelo será tão bom quanto os dados com os quais aprender. Se você deseja uma boa saída, você precisa de uma boa entrada. Isso significa examinar milhares de imagens para ter certeza de que são de alta qualidade e que o DFL detectou os rostos corretamente. O DFL vem com vários arquivos em lote que o ajudarão em grande parte nesse processo. Você pode classificar por desfocagem, semelhança de rosto, histograma e muito mais. Isso ajuda a agilizar o trabalho agrupando quadros ruins e rostos mal capturados, mas você ainda se beneficiará examinando manualmente o que resta. Você vai gastar muito tempo treinando, vale a pena fazer um esforço extra aqui.

No final desta etapa, você encontrará milhares de quadros fatiados e faces normalizadas.

Rosto extraído por DFL

Nota: estas não são imagens simples, elas têm informações de alinhamento embutidas no arquivo de imagem. Esses metadados são importantes para processos futuros. O processamento posterior dessas imagens fora do DFL pode causar problemas.

Etapa 2: Treinamento

A próxima etapa é escolher o modelo que você deseja treinar. O DFL vem com seis modelos de sofisticação diferente e para finalidades diferentes. H64 é para placas de vídeo menos capazes, Avatar é para manipular as expressões faciais de um vídeo de origem e SAE é uma combinação de outros modelos. O manual e os tutoriais online recomendam SAE, mas optei pelo único modelo que rodaria na minha placa gráfica inicial, H64. Há uma série de configurações que você pode ajustar aqui, mas é difícil saber seu efeito até vê-las em ação. Infelizmente, isso leva horas ou dias, então você precisa ser paciente e ver o que acontece.

Os resultados (postados abaixo) foram promissores, mas estava claro que minha placa de vídeo estava limitando a qualidade da saída. Ao atualizar para um cartão de 11 GB, pude experimentar com os outros modelos e me comprometi com a SAE por períodos mais longos.

Você pode interromper o treinamento e reiniciar a qualquer momento para fazer backup dos modelos e salvar “pontos de verificação”. Depois de fazer o backup, você pode divergir para ver se as novas configurações oferecem resultados promissores. Eu recomendo fazer backup em cerca de 40.000 iterações e testar diferentes configurações a partir daí. Sempre faça backup antes de tentar configurações agressivas. Esse tipo de aprendizado de máquina pode implodir a ponto de o modelo não ser mais útil. Esse colapso é irrecuperável e você não terá escolha a não ser restaurar a partir de um backup.

Etapa 3: converter

Depois de treinar o modelo a ponto de ficar feliz, é hora de converter um vídeo de destino e produzir seu primeiro deepfake. O processo de conversão pega seu modelo e o usa para gerar uma imagem a ser sobreposta no vídeo de destino. Você pode ajustar as configurações que contraem ou desfocam a máscara, alterar a coloração da saída, redimensionar a imagem sobreposta e muito mais. Este é um processo mais barato, embora ainda demore cerca de 30 minutos cada execução para converter os quadros para um vídeo de 46 segundos.

A etapa final é mesclar todos os quadros convertidos em um arquivo de vídeo. Isso leva relativamente pouco tempo e então – voilá – você agora está no meio das notícias falsas.

Resultados

Os primeiros experimentos com o H64 foram os que usei para determinar se a DFL tinha o que era preciso para investir tempo.

Você notará imediatamente a cintilação e isso foi devido a uma falha de minha parte, provavelmente durante as fases de extração. Meu interesse era principalmente em torno da qualidade da sobreposição, então eu tolerava sem corrigi-la.

Depois de determinar que o DFL era bom o suficiente para continuar, comecei a reunir arquivos de origem para o destino. O alvo era ser John Stackhouse , vice-presidente sênior do Royal Bank of Canada e ex-editor-chefe do Globe & Mail. John estava moderando um painel sobre deepfakes e segurança eleitoral na Universidade de Toronto e nos perguntou como era fácil criar um deepfake. Decidimos que um bom vídeo de destino para a demonstração seria Simon Cowell do American Idol .

A primeira iteração do modelo SAE em cerca de 25k iterações parecia promissora …

… Mas ficar muito melhor acabou sendo muito difícil. Isso depois de 150 mil iterações …

Esse modelo acabou entrando em colapso, o que me ensinou muito sobre redes adversárias geradoras. Tive que restaurar de uma versão anterior e usar configurações diferentes.

Esta é a iteração final em que cheguei antes de encerrar. Eu sei que poderia ser melhor, mas a essa altura eu estava fora da pista.

O tempo de processamento para este vídeo específico é difícil de definir depois de todos os inícios, paradas e restaurações do backup, mas provavelmente foi cerca de 24 a 36 horas.

O que eu teria feito de forma diferente

Local vs Nuvem

Otimizei para um ambiente local porque pensei que isso me permitiria começar mais rápido. Embora isso provavelmente fosse verdade, pequenos ajustes no modelo podem levar horas ou dias para chegar a qualquer coisa e eu gostaria de ter mordido a bala e descoberto uma solução de nuvem primeiro. Isso teria me permitido (presumivelmente) executar experimentos em paralelo e eu teria iterado mais rapidamente. Posso estar errado, mas pretendo voltar e repetir alguns experimentos iniciais em soluções de nuvem para comparar qualidade e desempenho.

Conjunto de dados de origem

Comecei com a impressão de que dezenas de milhares de bons quadros de um punhado de vídeos originais seriam suficientes. Depois de executar mais testes, descobriu-se que alguns milhares são tudo o que é necessário e é melhor ter uma gama maior de imagens de muitos ângulos diferentes e, o mais importante, condições de iluminação.

DFL vs Faceswap

A DFL me tratou muito bem e não me arrependo, mas estou começando a ver onde o Faceswap está mais avançado. O DFL não oferece suporte a várias GPUs, enquanto o Faceswap sim. O Faceswap também dedicou mais tempo à GUI, o que a tornará mais acessível no futuro. Agora comecei a trabalhar com o Faceswap e ele funciona em ambas as GPUs, embora ainda esteja trabalhando desajeitadamente em sua documentação.

Conclusão

Não foi trivial chegar ao ponto em que terminei, mas o caminho para melhorar é claro: melhores dados de entrada, mais ajustes manuais e treinamento mais longo. Não há dúvida de que essa tecnologia ficará melhor e mais fácil de usar e isso é apenas a ponta do iceberg. De uma perspectiva de conhecimento técnico, tive que aplicar muito pouco dos meus 20 anos de experiência em software para começar a trabalhar com DFL. O Windows Build é independente e livre de dependências. Estou ainda correndo em problemas com Faceswap mas todos eles são experiência do usuário e problemas de dependência. É importante lidar com eles, mas problemas como esses são tarefas diárias de desenvolvimento de software, e não problemas profundos de aprendizado de máquina que só podem ser resolvidos por gênios e cientistas.

Deepfakes estão aqui para ficar. Eles vão ficar muito, muito melhores e precisamos conviver com essa realidade. Um futuro onde os deepfakes correm desenfreadamente pode soar como um pesadelo distópico aterrorizante, mas eu acho que já estamos naquele pesadelo. O que temos que esperar é acordar. Temos ferramentas especializadas de manipulação de gráficos disponíveis há décadas, não é nada novo. Temos incríveis CGI em filmes e as imagens Photoshop estão literalmente em todos os lugares que você olha. Já estamos vivendo em um mundo onde nos perguntamos “isso é real?” várias vezes ao dia. A tecnologia Deepfake aumentará a importância dos mecanismos de detecção e validação para imagens e vídeos de todos os tipos. Com alguma sorte, o futuro próximo nos permitirá detectar automaticamente o que é falso e não teremos que nos perguntar mais.

Compartilhe!