Geração aleatória de rostos humanos realistas

9

Qual seria uma maneira praticável de gerar um grande número de rostos humanos com aparência realista? A randomização de modelos 3D e sua renderização exigiria muito poder de computação, principalmente porque eu estou precisando deles de forma ad-hoc. Estratificar partes individuais desenhadas em 2D requer algum talento artístico, o que definitivamente me falta. Além disso, gostaria de parametrizar o maior número possível de aspectos do processo geracional. Você tem alguma sugestão de como fazer isso?

Waterhouse
fonte
Dado o problema que os artistas humanos têm em criar rostos humanos com aparência realista, em 2D ou 3D, ser capaz de fazer isso automaticamente de uma maneira que seria capaz de criar centenas ou milhares de excelentes exemplos sem falhas parece um sonho para o público. futuro previsível.
Steven Stadnicki
Você está certo. Eu deveria ter sido mais específico, o que eu preciso não é absolutamente realista, mas deve ser mais convincente do que uma caricatura de desenho animado.
Waterhouse
Infelizmente, suspeito que "mesmo tão convincente quanto uma caricatura de desenho animado" sem intervenção artística humana é uma maneira muito boa de alcançar. Há muitas sutilezas para acertar e, em qualquer tentativa automatizada, o estranho vale está fadado a aparecer depressivamente profundo.
Steven Stadnicki
Provavelmente, você pode encontrar algumas informações úteis neste post -> gamedev.stackexchange.com/questions/28363/… O que você precisa fazer é assumir os controles que um mecanismo de jogo fornece para gerar uma cara e escrever código que gera combinações diferentes. A chave é criar combinações "realistas".
Tim Holt

Respostas:

4

Isso certamente pode ser feito - o Skyrim é um bom exemplo de jogo que usa faces 3D geradas proceduralmente. Basicamente, eles usam um conjunto de modelos de face padrão e descrevem diferentes formas geométricas / alterações de cores que podem ser aplicadas em diferentes quantidades para criar todos os tipos de combinações diferentes.

Porém, se você está procurando apenas faces 2D simples, acho que a abordagem de camadas funcionaria melhor - contrate um artista para desenhar vários recursos de rosto diferentes, depois combine-os em combinações diferentes para criar muitas faces aleatórias diferentes. Pequenas compensações aleatórias para cada um dos componentes também ajudarão a criar uma variedade extra.

Links que também podem ser divertidos:

Mikera
fonte
11
+1; Eu acho que essa geralmente é uma boa abordagem - mas observe que tudo isso começa com elementos faciais gerados pelo homem, que a OP sugeriu que ele não deseja usar.
Steven Stadnicki
Você pode querer dar uma olhada no makehuman ( makehuman.org ) também.
Exilyth
1

A resposta de Steven é boa. Os cérebros humanos são muito versados ​​em fazer julgamentos finos de rostos, sua construção e gestos faciais.

No entanto, quero fazer uma pergunta corolária em relação à sua ideia. Qual é o estado do software de reconhecimento facial? Consegue distinguir com segurança um rosto humano de um CG?

Estou curioso quanto à utilidade de ligar a saída de um gerador facial a um reconhecedor facial, com o objetivo de avaliar a humanidade dos rostos. Depois de ter um sistema que pode produzir rostos e reconhecer o bom, o ruim e o feio, não é concebível que os rostos gerados possam melhorar com o tempo?

Espero que a implementação disso tudo seja desafiadora e complexa. Mas eu adoraria ver os resultados.

Jason Pineo
fonte
Obviamente, não em um jogo - mas com algoritmos de aprendizado de computador (e um sistema de marcação - fornecido por um ser humano dizendo Sim / Não ou por alguma comparação com a proporção de ouro do Dr. Marquardt), um algoritmo poderia ser encontrado para gerar formas de rosto (recursos em uma malha na cabeça) muito bem. A texturização é facilmente aplicada a qualquer malha que o processo inicie. Provavelmente, existe um sistema comercial disponível que já passou por esse processo (não olhou).
precisa saber é o seguinte
Pouco menos de sete anos depois, finalmente implementamos isso. Aqui estão os resultados.
wizzwizz4
1

Misture fotos existentes de rostos humanos em novas.

Existem milhões de fotos de rostos existentes disponíveis online. A abordagem que eu adotaria é usar algoritmos conhecidos de detecção de recursos e misturar os recursos de diferentes faces algoritmicamente.

Isso daria a você a aleatoriedade e o realismo.

Em mais detalhes, eu criaria um pipeline de processamento para rostos humanos, que:

  1. Detecte diferentes recursos (olhos, boca, orelhas, testa, queixo, mandíbula, maçã do rosto, etc ...)
  2. Usando os locais dos recursos detectados, divida as imagens em componentes.
  3. Randomize os parâmetros de um modelo posicional e de tamanho.
  4. Coloque os componentes selecionados aleatoriamente no modelo gerado.
  5. Misture os recursos entre si. (suavização de bordas, tom, cor, etc ...)

Alguns recursos encontrados rapidamente:

Você também precisará obter um banco de dados de rostos, que pode vir com alguns problemas de licenciamento, ou reuni-los na Web, que consumirá muito tempo.

Esteja avisado de que esse tipo de problema é uma pesquisa efetivamente ativa. Nem quero saber quanto tempo o pessoal do Skyrim levou para que o sistema de geração de rostos funcionasse. (E eles tinham décadas de experiência desde os dias em Morrowind ...)

brice
fonte