Kąt Andersona

Rozwiązywanie problemu “złych dni włosów” w syntezie obrazu ludzkiego

mm
Dodaj Unite.AI do preferowanych źródeł w Google

Od złotego wieku rzeźby rzymskiej, przedstawianie ludzkich włosów było cierniem w boku. Przeciętna ludzka głowa zawiera 100 000 włosów, ma różne wskaźniki refrakcyjne w zależności od koloru, i poza pewną długością, porusza się i zmienia kształt w sposób, który może być symulowany tylko za pomocą złożonych modeli fizycznych – do tej pory tylko stosowanych w metodach CGI.

Z badań z 2017 roku przeprowadzonych przez Disneya, model oparty na fizyce próbuje nadać realistyczne ruchy stylizacji włosów w przepływie pracy CGI. Źródło: https://www.youtube.com/watch?v=-6iF3mufDW0

Z badań z 2017 roku przeprowadzonych przez Disneya, model oparty na fizyce próbuje nadać realistyczne ruchy stylizacji włosów w przepływie pracy CGI. Źródło: https://www.youtube.com/watch?v=-6iF3mufDW0

Problem ten nie jest dobrze rozwiązany przez nowoczesne popularne metody deepfakes. Przez kilka lat, wiodący pakiet DeepFaceLab miał model “pełnej głowy”, który mógł tylko przechwytywać sztywne wcielenia krótkich (zwykle męskich) stylizacji włosów; i niedawno DFL stablemate FaceSwap (oba pakiety pochodzą z kontrowersyjnego kodu źródłowego DeepFakes z 2017 roku) zaoferował implementację modelu BiseNet segmentacji semantycznej, pozwalającej użytkownikowi uwzględnić uszy i włosy w wyjściu deepfakes.

Even gdy przedstawiany jest bardzo krótki styl włosów, wyniki tendencję do bycia bardzo ograniczonej jakości, z pełnymi głowami pojawiającymi się nałożonymi na nagranie, zamiast zintegrowanymi z nim.

GAN Hair

Dwa główne konkurencyjne podejścia do symulacji ludzkiej to Neural Radiance Fields (NeRF), które mogą przechwytywać scenę z wielu punktów widzenia i zakodować trójwymiarową reprezentację tych punktów widzenia w sieci neuralnej; oraz Generative Adversarial Networks (GANs), które są znacznie bardziej zaawansowane w zakresie syntezy obrazu ludzkiego (nie tylko dlatego, że NeRF pojawił się dopiero w 2020 roku).

Wywnioskowane zrozumienie geometrii 3D przez NeRF umożliwia mu odtworzenie sceny z wielką wiernością i spójnością, nawet jeśli obecnie ma niewielką lub żadną możliwość nałożenia modeli fizycznych – i, w rzeczywistości, relatywnie niewielką możliwość jakiejkolwiek transformacji danych zebranych, które nie dotyczą zmiany punktu widzenia kamery. Obecnie NeRF ma bardzo ograniczone możliwości w zakresie odtwarzania ruchu ludzkich włosów.

GAN-based odpowiedniki NeRF zaczynają się od prawie fatalnej wady, ponieważ, w przeciwieństwie do NeRF, przestrzeń latentna GAN nie zawiera naturalnie zrozumienia informacji 3D. Dlatego 3D-aware GAN facial image synthesis stał się gorącym pościgiem w badaniach generacji obrazu w ostatnich latach, z 2019 roku InterFaceGAN jednym z wiodących przełomów.

Jednak nawet wyniki InterFaceGAN pokazują, że neuralna spójność włosów pozostaje trudnym wyzwaniem w zakresie spójności czasowej, dla potencjalnych przepływów VFX:

Włosy

Włosy “sizzling” w przekształceniu pozy z InterFaceGAN. Źródło: https://www.youtube.com/watch?v=uoftpl3Bj6w

