O artigo do novo modelo de mudança de rosto FaceShifter é uma explicação simples e completa

Hoje, o aprendizado profundo pode produzir resultados surpreendentes no campo da síntese e processamento de imagens. Já vimos exemplos de sites que iludem pessoas de imaginação, vídeos mostrando celebridades dizendo coisas que nunca disseram e ferramentas que fazem as pessoas dançarem. Esses exemplos são verdadeiros o suficiente para enganar a maioria de nós. Um dos novos feitos é o FaceShifter [1], que é um modelo de aprendizado profundo que pode trocar rostos em imagens superiores à tecnologia mais recente. Neste artigo, entenderemos como funciona.

Declaração do problema

  Temos uma imagem de face de origem Xₛ e uma imagem de rosto de destino Xₜ. Queremos gerar uma nova imagem de face Yₛ, que possua os atributos de Xₜ (postura, iluminação, óculos etc.), mas que tenha a identidade da pessoa em Xₛ. A Figura 1 resume esta declaração de problema. Agora, continuamos a explicar o modelo.

Figura 1. Alterar declaração de problema de face. Os resultados mostrados são do modelo FaceShifter. Adaptado de [1].

Modelo FaceShifter

  O FaceShifter consiste em duas redes, denominadas rede AEI e rede HEAR. A rede AEI gera um resultado preliminar de troca facial, e a rede HEAR otimiza a saída. Vamos analisar os dois separadamente.

Rede AEI

Rede AEI é a abreviação de "Adaptive Embedded Integrated Network". Isso ocorre porque a rede AEI consiste em 3 sub-redes:

  1. Codificador de identidade: um codificador que incorpora Xₛ em um espaço que descreve a identidade de um rosto em uma imagem.
  2. Codificador de atributo multinível: um codificador que incorpora Xₜ em um espaço que descreve os atributos a serem retidos na troca de faces.
  3. Gerador AAD: um gerador que integra a saída das duas primeiras sub-redes para gerar a troca de faces no logotipo de Xₜ e Xₛ.

A rede AEI é mostrada na Figura 2. Vamos concretizar seus detalhes.

Figura 2. A arquitetura da rede AEI. Adaptado de [1].

Codificador de identidade

  Essa sub-rede projeta a imagem de origem Xₛ em um espaço de baixa dimensão. A saída é apenas um vetor, que chamamos de zᵢ, como mostra a Figura 3. Esse vetor codifica a identidade do rosto em Xₛ, o que significa que ele deve extrair os recursos que nós humanos usamos para distinguir os rostos de pessoas diferentes, como o formato dos olhos, a distância entre os olhos e a boca, a curvatura da boca e assim por diante.

   O autor usa um codificador pré-treinado. Eles usaram uma rede de reconhecimento facial treinada. Espera-se que isso atenda aos nossos requisitos, porque a rede para distinguir faces deve extrair recursos relacionados à identidade.

Figura 3 Codificador de identidade. Adaptado de [1].

Codificador de atributo multinível

  A sub-rede codifica a imagem de destino X. Ele gera vários vetores, cada um dos quais descreve os atributos de Xₜ com diferentes resoluções espaciais.Em geral, existem 8 vetores de características, chamados zₐ. O atributo aqui refere-se à estrutura facial na imagem de destino, como postura, contorno, expressão facial, penteado, cor da pele, plano de fundo, iluminação da cena etc. do rosto. Como mostrado na Figura 4, é um ConvNet com uma estrutura de rede em forma de U, na qual o vetor de saída é apenas um mapa de recursos de cada nível na seção de upscale / decodificação. Observe que esta sub-rede não é pré-treinada.

Figura 4. Arquitetura de codificador de atributo em vários níveis. Adaptado de [1].

Representar Xₜ como múltiplas incorporações é necessário porque o uso de uma incorporação em uma única resolução espacial resultará na perda de informações na imagem de saída desejada que gera a superfície de troca (ou seja, queremos reter muitos detalhes finos de Xₜ, o que torna a compactação A imagem não é viável). Isso é evidente nos estudos de ablação realizados pelos autores, que tentaram usar apenas os primeiros 3 zₐ em vez de 8 z to para representar Xₜ, o que fez com que o resultado da Figura 5 fosse mais desfocado.

Figura 5. Use várias combinações para representar o efeito do alvo. Se os primeiros 3 zₐ casamentos forem usados, a saída será compactada; se todos os 8 casamentos forem usados, a saída será AEI Net. Adaptado de [1].

Gerador AAD

  O gerador AAD é uma abreviação de "Adaptive Attention Denormalization Generator". Ele sintetiza a saída das duas primeiras sub-redes para melhorar a resolução espacial, produzindo assim a saída final da rede AEI. Isso é obtido sobrepondo um novo bloco AAD Resblock, como mostra a Figura 6.

Figura 6. A arquitetura do gerador AAD na imagem da esquerda e o AAD Resblock na imagem da direita. Adaptado de [1].

