por Natália Meira
O pipeline do DeepFaceLab possui três fases: extração, treinamento e conversão. Essas três partes são apresentadas a seguir. Além disso, existem apenas dois tipos de dados: src e dst, a abreviatura de origem e destino:
FASE 1: Extração
Primeira fase, com objetivo de extrair uma face dos dados src e dst. Os modos de extração disponíveis são: meia face, face inteira e face inteira, que representam a área de cobertura da face na fase de extração. A fase de extração possui as seguintes etapas:
- Detecção de rosto – o primeiro passo na fase de extração é encontrar o rosto de destino nos dados fornecidos: src e dst. O DFL considera o S3FD como seu detector facial padrão. S3FD pode ser substituído por outros algoritmos de detecção de rosto, como por exemplo, o RetinaFace.
- Alinhamento da face – os autores perceberam que os marcos faciais são a chave para manter a estabilidade ao longo do tempo. A DFL fornece dois tipos de algoritmos canônicos de extração de marcos faciais para resolver isso: (a) algoritmo de marco facial baseado em mapa de calor 2DFAN (para faces com pose padrão) e (b) PRNet com informações anteriores de face 3D. Em seguida, adota-se um mapeamento de padrão de pontos clássico e método de transformação para calcular uma matriz de transformação de similaridade usada para alinhamento da face.
- Segmentação de face – Após o alinhamento de face, uma pasta de dados com face de vista frontal/lateral padrão (src align ou dst align) é obtida. Opcionalmente, o DFL pode empregar uma rede de segmentação da face granulação fina (TernausNet) que é útil para remover oclusões irregulares que possam cobrir o rosto, como mãos e óculos. Além disso, o DFL tem introduzido o XSeg permite que todos treinem seu modelo para a segmentação de um conjunto de faces específico.
O fluxo de trabalho do DFL descrito acima é executado sequencialmente e fornece o que o algoritimo precisa para o treinamento.
FASE 2 – Treinamento
A fase de treinamento desempenha o papel mais vital na obtenção de resultados fotorrealistas de troca de rosto de DFL, e para isso, os autores propuseram duas estruturas, a estrutura DF e a estrutura LIAE (ver Figura 1).
- Estrutura DF – consiste tanto em um Codificador e Inter com pesos compartilhados entre src e dst, dois decodificadores que pertencem a src e dst separadamente. A generalização de src e dst é conseguida através do Encoder e Inter compartilhados. A estrutura DF pode terminar a tarefa de troca de face, mas não pode herdar informações suficientes de dst, como iluminação. Para as perdas, o DFL usa uma perda mista (DSSIM (dissimilaridade estrutural) + MSE) por padrão.
- Estrutura LIAE – consiste em uma estrutura mais complexa com um codificador de peso compartilhado, decodificador e dois Inters independentes. A principal diferença em relação ao DF é que o InterAB é usado para gerar o código latente de src e dst, enquanto o InterB produz apenas o código latente de dst.
FASE 3 – Conversão
Como mostrado na Figura 2 a seguir, os usuários podem trocar as faces de src para o dst e vice-versa. Além disso, espera-se que o rosto realinhado e reconstituído se encaixe perfeitamente na imagem alvo, que o DFL consegue pelo fornecimento cinco algoritmos de transferência de cor.
O DeepFaceLab é um código open source, e você pode encontrá-lo aqui: <https://github.com/iperov/DeepFaceLab>.
Referência: PEROV, I.; GAO, D.; CHERVONIY, N.; LIU, K.; MARANGONDA, S.; UMÉ, C.; JIANG, J; RP, C.; ZHANG, S.; WU, P.; ZHANG, W. (2020). Deepfacelab: A simple, flexible and extensible face swapping framework. arXiv preprint arXiv:2005.05535.