Losowe generowanie realistycznych ludzkich twarzy

9

Jaki byłby praktyczny sposób generowania ogromnej liczby realistycznie wyglądających ludzkich twarzy? Randomizowanie modeli 3D i ich renderowanie wymagałoby dużej mocy obliczeniowej, zwłaszcza że potrzebuję ich na zasadzie ad hoc. Nakładanie warstw na poszczególne elementy rysowane 2D wymaga talentu artystycznego, którego zdecydowanie mi brakuje. Chciałbym również sparametryzować jak najwięcej aspektów procesu generacyjnego. Czy masz jakieś sugestie, jak to zrobić?

Waterhouse
źródło
Biorąc pod uwagę, jak wiele problemów ludzkich artystów tworząc realistyczne wyglądające twarze ludzkie, zarówno w 2D lub 3D, jest w stanie to zrobić automatycznie w sposób, który byłby w stanie stworzyć setki lub tysiące doskonałych przykładów bez niewypałów wydaje się mrzonką dla osób przewidywalnej przyszłości.
Steven Stadnicki
Masz rację. Powinienem był być bardziej konkretny, nie potrzebuję absolutnie realistycznego fotorealizmu, ale powinien być bardziej przekonujący niż karykatura kreskówkowa.
Waterhouse
Niestety podejrzewam, że „nawet tak przekonywująca jak karykatura kreskówkowa” bez interwencji artystycznej człowieka jest całkiem dobrym wyjściem poza zasięg. Jest wiele subtelności, które należy podjąć, a przy każdej zautomatyzowanej próbie niesamowita dolina musi przygniatać głęboko.
Steven Stadnicki
Prawdopodobnie można znaleźć przydatne informacje z tego postu -> gamedev.stackexchange.com/questions/28363/... To, co musisz zrobić, to przejąć kontrolę nad silnikiem gry w celu wygenerowania twarzy i napisać kod, który generuje różne kombinacje. Kluczem jest tworzenie „realistycznych” kombinacji.
Tim Holt,

Odpowiedzi:

4

Z pewnością można to zrobić - Skyrim jest dobrym przykładem gry, w której wykorzystuje się generowane proceduralnie twarze 3D. Zasadniczo biorą zestaw standardowych modeli twarzy i opisują różne zmiany geometrii / zmiany kolorów, które można zastosować w różnych ilościach, aby tworzyć różnego rodzaju kombinacje.

Jeśli jednak szukasz prostych twarzy 2D, myślę, że najlepiej byłoby zastosować podejście warstwowe - zatrudnij artystę, aby narysował wiele różnych rysów twarzy, a następnie połącz je w różne kombinacje, aby utworzyć wiele różnych losowych twarzy. Małe losowe przesunięcia każdego z elementów pomogą również stworzyć dodatkową różnorodność.

Linki, które mogą być również zabawne:

mikera
źródło
1
+1; Myślę, że jest to ogólnie dobre podejście - ale zauważ, że wszystkie z nich zaczynają się od elementów twarzy tworzonych przez ludzi, których OP sugeruje, że nie chce ich używać.
Steven Stadnicki
Możesz także zajrzeć na makehuman ( makehuman.org ).
Exilyth
1

Odpowiedź Stevena jest dobra. Ludzki mózg jest bardzo dobrze zorientowany w dokonywaniu dokładnych ocen twarzy, budowy i gestów twarzy.

Chciałbym jednak zadać następcze pytanie odnośnie do twojego pomysłu. Jaki jest stan oprogramowania do rozpoznawania twarzy? Czy potrafi rzetelnie odróżnić twarz człowieka od obrazu z komputera?

Jestem ciekawy, jak użyteczne jest podłączenie wyjścia z generatora twarzy za pomocą rozpoznawania twarzy, w celu stopniowania ludzkości twarzy. Kiedy już masz system, który potrafi tworzyć twarze i rozpoznawać dobre, złe i brzydkie, czy nie można sobie wyobrazić, że generowane twarze mogą się z czasem poprawić?

Oczekuję, że wdrożenie tego wszystkiego będzie trudne i złożone. Ale chciałbym zobaczyć wyniki.

Jason Pineo
źródło
Oczywiście nie w grze - ale z algorytmami uczenia się komputera (i systemem znakowania - dostarczanym przez człowieka mówiącego tak / nie lub w pewnym porównaniu do złotego współczynnika dr Marquardta) można znaleźć algorytm, który generuje kształty twarzy (funkcje na siatka na głowę) całkiem nieźle. Teksturowanie można łatwo zastosować do dowolnej siatki, którą rozpoczyna proces. Prawdopodobnie jest dostępny system komercyjny, który przeszedł już ten proces (nie wyglądał).
Wolf5370
Niecałe siedem lat później w końcu to zaimplementowaliśmy. Oto wyniki.
wizzwizz4,
1

Łącz istniejące zdjęcia ludzkich twarzy w nowe.

Istnieją miliony istniejących zdjęć twarzy dostępnych online. Podejście, które wybrałbym, to wykorzystanie dobrze znanych algorytmów wykrywania cech i algorytmiczne łączenie cech różnych twarzy.

To dałoby ci losowość i realizm.

Bardziej szczegółowo stworzyłbym potok przetwarzania dla ludzkich twarzy, który:

  1. Wykryj różne cechy (oczy, usta, uszy, czoło, podbródek, szczękę, kość policzkową itp.)
  2. Korzystając z lokalizacji wykrytej funkcji, podziel obrazy na komponenty.
  3. Losowo parametry szablonu pozycji i rozmiaru.
  4. Umieść losowo wybrane komponenty na wygenerowanym szablonie.
  5. Połącz funkcje ze sobą. (wygładzanie krawędzi, ton, kolor itp.)

Niektóre szybko znalezione zasoby:

Będziesz także musiał uzyskać bazę danych twarzy, która może wiązać się z niektórymi problemami z licencjonowaniem, lub zebrać je osobiście z Internetu, co będzie czasochłonne.

Ostrzegam, że tego rodzaju problemem są skutecznie aktywne badania. Nie chcę nawet wiedzieć, ile czasu zajęło ludziom Skyrim uruchomienie systemu generowania twarzy. (I mieli dziesięciolecia doświadczenia od czasów na Morrowind ...)

brice
źródło