Im bardziej staje się oczywiste, że spójna generacja widoku za pomocą manipulacji przestrzeni latentnej może być pościgiem alchemicznym, coraz więcej prac pojawia się, które inkorporują informacje 3D oparte na CGI do przepływu GAN jako stabilizującego i normalizującego ograniczenia.

Element CGI może być reprezentowany przez pośrednie prymitywy 3D, takie jak Skinned Multi-Person Linear Model (SMPL), lub przez przyjęcie technik inferencyjnych 3D w sposób podobny do NeRF, gdzie geometria jest oceniana z obrazów źródłowych lub wideo.

Jedna nowa praca w tym kierunku, opublikowana w tym tygodniu, to Multi-View Consistent Generative Adversarial Networks for 3D-aware Image Synthesis (MVCGAN), współpraca między ReLER, AAII, University of Technology Sydney, DAMO Academy at Alibaba Group i Zhejiang University.

Prawdopodobne i wytrzymałe nowe pozy twarzy wygenerowane przez MVCGAN na obrazach pochodzących z zestawu danych CELEBA-HQ. Źródło: https://arxiv.org/pdf/2204.06307.pdf

Prawdopodobne i wytrzymałe nowe pozy twarzy wygenerowane przez MVCGAN na obrazach pochodzących z zestawu danych CELEBA-HQ. Źródło: https://arxiv.org/pdf/2204.06307.pdf

MVCGAN inkorporuje generative radiance field network (GRAF) zdolny do zapewnienia ograniczeń geometrycznych w sieci Generative Adversarial, argumentując, że osiąga jedne z najbardziej autentycznych możliwości pozowania wśród podobnych podejść opartych na GAN.

Porównanie między MVCGAN a poprzednimi metodami GRAF, GIRAFFE i pi-GAN.

Porównanie między MVCGAN a poprzednimi metodami GRAF, GIRAFFE i pi-GAN.

Jednak materiały uzupełniające do MVCGAN ujawniają, że uzyskanie objętości włosów, dyspozycji, położenia i zachowania spójności jest problemem, który nie jest łatwo rozwiązany za pomocą ograniczeń opartych na zewnętrznej geometrii 3D.

Z materiałów uzupełniających, które nie zostały opublikowane publicznie w momencie pisania, widzimy, że podczas gdy synteza pozy twarzy z MVCGAN reprezentuje znaczny postęp w stosunku do obecnego stanu sztuki, spójność czasowa włosów pozostaje problemem.

Z materiałów uzupełniających, które nie zostały opublikowane publicznie w momencie pisania, widzimy, że podczas gdy synteza pozy twarzy z MVCGAN reprezentuje znaczny postęp w stosunku do obecnego stanu sztuki, spójność czasowa włosów pozostaje problemem.

Ponieważ “proste” przepływy CGI nadal znajdują temporalną rekonstrukcję włosów takim wyzwaniem, nie ma powodu, aby sądzić, że konwencjonalne podejścia oparte na geometrii tego rodzaju przyniosą spójną syntezę włosów do przestrzeni latentnej wkrótce.

Stabilizowanie włosów za pomocą sieci neuronowych

Jednak nadchodząca praca od trzech badaczy z Chalmers Institute of Technology w Szwecji może zapewnić dodatkowy postęp w symulacji neuralnej włosów.

Po lewej, stabilizowana reprezentacja włosów za pomocą CNN, po prawej, prawda. Zobacz wideo dołączone na końcu artykułu dla lepszej rozdzielczości i dodatkowych przykładów. Źródło: https://www.youtube.com/watch?v=AvnJkwCmsT4

Po lewej, stabilizowana reprezentacja włosów za pomocą CNN, po prawej, prawda. Źródło: https://www.youtube.com/watch?v=AvnJkwCmsT4

Tytuł pracy to Real-Time Hair Filtering with Convolutional Neural Networks, i zostanie opublikowana na i3D symposium w maju.

System składa się z autoencoderowej sieci zdolnej do oceny rozdzielczości włosów, w tym self-cieniowania i uwzględniania grubości włosów, w czasie rzeczywistym, na podstawie ograniczonej liczby losowych próbek zainicjowanych przez geometrię OpenGL.

