```html 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 ogromnych wirtualnych światów 3D, staje się oczywiste 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 modeli generatywnych 3D, które syntetyzują teksturowane siatki, które mogą być bezpośrednio konsumowane przez silniki renderowania 3D, a tym samym natychmiast użyteczne w aplikacjach końcowych. Poprzednie prace nad modelowaniem generatywnym 3D albo brakowało szczegółów geometrycznych, albo były ograniczone w topologii siatki, którą mogły wytwarzać, zazwyczaj nie obsługiwały tekstur, albo wykorzystywały renderery neuronowe w procesie syntezy, co sprawia, że ich użycie w typowym oprogramowaniu 3D jest niebanalne. W tej pracy wprowadzamy GET3D, enerative model that directly generates xplicit extured meshes with complex topology, rich geometric details, and high fidelity textures. Łączymy niedawne sukcesy w modelowaniu powierzchni różniczkowalnej, renderowaniu różniczkowalnym, jak również w 2D Generative Adversarial Networks, 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ące ulepszenia 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 specyficznej 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 do, powiedzmy, zapełnienia gry lub filmu tłumem postaci, które wszystkie wyglądają inaczej, nadal zajmuje znaczną ilość czasu artysty. 4 3 Aby ułatwić proces tworzenia treści i uczynić go dostępnym dla różnych (początkujących) użytkowników, generatywne sieci 3D, które mogą produkować wysokiej jakości i zróżnicowane zasoby 3D, stały się ostatnio aktywnym obszarem badań [ , , , , , , , , , , ]. Jednakże, aby być praktycznie użyteczne dla obecnych zastosowań w świecie rzeczywistym, modele generatywne 3D powinny idealnie spełniać następujące wymagania: Powinny mieć możliwość generowania kształtów ze szczegółową geometrią i dowolną topologią, Wyjście powinno być teksturowaną siatką, która jest podstawową reprezentacją używaną przez standardowe pakiety oprogramowania graficznego, takie jak Blender [ ] i Maya [ ], i 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) Poprzednie prace nad modelowaniem generatywnym 3D koncentrowały się na podzbiorach powyższych wymagań, ale żadna metoda do tej pory nie spełnia ich wszystkich (Tab. ). Na przykład metody, które generują chmury punktów 3D [ , 68, 75], zazwyczaj nie generują 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 generują tekstur [ , , , ]. Modele generatywne oparte na polach neuronowych [ , ] skupiają się na ekstrakcji geometrii, ale ignorują teksturę. Większość z nich wymaga również jawnego nadzoru 3D. Wreszcie, metody, które bezpośrednio generują 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 rodzaju. 66 20 27 40 43 14 54 53 Ostatnio, szybki postęp w neuronowym renderowaniu wolumetrycznym [ ] i 2D Generative Adversarial Networks (GANs) [ , , , , ] doprowadził do powstania syntezy obrazów świadomych 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ć znaczące kształty 3D. Chociaż siatka może potencjalnie być uzyskana z bazowej reprezentacji pola neuronowego przy użyciu algorytmu marching cubes [ ], ekstrakcja odpowiedniej tekstury jest niebanalna. 45 34 35 33 29 52 7 57 8 49 51 25 39 W tej pracy wprowadzamy nowatorskie podejście, które ma na celu sprostanie wszystkim wymaganiom praktycznie użytecznego modelu generatywnego 3D. W szczególności proponujemy GET3D, enerative model for 3D shapes that directly outputs xplicit extured meshes with high geometric and texture detail and arbitrary mesh topology. Sercem naszego podejścia jest proces generatywny, który wykorzystuje różniczkowalną metodę ekstrakcji powierzchni [ ] i technikę renderowania różniczkowalnego [ , ]. Pierwsza umożliwia nam bezpośrednią optymalizację i generowanie teksturowanych siatek 3D o dowolnej topologii, podczas gdy druga pozwala nam trenować nasz model za pomocą obrazów 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, aby trenować go z rozdzielczością obrazu do 1024 × 1024, co pozwala nam uczyć się wysokiej jakości detali geometrycznych i tekstur. G E T 3D jawnej 60 47 37 Wykazujemy 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, postaci ludzkie i budynki. Dzięki jawnej siatce jako reprezentacji wyjściowej, GET3D jest również bardzo elastyczny i może być łatwo dostosowany do innych zadań, w tym: uczenie się generowania zdekomponowanych efektów materiałowych i zależnych od widoku oświetlenia za pomocą zaawansowanego renderowania różniczkowalnego [ ], bez nadzoru, generowanie kształtów 3D kierowane tekstem za pomocą osadzania CLIP [ ]. 9 4 2 (a) 12 (b) 56 2 Powiązana praca Przeglądamy najnowsze osiągnięcia w dziedzinie modeli generatywnych 3D dla geometrii i wyglądu, a także syntezy obrazów generatywnych świadomych 3D. W ostatnich latach modele generatywne 2D 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 generatorów 2D CNN na 3D 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 [ , , , ], ukryte [ , ] lub oktree [ ]. Jednak te prace koncentrują się głównie na generowaniu geometrii i ignorują wygląd. Ich reprezentacje wyjściowe również wymagają post-processingu, aby uczynić je kompatybilnymi ze standardowymi silnikami graficznymi. Modele generatywne 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 rodzaju, co nasza metoda potrafi. 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 ukrytych [ , ], najnowsze prace zaczęły zajmować się problemem syntezy obrazów świadomych 3D [ , , , , , , , , , ]. Jednak sieci neuronowego renderowania wolumetrycznego są zazwyczaj wolne w zapytaniach, co prowadzi do długich czasów treningu [ , ] i generowania obrazów 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ą 2D CNN. Jednak zysk wydajności odbywa się kosztem zmniejszonej spójności wielokrotnych widoków. Używając podwójnego dyskryminatora, EG3D [ ] może częściowo złagodzić ten problem. Niemniej jednak, ekstrakcja teksturowanej powierzchni z metod opartych na neuronowym renderowaniu jest zadaniem niebanalnym. W przeciwieństwie do tego, GET3D bezpośrednio generuje teksturowane siatki 3D, które mogą być łatwo używane w standardowych silnikach graficznych. Synteza obrazów generatywnych świadomych 3D 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metoda Prezentujemy teraz nasz framework GET3D do syntezy teksturowanych kształtów 3D. Nasz proces generowania jest podzielony na dwie części: gałąź geometrii, która różniczkowalnie generuje siatkę powierzchni o dowolnej topologii, oraz gałąź tekstury, która tworzy pole tekstury, które może być zapytane w punktach powierzchni w celu uzyskania kolorów. Ta ostatnia może być rozszerzona na inne właściwości powierzchni, takie jak na przykład materiały (Sek. ). Podczas treningu wykorzystywany jest wydajny rasteryzator różniczkowalny do renderowania wynikowej teksturowanej siatki na obrazy 2D o wysokiej rozdzielczości. Cały proces jest różniczkowalny, co pozwala na trening adwersarialny z obrazów (z maskami wskazującymi obiekt zainteresowania) poprzez propagację gradientów z dyskryminatora 2D 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 Generator 3D teksturowanych siatek Chcemy nauczyć generator 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ć zastosowana do różnych geometrii, próbujemy dwa losowe wektory wejściowe 1 ∈ R512 i 2 ∈ R512. Zgodnie ze StyleGAN [ , , ], używamy nieliniowych sieci mapujących geo i tex, aby mapować 1 i 2 do pośrednich wektorów latentnych 1 = geo( 1) i 2 = tex( 2), które są dalej używane 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 proponowaną reprezentację powierzchni różniczkowalnej. DMTet reprezentuje geometrię jako pole odległości znaku (SDF) zdefiniowane na odkształcalnej sieci tetraedralnej [ , ], z której powierzchnia może być odzyskana różniczkowalnie poprzez tetraedry marszowe [ ]. Odkształcanie sieci poprzez przesuwanie jej wierzchołków prowadzi do lepszego wykorzystania jej rozdzielczości. Przyjmując DMTet do ekstrakcji powierzchni, możemy generować jawne siatki o dowolnej topologii i rodzaju. Następnie podajemy krótkie podsumowanie DMTet i odsyłamy czytelnika do oryginalnego artykułu po więcej szczegółów. 60 22 24 17 Niech ( ) oznacza pełną przestrzeń 3D, w której znajduje się obiekt, gdzie to wierzchołki w sieci tetraedralnej . Każdy tetraedr ∈ jest zdefiniowany za pomocą 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 pierwotnej kanonicznej współrzędnej. Ta reprezentacja pozwala na odzyskanie jawnej siatki za pomocą algorytmu marszowania tetraedrów różniczkowalnych [ ], gdzie wartości SDF w przestrzeni ciągłej 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 na wartości SDF i deformacje w każdym wierzchołku za pomocą serii warstw konwolucyjnych 3D i w pełni połączonych warstw. Konkretnie, najpierw używamy warstw konwolucyjnych 3D do wygenerowania wolumenu cech uwarunkowanego na 1. Następnie zapytujemy 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 strukturami 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óżniczkowalnych 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 ekstrahowana, 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 obliczane tylko wtedy, gdy si 6= sj , więc jest różniczkowalne, a gradient z mi,j może być cofnięty do wartości SDF si i deformacji ∆vi . Dzięki tej reprezentacji, kształty o dowolnej topologii mogą być łatwo generowane poprzez przewidywanie różnych znaków 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 spójnej z wyjściową siatką nie jest trywialne, ponieważ wygenerowany kształt może mieć dowolny rodzaj i topologię. Dlatego parametryzujemy teksturę jako pole tekstury [ ]. 50 Konkretnie, modelujemy pole tekstury za pomocą funkcji , która mapuje trójwymiarową lokalizację punktu powierzchni ∈ R3, uwarunkowaną na 2, na kolor RGB ∈ R3 w tej lokalizacji. Ponieważ pole tekstury zależy od geometrii, dodatkowo warunkujemy tę mapę 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-plane, która jest wydajna i ekspresyjna w rekonstrukcji obiektów 3D [ ] i generowaniu obrazów świadomych 3D [ ]. Konkretnie, zgodnie z [ , ], używamy warunkowej sieci konwolucyjnej 2D do mapowania kodu latentnego 1 ⊕ 2 na trzy osiowo-wyrównane ortogonalne płaszczyzny cech o rozmiarze × × ( × 3), gdzie = 256 oznacza rozdzielczość przestrzenną, a = 32 oznacza 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 powierzchni p jest odzyskiwany jako f t = P e ρ(πe(p)), gdzie πe(p) jest projekcją 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 świadomych 3D [8, 25, 7, 57], które również używają reprezentacji pola neuronowego, musimy jedynie próbować pole tekstury w lokalizacjach punktów powierzchni (w przeciwieństwie do gęstych próbek wzdłuż promienia). Znacznie zmniejsza to złożoność obliczeniową renderowania obrazów o wysokiej rozdzielczości i gwarantuje generowanie obrazów spójnych z wieloma widokami z konstrukcji. 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, wykorzystując renderer różniczkowalny. Konkretnie, renderujemy wyekstrahowaną siatkę 3D i pole tekstury na obrazy 2D za pomocą renderera różniczkowalnego [ ] i nadzorujemy naszą sieć za pomocą dyskryminatora 2D, który próbuje odróżnić obraz od rzeczywistego obiektu lub wyrenderowanego z wygenerowanego obiektu. 47 37 Zakładamy, że rozkład kamer C, który został użyty do pozyskania obrazów w zbiorze danych, jest znany. Aby wyrenderować wygenerowane kształty, losowo próbujemy kamerę z C i wykorzystujemy wysoce zoptymalizowany rasteryzator różniczkowalny Nvdiffrast [ ] do renderowania siatki 3D na 2D sylwetkę, jak również obraz, 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 używane do zapytania pola tekstury w celu uzyskania wartości RGB. Ponieważ operujemy 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 do 1024×1024. Trenujemy nasz model za pomocą celu adwersarialnego. Przyjmujemy architekturę dyskryminatora z StyleGAN [ ] i używamy tego samego celu GAN bez saturacji z regularyzacją R1 [ ]. Empirycznie stwierdzamy, że użycie dwóch oddzielnych dyskryminatorów, jednego dla obrazów RGB i drugiego dla sylwetek, daje lepsze wyniki niż jeden dyskryminator działający na obu. Niech oznacza dyskryminator, gdzie jest obrazem RGB lub sylwetką. Cel adwersarialny jest wtedy zdefiniowany w następujący sposób: 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ć cofnięte z obrazów 2D do naszych generatorów 3D. g u g u u px R λ R Aby usunąć wewnętrzne płaskie ś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 binarną stratę krzyżowej entropii, a oznacza funkcję sigmoidalną. Suma w równaniu jest zdefiniowana nad zbiorem unikalnych krawędzi S w sieci tetraedralnej, dla których sign( ) /= sign( ). H σ 2 e si sj Ogólna funkcja straty jest następnie zdefiniowana jako: gdzie jest hiperparametrem kontrolującym poziom regularyzacji. µ