Autorzy: Jun Gao, NVIDIA, University of Toronto, Vector Institute (jung@nvidia.com) Tianchang Shen, NVIDIA, University of Toronto, Vector Institute (frshen@nvidia.com) Zian Wang, NVIDIA, University of Toronto, Vector Institute (zianw@nvidia.com) Wenzheng Chen, NVIDIA, University of Toronto, Vector Institute (wenzchen@nvidia.com) Kangxue Yin, NVIDIA (kangxuey@nvidia.com) Daiqing Li, NVIDIA (daiqingl@nvidia.com) Or Litany, NVIDIA (olitany@nvidia.com) Zan Gojcic, NVIDIA (zgojcic@nvidia.com) Sanja Fidler, NVIDIA, University of Toronto, Vector Institute (sfidler@nvidia.com) Abstrakt W miarę jak wiele branż zmierza w kierunku modelowania masywnych wirtualnych światów 3D, staje się widoczne zapotrzebowanie na narzędzia do tworzenia treści, które mogą skalować się pod względem ilości, jakości i różnorodności treści 3D. W naszej pracy dążymy do trenowania wydajnych, generatywnych modeli 3D, które syntetyzują siatki teksturowane, mogące być bezpośrednio wykorzystane przez silniki renderowania 3D, a tym samym natychmiastowe w zastosowaniach niższego poziomu. Wcześniejsze prace nad generatywnym modelowaniem 3D albo brakowało szczegółów geometrycznych, były ograniczone pod względem topologii siatki, którą mogły produkować, zazwyczaj nie obsługiwały tekstur, albo wykorzystywały renderery neuronowe w procesie syntezy, co utrudnia ich użycie w powszechnych programach 3D. W tej pracy wprowadzamy GET3D, model eneratywny, który bezpośrednio generuje kspresyjne eksturowane siatki o złożonej topologii, bogatych szczegółach geometrycznych i teksturach o wysokiej wierności. Łączymy niedawne sukcesy w modelowaniu powierzchni różniczkowalnych, renderowaniu różniczkowalnym, a także w dwuwymiarowych sieciach generatywno-dyskryminacyjnych (GAN), aby trenować nasz model na kolekcjach obrazów 2D. GET3D jest w stanie generować wysokiej jakości teksturowane siatki 3D, od samochodów, krzeseł, zwierząt, motocykli i postaci ludzkich po budynki, osiągając znaczącą poprawę w stosunku do poprzednich metod. Nasza strona projektu: G E T 3D https://nv-tlabs.github.io/GET3D 1 Wprowadzenie Zróżnicowane, wysokiej jakości treści 3D stają się coraz ważniejsze dla wielu branż, w tym gier, robotyki, architektury i platform społecznościowych. Jednak ręczne tworzenie zasobów 3D jest bardzo czasochłonne i wymaga specjalistycznej wiedzy technicznej, a także umiejętności modelowania artystycznego. Jednym z głównych wyzwań jest zatem skala – chociaż można znaleźć modele 3D na rynkach 3D, takich jak Turbosquid [ ] lub Sketchfab [ ], tworzenie wielu modeli 3D, aby, powiedzmy, wypełnić grę lub film tłumem postaci, które wszystkie wyglądają inaczej, nadal wymaga znacznego czasu artystów. 4 3 Aby ułatwić proces tworzenia treści i udostępnić go różnorodnym (początkującym) użytkownikom, generatywne sieci 3D, które mogą produkować wysokiej jakości i zróżnicowane zasoby 3D, stały się ostatnio aktywnym obszarem badań [ , , , , , , , , , , ]. Jednak, aby były praktycznie użyteczne w obecnych zastosowaniach w świecie rzeczywistym, generatywne modele 3D powinny idealnie spełniać następujące wymagania: Powinny mieć zdolność generowania kształtów ze szczegółową geometrią i dowolną topologią, Wyjście powinno być siatką teksturowaną, która jest podstawową reprezentacją używaną przez standardowe pakiety oprogramowania graficznego, takie jak Blender [ ] i Maya [ ], oraz Powinniśmy być w stanie wykorzystać obrazy 2D do nadzoru, ponieważ są one szerzej dostępne niż jawne kształty 3D. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Wcześniejsze prace nad generatywnym modelowaniem 3D koncentrowały się na podzbiorach powyższych wymagań, ale żadna metoda do tej pory nie spełnia ich wszystkich (Tabela ). Na przykład metody generujące chmury punktów 3D [ , 68, 75] zazwyczaj nie produkują tekstur i muszą być przekształcone w siatkę w post-processingu. 1 5 Metody generujące woksele często brakują szczegółów geometrycznych i nie produkują tekstury [ , , , ]. Modele generatywne oparte na polach neuronowych [ , ] skupiają się na wydobywaniu geometrii, ale ignorują teksturę. Większość z nich wymaga również jawnego nadzoru 3D. Wreszcie, metody bezpośrednio generujące teksturowane siatki 3D [ , ] zazwyczaj wymagają predefiniowanych szablonów kształtów i nie mogą generować kształtów o złożonej topologii i zmiennym genusie. 66 20 27 40 43 14 54 53 Ostatnio, szybki postęp w neuronowym renderowaniu wolumetrycznym [ ] i dwuwymiarowych sieciach generatywno-dyskryminacyjnych (GAN) [ , , , , ] doprowadził do powstania neuronowego renderowania 3D [ , , , , , ]. Jednak ta linia prac ma na celu syntezę obrazów spójnych z wieloma widokami przy użyciu neuronowego renderowania w procesie syntezy i nie gwarantuje, że można wygenerować sensowne kształty 3D. Chociaż siatka może być potencjalnie uzyskana z bazowej reprezentacji pola neuronowego przy użyciu algorytmu kostek do marszu [ ], wyodrębnienie odpowiadającej tekstury jest niebanalnym zadaniem. 45 34 35 33 29 52 7 57 8 49 51 25 39 W tej pracy wprowadzamy nowe podejście, które ma na celu sprostanie wszystkim wymaganiom praktycznie użytecznego generatywnego modelu 3D. Konkretnie, proponujemy GET3D, model eneratywny dla kształtów 3D, który bezpośrednio generuje kspresyjne eksturowane siatki o wysokich szczegółach geometrycznych i teksturalnych oraz dowolnej topologii siatki. W sercu naszego podejścia znajduje się proces generatywny, który wykorzystuje różniczkowalną metodę ekstrakcji powierzchni [ ] i technikę renderowania różniczkowalnego [ , ]. Pierwsza pozwala nam bezpośrednio optymalizować i generować teksturowane siatki 3D o dowolnej topologii, podczas gdy druga pozwala nam trenować nasz model na obrazach 2D, wykorzystując tym samym potężne i dojrzałe dyskryminatory opracowane do syntezy obrazów 2D. Ponieważ nasz model bezpośrednio generuje siatki i wykorzystuje wysoce wydajny (różniczkowalny) renderer graficzny, możemy łatwo skalować nasz model do trenowania z rozdzielczością obrazu sięgającą 1024 × 1024, co pozwala nam uczyć się wysokiej jakości detali geometrycznych i teksturalnych. G E T 3D jawnej 60 47 37 Demonstrujemy najnowocześniejszą wydajność w zakresie bezwarunkowego generowania kształtów 3D w wielu kategoriach ze złożoną geometrią z ShapeNet [ ], Turbosquid [ ] i Renderpeople [ ], takich jak krzesła, motocykle, samochody, postacie ludzkie i budynki. Dzięki jawnej siatce jako reprezentacji wyjściowej, GET3D jest również bardzo elastyczny i może być łatwo adaptowany do innych zadań, w tym: uczenia się generowania zdekomponowanych efektów materiałowych i zależnych od widoku oświetlenia przy użyciu zaawansowanego renderowania różniczkowalnego [ ], bez nadzoru, generowania kształtów 3D na podstawie tekstu przy użyciu embeddingów CLIP [ ]. 9 4 2 (a) 12 (b) 56 2 Powiązane prace Przeglądamy najnowsze osiągnięcia w dziedzinie generatywnych modeli 3D dla geometrii i wyglądu, a także 3D-świadomej generatywnej syntezy obrazów. W ostatnich latach dwuwymiarowe modele generatywne osiągnęły fotorealistyczną jakość w syntezie obrazów o wysokiej rozdzielczości [ , , , , , , ]. Postęp ten zainspirował również badania nad generowaniem treści 3D. Wczesne podejścia miały na celu bezpośrednie rozszerzenie dwuwymiarowych generatorów CNN na trójwymiarowe siatki wokselowe [ , , , , ], ale wysokie zapotrzebowanie na pamięć i złożoność obliczeniowa konwolucji 3D utrudniają proces generowania w wysokiej rozdzielczości. Alternatywnie, inne prace badały reprezentacje chmur punktów [ , , , ], niejawne [ , ] lub oktree [ ]. Jednak prace te koncentrują się głównie na generowaniu geometrii i ignorują wygląd. Ich reprezentacje wyjściowe wymagają również post-processingu, aby były kompatybilne ze standardowymi silnikami graficznymi. Generatywne modele 3D 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Bardziej podobne do naszej pracy, Textured3DGAN [ , ] i DIBR [ ] generują teksturowane siatki 3D, ale formułują generowanie jako deformację siatki szablonu, co uniemożliwia im generowanie złożonej topologii lub kształtów o zmiennym genusie, co potrafi nasza metoda. PolyGen [ ] i SurfGen [ ] mogą generować siatki o dowolnej topologii, ale nie syntetyzują tekstur. 54 53 11 48 41 Zainspirowane sukcesem neuronowego renderowania wolumetrycznego [ ] i reprezentacji niejawnych [ , ], najnowsze prace rozpoczęły rozwiązywanie problemu 3D-świadomej syntezy obrazów [ , , , , , , , , , ]. Jednak sieci neuronowego renderowania wolumetrycznego są zazwyczaj powolne w zapytaniach, co prowadzi do długich czasów treningu [ , ] i generuje obrazy o ograniczonej rozdzielczości. GIRAFFE [ ] i StyleNerf [ ] poprawiają wydajność treningu i renderowania, wykonując neuronowe renderowanie w niższej rozdzielczości, a następnie skalując wyniki za pomocą CNN 2D. Jednak wzrost wydajności odbywa się kosztem zmniejszonej spójności z wieloma widokami. Wykorzystując podwójny dyskryminator, EG3D [ ] może częściowo złagodzić ten problem. Niemniej jednak, wyodrębnienie teksturowanej powierzchni z metod opartych na neuronowym renderowaniu jest niebanalnym przedsięwzięciem. W przeciwieństwie do tego, GET3D bezpośrednio generuje teksturowane siatki 3D, które mogą być łatwo używane w standardowych silnikach graficznych. 3D-świadoma generatywna synteza obrazów 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metoda Przedstawiamy nasz framework GET3D do syntezy teksturowanych kształtów 3D. Nasz proces generowania jest podzielony na dwie części: gałąź geometrii, która różniczkowo generuje siatkę powierzchni o dowolnej topologii, oraz gałąź tekstury, która produkuje pole tekstury, które może być odpytywane w punktach powierzchniowych w celu uzyskania kolorów. Ta ostatnia może być rozszerzona o inne właściwości powierzchni, takie jak na przykład materiały (Sekcja ). Podczas treningu, wydajny rasteryzator różniczkowalny jest wykorzystywany do renderowania wygenerowanej teksturowanej siatki do dwuwymiarowych obrazów o wysokiej rozdzielczości. Cały proces jest różniczkowalny, co pozwala na trening adwersarialny na podstawie obrazów (z maskami wskazującymi obiekt zainteresowania) poprzez propagację gradientów z dwuwymiarowego dyskryminatora do obu gałęzi generatora. Nasz model jest zilustrowany na Rys. . W dalszej części najpierw wprowadzamy nasz generator 3D w Sekcji , a następnie przechodzimy do renderowania różniczkowalnego i funkcji strat w Sekcji . 4.3.1 2 3.1 3.2 3.1 Generatywny model siatek 3D z teksturą Naszym celem jest nauczenie generatora 3D = ( ), który mapuje próbkę z rozkładu Gaussa M, E G z ∈ N (0*,* ) do siatki z teksturą . z I M E Ponieważ ta sama geometria może mieć różne tekstury, a ta sama tekstura może być stosowana do różnych geometrii, pobieramy dwie losowe wektory wejściowe 1 ∈ R512 i 2 ∈ R512. Zgodnie ze StyleGAN [ , , ], używamy następnie nieliniowych sieci mapowania geo i tex do mapowania 1 i 2 do pośrednich wektorów latentnych 1 = geo( 1) i 2 = tex( 2), które są dalej wykorzystywane do produkcji kontrolujących generowanie kształtów 3D i tekstury, odpowiednio. Formalnie wprowadzamy generator geometrii w Sekcji , a generator tekstury w Sekcji . z z 34 35 33 f f z z w f z w f z stylów 3.1.1 3.1.2 3.1.1 Generator Geometrii Projektujemy nasz generator geometrii tak, aby zawierał DMTet [ ], niedawno zaproponowaną różniczkowalną reprezentację powierzchni. DMTet reprezentuje geometrię jako pole odległości ze znakiem (SDF) zdefiniowane na deformowalnej siatce tetraedralnej [ , ], z której powierzchnia może być różniczkowo odzyskiwana poprzez marszowanie tetraedrów [ ]. Deformowanie siatki poprzez przesuwanie jej wierzchołków pozwala na lepsze wykorzystanie jej rozdzielczości. Przyjmując DMTet do ekstrakcji powierzchni, możemy produkować jawne siatki o dowolnej topologii i genusie. Następnie przedstawiamy krótkie podsumowanie DMTet i odsyłamy czytelnika do oryginalnego artykułu po dalsze szczegóły. 60 22 24 17 Niech ( ) oznacza całą przestrzeń 3D, w której znajduje się obiekt, gdzie to wierzchołki w siatce tetraedralnej . Każdy tetraedr ∈ jest zdefiniowany przy użyciu czterech wierzchołków { }, z ∈ {1*, . . . , K*}, gdzie to całkowita liczba tetraedrów, a ∈ ∈ R3. Oprócz swoich współrzędnych 3D, każdy wierzchołek zawiera wartość SDF ∈ R i deformację ∆ ∈ R3 wierzchołka od jego początkowej kanonicznej współrzędnej. Ta reprezentacja pozwala na odzyskanie jawnej siatki poprzez różniczkowalny algorytm marszowania tetraedrów [ ], gdzie wartości SDF w ciągłej przestrzeni są obliczane przez interpolację barycentryczną ich wartości na zdeformowanych wierzchołkach ′ = + ∆ . VT , T VT T Tk T v ak , v bk , v ck , v dk k K v ik VT , v ik i v i si v i 60 si v v i v i Mapujemy 1 ∈ R512 do wartości SDF i deformacji w każdym wierzchołku poprzez serię warstw konwolucyjnych 3D i w pełni połączonych warstw warunkowych. Konkretnie, najpierw używamy warstw konwolucyjnych 3D do wygenerowania wolumenu cech warunkowanego przez 1. Następnie odpytujemy cechy w każdym wierzchołku ∈ za pomocą interpolacji trilinearnej i przekazujemy je do MLP, które generuje wartość SDF i deformację ∆ . W przypadkach, gdy wymagane jest modelowanie w wysokiej rozdzielczości (np. motocykl z cienkimi elementami w kołach), dodatkowo stosujemy podział wolumenu zgodnie z [ ]. Architektura sieci w v i w v i VT si v i 60 Po uzyskaniu i ∆ dla wszystkich wierzchołków, używamy algorytmu marszowania tetraedrów różniczkowalnego do ekstrakcji jawnej siatki. Marszowanie tetraedrów określa topologię powierzchni wewnątrz każdego tetraedru na podstawie znaków . W szczególności, ściana siatki jest wydobywana, gdy sign( ) /= sign( ), gdzie oznacza indeksy wierzchołków na krawędzi tetraedru, a wierzchołki tej ściany są określone przez interpolację liniową jako mi,j = v 0 i sj−v 0 j si sj−si . Należy zauważyć, że powyższe równanie jest oceniane tylko wtedy, gdy si 6= sj, jest zatem różniczkowalne, a gradient z mi,j może być propagowany wstecz do wartości SDF si i deformacji ∆vi . Dzięki tej reprezentacji, kształty o dowolnej topologii można łatwo generować, przewidując różne znaki si . Różniczkowalna ekstrakcja siatki si v i si si sj i, j m i,j 3.1.2 Generator Tekstury Bezpośrednie generowanie mapy tekstury zgodnej z wygenerowaną siatką nie jest trywialne, ponieważ wygenerowany kształt może mieć dowolny genus i topologię. Dlatego parametryzujemy teksturę jako pole tekstury [ ]. 50 Konkretnie, modelujemy pole tekstury za pomocą funkcji , która mapuje trójwymiarową lokalizację punktu powierzchniowego ∈ R3, warunkowaną przez 2, do koloru RGB ∈ R3 w tej lokalizacji. Ponieważ pole tekstury zależy od geometrii, dodatkowo warunkujemy to mapowanie na kod latentny geometrii 1, tak że = ( *,* 1 ⊕ 2), gdzie ⊕ oznacza konkatenację. ft p w c w c ft p w w Reprezentujemy nasze pole tekstury za pomocą reprezentacji tri-planowej, która jest wydajna i ekspresywna w rekonstrukcji obiektów 3D [ ] i generowaniu obrazów 3D-świadomych [ ]. Konkretnie, podążamy za [ , ] i używamy warunkowej dwuwymiarowej sieci konwolucyjnej do mapowania kodu latentnego 1 ⊕ 2 na trzy ortogonalne płaszczyzny cech wyrównane osiowo o rozmiarze × × ( × 3), gdzie = 256 oznacza rozdzielczość przestrzenną, a = 32 liczbę kanałów. Architektura sieci 55 8 8 35 w w N N C N C Biorąc pod uwagę płaszczyzny cech, wektor cech f t ∈ R 32 punktu powierzchniowego p można odzyskać jako f t = P e ρ(πe(p)), gdzie πe(p) to projekcja punktu p na płaszczyznę cech e, a ρ(·) oznacza interpolację dwuliniową cech. Dodatkowa w pełni połączona warstwa jest następnie używana do mapowania zagregowanego wektora cech f t na kolor RGB c. Należy zauważyć, że w przeciwieństwie do innych prac nad syntezą obrazów 3D-świadomych, które również wykorzystują reprezentację pola neuronowego, my musimy tylko próbować pole tekstury w lokalizacjach punktów powierzchniowych (w przeciwieństwie do gęstych próbek wzdłuż promienia). To znacznie zmniejsza złożoność obliczeniową renderowania obrazów o wysokiej rozdzielczości i gwarantuje generowanie spójnych z wieloma widokami obrazów przez konstrukcję. 3.2 Renderowanie różniczkowalne i trening Aby nadzorować nasz model podczas treningu, czerpiemy inspirację z Nvdiffrec [ ], który wykonuje rekonstrukcję obiektów 3D w wielu widokach przy użyciu renderera różniczkowalnego. Konkretnie, renderujemy wyekstrahowaną siatkę 3D i pole tekstury do obrazów 2D za pomocą renderera różniczkowalnego [ ], a następnie nadzorujemy naszą sieć za pomocą dwuwymiarowego dyskryminatora, który próbuje odróżnić obraz od prawdziwego obiektu lub obraz wyrenderowany z wygenerowanego obiektu. 47 37 Zakładamy, że rozkład kamery C, który był używany do pozyskania obrazów w zbiorze danych, jest znany. Aby wyrenderować wygenerowane kształty, losowo pobieramy kamerę z C i wykorzystujemy wysoce zoptymalizowany rasteryzator różniczkowalny Nvdiffrast [ ] do wyrenderowania siatki 3D do dwuwymiarowej sylwetki, a także obrazu, w którym każdy piksel zawiera współrzędne odpowiedniego punktu 3D Renderowanie różniczkowalne c 37 na powierzchni siatki. Te współrzędne są dalej wykorzystywane do odpytywania pola tekstury w celu uzyskania wartości RGB. Ponieważ działamy bezpośrednio na wyekstrahowanej siatce, możemy renderować obrazy o wysokiej rozdzielczości z wysoką wydajnością, co pozwala na trenowanie naszego modelu z rozdzielczością obrazu sięgającą 1024 × 1024. Trenujemy nasz model za pomocą celu adwersarialnego. Przyjmujemy architekturę dyskryminatora ze StyleGAN [ ] i używamy tego samego celu GAN bez saturacji z regularyzacją R1 [ ]. Empirycznie stwierdziliśmy, że użycie dwóch oddzielnych dyskryminatorów, jednego dla obrazów RGB i drugiego dla sylwetek, daje lepsze wyniki niż pojedynczy dyskryminator działający na obu. Niech oznacza dyskryminator, gdzie może być obrazem RGB lub sylwetką. Cel adwersarialny jest wtedy zdefiniowany jako: Dyskryminator & Cel 34 42 Dx x gdzie ( ) jest zdefiniowane jako ( ) = − log(1 +exp(− )), to rozkład rzeczywistych obrazów, oznacza renderowanie, a jest hiperparametrem. Ponieważ jest różniczkowalne, gradienty mogą być propagowane wstecz od obrazów 2D do naszych generatorów 3D. g u g u u px R λ R Aby usunąć wewnętrzne pływające ściany, które nie są widoczne w żadnym z widoków, dodatkowo regularyzujemy generator geometrii stratą krzyżowej entropii zdefiniowaną między wartościami SDF sąsiednich wierzchołków [ ]: Regularyzacja 47 gdzie oznacza stratę binarnej entropii krzyżowej, a oznacza funkcję sigmoidalną. Suma w Równ. jest zdefiniowana dla zbioru unikalnych krawędzi S w siatce tetraedralnej, dla której sign( ) /= sign( ). H σ 2 e si sj Całkowita funkcja strat jest wtedy zdefiniowana jako: gdzie jest hiperparametrem kontrolującym poziom regularyzacji. µ