Podejście renderuje ograniczoną liczbę próbek z przezroczystością stochastyczną i trenuje U-net, aby odtworzyć oryginalny obraz.

Pod MVCGAN, CNN filtruje stochastycznie próbkowane czynniki koloru, highlighty, tangensy, głębokości i alfy, łącząc syntetyzowane wyniki w kompozytowy obraz.

Pod MVCGAN, CNN filtruje stochastycznie próbkowane czynniki koloru, highlighty, tangensy, głębokości i alfy, łącząc syntetyzowane wyniki w kompozytowy obraz.

Sieć jest trenowana na PyTorch, zbiegając się w ciągu sześciu do dwunastu godzin, w zależności od objętości sieci i liczby wejściowych cech. Wytrenowane parametry (wagi) są następnie używane w implementacji czasu rzeczywistego systemu.

Dane treningowe są generowane przez renderowanie kilkuset obrazów dla prostych i falistych stylizacji włosów, przy użyciu losowych odległości i poz, a także różnych warunków oświetlenia.

Różne przykłady danych wejściowych.

Różne przykłady danych wejściowych.

Przezroczystość włosów w próbkach jest uśredniona z obrazów renderowanych z przezroczystością stochastyczną w rozdzielczości supersample. Oryginalne dane wysokiej rozdzielczości są subsample, aby dopasować się do limitów sieci i sprzętu, a później upsamplowane, w typowym przepływie autoencodera.

W czasie rzeczywistym aplikacja inferencyjna (oprogramowanie “na żywo”, które wykorzystuje algorytm pochodzący z wytrenowanego modelu) wykorzystuje mieszankę NVIDIA CUDA z cuDNN i OpenGL. Początkowe cechy wejściowe są zrzucane do buforów koloru multisample OpenGL, a wynik jest przekierowany do tensorów cuDNN przed przetworzeniem w CNN. Te tensory są następnie skopiowane z powrotem do “na żywo” tekstury OpenGL, aby nałożyć je na ostateczny obraz.

System czasu rzeczywistego działa na NVIDIA RTX 2080, produkując rozdzielczość 1024×1024 pikseli.

Ponieważ wartości koloru włosów są całkowicie rozdzielone w ostatecznych wartościach uzyskanych przez sieć, zmiana koloru włosów jest trywialnym zadaniem, chociaż efekty takie jak gradienty i smugi pozostają wyzwaniem na przyszłość.

Autorzy opublikowali kod użyty w ocenach pracy na GitLab. Zobacz dodatkowe wideo dla MVCGAN poniżej.

Podsumowanie

Poruszanie się po przestrzeni latentnej autoencodera lub GAN jest nadal bardziej podobne do żeglowania niż precyzyjnej jazdy. Dopiero w tym bardzo niedawnym okresie zaczynamy widzieć wiarygodne wyniki dla generacji pozy “prostszych” geometrii, takich jak twarze, w podejściach takich jak NeRF, GANy i ramy autoencodera (2017) niezwiązane z deepfakes.

Znaczna złożoność architektoniczna ludzkich włosów, w połączeniu z potrzebą inkorporacji modeli fizycznych i innych cech, dla których obecne podejścia syntezy obrazu nie mają rozwiązania, wskazuje, że synteza włosów nie pozostanie składnikiem zintegrowanym w ogólnej syntezie twarzy, ale będzie wymagać dedykowanych i oddzielnych sieci o pewnej złożoności – nawet jeśli takie sieci mogą być ostatecznie inkorporowane do szerszych i bardziej złożonych ram syntetyzacji twarzy.

 

Pierwotnie opublikowane 15 kwietnia 2022.

Pisarz specjalizujący się w dziedzinie machine learning, specjalista w dziedzinie syntezowania obrazów ludzi. Były szef działu treści badawczych w Metaphysic.ai, do czasu jego rozwiązania i połączenia z DNEG's Brahma.ai.
Portfolio site: martinanderson.ai
Contact: martin@martinanderson.ai