Design clássico · Sênior
Geração realista de rostos
Projeto de entrevista clássico. Pontos centrais: GAN/StyleGAN, mode collapse, FID e marca d'água.
Resposta curta
Projeto de entrevista clássico. Pontos centrais: GAN/StyleGAN, mode collapse, FID e marca d'água. O capítulo 7 do livro Generative AI System Design Interview chama-se Realistic Face Generation.
01 · CONTEXTO
O problema: gerar rostos que parecem reais
O capítulo 7 do livro Generative AI System Design Interview chama-se Realistic Face Generation.
Uma GAN treina dois modelos ao mesmo tempo: um gerador, que captura a distribuição dos dados, e um discriminador, que estima se uma amostra veio dos dados de treino ou do gerador.
O treino do gerador busca maximizar a probabilidade de o discriminador errar.
02 · TREINO
O laço de treino adversarial
O diagrama abaixo mostra o laço de treino e a avaliação periódica do gerador.
O diagrama começa pelo dataset de rostos e pelo carregador de lotes, que entregam imagens reais ao discriminador.
O gerador transforma ruído em imagens, e o discriminador estima se uma amostra veio dos dados de treino ou do gerador.
O gerador é treinado para maximizar a chance de o discriminador errar.
Os dois lados precisam andar em sincronia: o gerador não deve ser treinado demais sem que o discriminador seja atualizado.
Uma opção de treino é dar ao discriminador e ao gerador taxas de aprendizado individuais, como no TTUR.
O avaliador gera imagens de um checkpoint, passa-as pelo Inception-v3 e calcula média e covariância para o FID.
03 · ESTABILIDADE
Quando o gerador perde diversidade
O paper original das GANs lista como desvantagem a necessidade de sincronizar bem D e G: G não deve ser treinado demais sem atualizar D, para evitar o cenário em que G leva valores demais de z ao mesmo valor de x.
Os autores do TTUR propõem uma taxa de aprendizado individual para o discriminador e outra para o gerador.
04 · CONTROLE
StyleGAN: mais controle sobre o rosto gerado
O StyleGAN parte de uma entrada constante aprendida e ajusta o estilo da imagem em cada camada de convolução com base no código latente.
Segundo o paper, o resultado é uma separação automática e não supervisionada entre atributos de alto nível, como pose e identidade em rostos, e variação estocástica, como sardas e cabelo.
Antes disso, o código latente passa por um espaço latente intermediário; a rede de mapeamento que o produz tem 8 camadas.
O mesmo trabalho apresenta o FFHQ, um conjunto de rostos humanos com qualidade bem maior e variação bem mais ampla que os conjuntos de alta resolução existentes.
Nos exemplos ilustrativos, os autores evitaram amostrar regiões extremas de W com o truncation trick, mas todos os FIDs do paper são calculados sem ele.
05 · AVALIAÇÃO E SERVIÇO
Medir a qualidade e servir as imagens
O FID foi proposto para avaliar GANs e, segundo os autores, é mais consistente que o Inception Score. Este último não compara as estatísticas das amostras reais com as das sintéticas.
No cálculo, os autores geram 50.000 imagens, passam-nas pelo Inception-v3 e calculam média e covariância.
O diagrama abaixo mostra o caminho de um pedido de rosto sintético em produção.
O diagrama começa pelo cliente, que pede um rosto sintético por meio do gateway de API.
A amostragem do gerador usa apenas propagação direta.
Ao mostrar exemplos, o StyleGAN evitou amostrar regiões extremas de W com o truncation trick.
O diagrama segue com a imagem gravada no armazenamento e entregue ao cliente pela CDN.
O diagrama termina com as métricas do serviço indo para o monitoramento.
Perguntas frequentes
O que é Geração realista de rostos?
Projeto de entrevista clássico. Pontos centrais: GAN/StyleGAN, mode collapse, FID e marca d'água.
O que o design de Geração realista de rostos cobre?
Ele está organizado nestas seções: O problema: gerar rostos que parecem reais, O laço de treino adversarial, Quando o gerador perde diversidade, StyleGAN: mais controle sobre o rosto gerado e Medir a qualidade e servir as imagens.
Quanto tempo leva Geração realista de rostos e qual é o nível?
Leva cerca de 16 minutos para ler e tem nível Sênior.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.