A nova parte deste bloco é a camada AAD. Dividimos em 3 partes, como mostra a Figura 7. Em um nível superior, a Parte 1 nos diz como editar o mapa de recursos de entrada hᵢ para torná-lo mais parecido com Xₜ em termos de atributos. Especificamente, ele gera dois tensores do mesmo tamanho que hᵢₙ, um tensor contém o valor da escala multiplicado por cada célula em hᵢₙ e o outro tensor contém o valor de deslocamento. A entrada da camada 1 é um dos vetores de atributo. Da mesma forma, a Parte 2 nos dirá como editar o mapa de recursos hᵢ para torná-lo mais parecido com Xₛ.

Figura 7. Arquitetura de camada AAD. Adaptado de [1].

A tarefa da parte 3 é selecionar a parte (2 ou 3) na qual devemos focar em cada célula / pixel. Por exemplo, na célula / pixel relacionada à boca, a rede nos dirá para focarmos mais na Parte 2 porque a boca está mais relacionada à identidade. Isso é provado empiricamente por um experimento mostrado na Figura 8.

Figura 8. Um experimento mostrando o que foi aprendido na Parte 3 da camada AAD. A imagem à direita mostra a saída da terceira parte do número assíncrono / resolução espacial em todo o gerador AAD. A área clara indica que devemos prestar atenção à identidade da célula (isto é, parte 2), a área preta significa que devemos prestar atenção à parte 1. Observe que, em alta resolução espacial, nosso foco principal está na Parte 1.

Dessa forma, o gerador AAD poderá construir a imagem final passo a passo e, em cada etapa, determinará a melhor maneira de ampliar o mapa de recursos atual para uma determinada identidade e código de atributo.

Agora temos uma rede, a rede AEI, que pode incorporar Xₛ e Xₜ e integrá-los de uma maneira que atinja nossos objetivos. Chamamos a saída de AEI Net Yₛₜ *.

Função de perda de treinamento

  De um modo geral, a perda é uma fórmula matemática que esperamos que a rede atinja seu objetivo. Existem 4 perdas no treinamento da rede AEI:

  1. Queremos que ele produza um rosto humano real, para que tenhamos uma perda adversária, como qualquer rede adversária.
  2. Esperamos que o rosto gerado tenha a identidade de Xₛ. Nosso único objeto matemático que pode representar a identidade é zᵢ. Portanto, esse objetivo pode ser expresso pelas seguintes perdas:
  3. Queremos que a saída tenha atributos Xₜ. As perdas são:
  4. O autor adiciona outra perda com base na visão de que a rede deve gerar Xₜ (se Xₜ e Xₛ forem realmente a mesma imagem):

Acredito que essa última perda é necessária para gerar o atributo de codificação zₐ, porque não é pré-treinado como z like. Sem ele, a rede AEI pode ignorar Xₜ e fazer zₐ produzir apenas 0.

Nossa perda total é apenas uma soma ponderada das perdas anteriores.

Hear Network

  A rede AEI não é apenas uma rede completa capaz de comutação de face. No entanto, não é bom o suficiente para ser consistente. Especificamente, sempre que algo na imagem de destino bloqueia parte do rosto que deve aparecer na saída final (como óculos, chapéu, cabelo ou mãos), a rede da AEI o remove. Essas coisas ainda devem existir, porque não tem nada a ver com o logotipo a ser alterado. Portanto, o autor implementou uma rede adicional chamada "rede de refinamento de confirmação de erro heurístico", que tem uma única tarefa de recuperar essa oclusão.

Eles notaram que, quando configuram a entrada da rede AEI (ou seja, Xₛ e Xₜ) para a mesma imagem, ela ainda não retém a oclusão, como mostra a Figura 9.

Figura 9. A saída da AEI Net quando inserimos a mesma imagem que Xₛ e Xₜ. Observe como a corrente no lenço se perde na saída. Adaptado de [1].

Portanto, eles não usaram Yₛₜ * e Xₜ como entrada para a rede HEAR, mas definiram para Yₛₜ * & (Xₜ-Yₜₜ *), onde Yₜₜ * é a saída da rede AEI quando Xₛₜ * e Xₜ são a mesma imagem. Isso direcionará a rede HEAR para ocultar pixels não reservados. Como mostra a Figura 10.

Figura 10. A estrutura da rede HEAR. Adaptado de [1].

Função de perda de treinamento

A função de perda da rede HEAR é:

  1. Perdas por retenção de identidade:
  2. Não altera substancialmente a perda de Yₛₜ *:

  1. Se Xₛ e Xₜ são a mesma imagem, a saída da rede HEAR deve ser Xₜ:

A perda total é a soma dessas perdas.

O resultado

  O efeito do trocador de rosto é incrível. Na Figura 11, você pode encontrar alguns exemplos de seu desempenho de generalização em imagens que não sejam o conjunto de dados em que foi projetado (ou seja, de um conjunto de dados mais amplo). Observe como funciona corretamente em condições diferentes e difíceis.

Figura 11. Os resultados mostram que o conversor possui um bom desempenho. Adaptado de [1].

  1. Os resultados mostraram que a maioria dos pacientes com câncer de mama é diagnosticada com câncer de mama ou colo de útero.

Autor: Ahmed Maher

Traduzido por: tensor-zhang

 

Publicado 47 artigos originais · Gostei 105 · Visitas mais de 140.000

Acho que você gosta

Origin blog.csdn.net/m0_46510245/article/details/105679690
Recomendado
Clasificación