```html Autoři: 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 Vzhledem k tomu, že několik průmyslových odvětví směřuje k modelování rozsáhlých 3D virtuálních světů, stává se zjevná potřeba nástrojů pro tvorbu obsahu, které se dokážou škálovat z hlediska množství, kvality a rozmanitosti 3D obsahu. V naší práci se snažíme trénovat výkonné 3D generativní modely, které syntetizují texturované sítě, jež mohou být přímo spotřebovány 3D renderingovými enginy, a tedy okamžitě použitelné v navazujících aplikacích. Předchozí práce na 3D generativním modelování buď postrádají geometrické detaily, jsou omezeny topologií sítě, kterou mohou produkovat, typicky nepodporují textury, nebo využívají neuronové rendery v procesu syntézy, což činí jejich použití v běžném 3D softwaru nejednoduchým. V této práci představujeme GET3D, enerativní model, který přímo generuje xplicitní exturované sítě se složitou topologií, bohatými geometrickými detaily a texturami s vysokou věrností. Propojujeme nedávné úspěchy v diferencovatelném modelování povrchů, diferencovatelném renderingu a 2D generativních adverzních sítích (GAN) k trénování našeho modelu z kolekcí 2D obrázků. GET3D je schopen generovat vysoce kvalitní 3D texturované sítě, od aut, židlí, zvířat, motocyklů a lidských postav po budovy, a dosahuje významného zlepšení oproti předchozím metodám. Naše projektová stránka: G E T 3D https://nv-tlabs.github.io/GET3D 1 Úvod Rozmanitý, vysoce kvalitní 3D obsah se stává stále důležitějším pro několik průmyslových odvětví, včetně herního průmyslu, robotiky, architektury a sociálních platforem. Manuální tvorba 3D aktiv je však velmi časově náročná a vyžaduje specifické technické znalosti i umělecké modelovací dovednosti. Jednou z hlavních výzev je tedy škálování – zatímco 3D modely lze nalézt na 3D tržištích, jako je Turbosquid [ ] nebo Sketchfab [ ], vytvoření mnoha 3D modelů, například k zaplnění hry nebo filmu davem postav, které všechny vypadají odlišně, stále vyžaduje značné množství času umělců. 4 3 Pro usnadnění procesu tvorby obsahu a jeho zpřístupnění různým (začínajícím) uživatelům se generativní 3D sítě, které dokážou produkovat vysoce kvalitní a rozmanitá 3D aktiva, staly v poslední době aktivní oblastí výzkumu [ , , , , , , , , , , ]. Aby však 3D generativní modely mohly být prakticky použitelné pro současné reálné aplikace, měly by ideálně splňovat následující požadavky: Měly by mít schopnost generovat tvary s detailní geometrií a libovolnou topologií, Výstupem by měla být texturovaná síť, což je primární reprezentace používaná standardními grafickými softwarovými balíčky, jako je Blender [ ] a Maya [ ], a Měli bychom být schopni využít 2D obrázky pro dohled, protože jsou šířeji dostupné než explicitní 3D tvary. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Předchozí práce na 3D generativním modelování se zaměřovaly na podmnožiny výše uvedených požadavků, ale žádná metoda dosud nesplňuje všechny (Tab. ). Například metody, které generují 3D mraky bodů [ , 68, 75], obvykle neprodukují textury a musí být v post-processingu převedeny na síť. 1 5 Metody generující voxely často postrádají geometrické detaily a neprodukují texturu [ , , , ]. Generativní modely založené na neuronových polích [ , ] se zaměřují na extrakci geometrie, ale ignorují texturu. Většina z nich také vyžaduje explicitní 3D dohled. Konečně, metody, které přímo produkují texturované 3D sítě [ , ], typicky vyžadují předdefinované šablony tvarů a nemohou generovat tvary se složitou topologií a variabilním rodem. 66 20 27 40 43 14 54 53 Nedávné rychlé pokroky v neuronovém objemovém renderingu [ ] a 2D generativních adverzních sítích (GAN) [ , , , , ] vedly k vzestupu 3D-aware syntézy obrazu [ , , , , , ]. Nicméně, tato linie prací se zaměřuje na syntézu obrazů konzistentních s více pohledy pomocí neuronového renderingu v procesu syntézy a negarantuje, že lze generovat smysluplné 3D tvary. Ačkoli síť může být potenciálně získána z podkladové reprezentace neuronového pole pomocí algoritmu Marching Cubes [ ], extrakce odpovídající textury je nejednoduchý úkol. 45 34 35 33 29 52 7 57 8 49 51 25 39 V této práci představujeme nový přístup, který si klade za cíl řešit všechny požadavky na prakticky užitečný 3D generativní model. Konkrétně navrhujeme GET3D, enerativní model pro 3D tvary, který přímo generuje xplicitní exturované sítě s vysokými geometrickými a texturovými detaily a libovolnou topologií sítě. Srdcem našeho přístupu je generativní proces, který využívá diferencovatelnou metodu extrakce povrchů [ ] a techniku diferencovatelného renderingu [ , ]. První nám umožňuje přímo optimalizovat a generovat texturované 3D sítě s libovolnou topologií, zatímco druhý nám umožňuje trénovat náš model pomocí 2D obrázků, čímž využíváme silné a zralé diskriminátory vyvinuté pro 2D syntézu obrazu. Jelikož náš model přímo generuje sítě a používá vysoce efektivní (diferencovatelný) grafický renderer, můžeme náš model snadno škálovat pro trénování s obrazovým rozlišením až 1024 × 1024, což nám umožňuje naučit se vysoce kvalitní geometrické a texturové detaily. G E T 3D explicitních 60 47 37 Demonstrujeme špičkový výkon pro neřízenou generaci 3D tvarů na více kategoriích se složitou geometrií ze ShapeNet [ ], Turbosquid [ ] a Renderpeople [ ], jako jsou auta, židle, lidské postavy a budovy. S explicitní sítí jako výstupní reprezentací je GET3D také velmi flexibilní a lze jej snadno přizpůsobit dalším úlohám, včetně: učení se generovat dekomponované materiály a světelné efekty závislé na pohledu pomocí pokročilého diferencovatelného renderingu [ ], bez dohledu, generování 3D tvarů řízených textem pomocí CLIP [ ] embeddingů. 9 4 2 (a) 12 (b) 56 2 Související práce Shrnujeme nedávné pokroky v 3D generativních modelech pro geometrii a vzhled, stejně jako 3D-aware generativní syntézu obrazu. V posledních letech dosáhly 2D generativní modely fotorealistické kvality ve syntéze obrazu ve vysokém rozlišení [ , , , , , , ]. Tento pokrok inspiroval také výzkum v oblasti generování 3D obsahu. Rané přístupy se snažily přímo rozšířit 2D CNN generátory na 3D voxelové mřížky [ , , , , ], ale vysoká paměťová náročnost a výpočetní složitost 3D konvolucí brání procesu generování ve vysokém rozlišení. Jako alternativu jiné práce zkoumaly reprezentace mraků bodů [ , , , ], implicitní [ , ], nebo oktree [ ]. Tyto práce se však zaměřují převážně na generování geometrie a ignorují vzhled. Jejich výstupní reprezentace také potřebují post-processing, aby byly kompatibilní se standardními grafickými enginy. 3D generativní modely 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Podobnější naší práci, Textured3DGAN [ , ] a DIBR [ ] generují texturované 3D sítě, ale formulují generování jako deformaci šablonové sítě, což jim brání v generování složité topologie nebo tvarů s různými rody, což naše metoda dokáže. PolyGen [ ] a SurfGen [ ] dokážou produkovat sítě s libovolnou topologií, ale nesyntetizují textury. 54 53 11 48 41 Inspirováno úspěchem neuronového objemového renderingu [ ] a implicitních reprezentací [ , ], nedávné práce začaly řešit problém 3D-aware syntézy obrazu [ , , , , , , , , , ]. Nicméně neuronové objemové renderingové sítě jsou typicky pomalé na dotazování, což vede k dlouhým časům trénování [ , ] a generují obrazy s omezeným rozlišením. GIRAFFE [ ] a StyleNerf [ ] zlepšují efektivitu trénování a renderingu tím, že provádějí neuronový rendering v nižším rozlišení a poté výsledky upscalují pomocí 2D CNN. Zisk výkonu však přichází za cenu snížené konzistence mezi více pohledy. Použitím duálního diskriminátoru může EG3D [ ] tento problém částečně zmírnit. Nicméně extrakce texturovaného povrchu z metod založených na neuronovém renderingu je nejednoduchý úkol. Na rozdíl od toho GET3D přímo generuje texturované 3D sítě, které lze snadno použít ve standardních grafických enginech. 3D-Aware generativní syntéza obrazu 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metoda Nyní představujeme náš GET3D framework pro syntézu texturovaných 3D tvarů. Náš proces generování je rozdělen do dvou částí: geometrická větev, která diferencovatelně generuje povrchovou síť libovolné topologie, a texturová větev, která produkuje texturové pole, na které lze dotazovat body povrchu pro získání barev. Druhá zmíněná může být rozšířena o další vlastnosti povrchu, jako jsou například materiály (Sek. ). Během trénování se používá efektivní diferencovatelný rasterizér k vykreslení výsledné texturované sítě do 2D obrázků ve vysokém rozlišení. Celý proces je diferencovatelný, což umožňuje adverzní trénování z obrázků (s maskami indikujícími objekt zájmu) propagací gradientů z 2D diskriminátoru do obou generátorových větví. Náš model je znázorněn na Obr. . V následujících částech nejprve představíme náš 3D generátor v Sek. , než přejdeme k diferencovatelnému renderingu a ztrátovým funkcím v Sek. . 4.3.1 2 3.1 3.2 3.1 Generativní model 3D texturovaných sítí Cílem je naučit 3D generátor = ( ) namapovat vzorek z Gaussovského rozdělení M, E G z ∈ N (0*,* ) na síť s texturou . z I M E Protože stejná geometrie může mít různé textury a stejná textura může být aplikována na různé geometrie, vzorkujeme dva náhodné vstupní vektory 1 ∈ R512 a 2 ∈ R512. V návaznosti na StyleGAN [ , , ] pak používáme nelineární mapovací sítě geo a tex k mapování 1 a 2 na mezilehlé latentní vektory 1 = geo( 1) a 2 = tex( 2), které se dále používají k produkci , jež řídí generování 3D tvarů a textury, resp. Formálně představujeme generátor geometrie v Sek. a generátor textury v Sek. . z z 34 35 33 f f z z w f z w f z stylů 3.1.1 3.1.2 3.1.1 Generátor geometrie Navrhujeme náš generátor geometrie tak, aby zahrnoval DMTet [ ], nedávno navrženou diferencovatelnou reprezentaci povrchu. DMTet reprezentuje geometrii jako pole vzdáleností znaménka (SDF) definované na deformovatelném tetraedrickém mřížce [ , ], ze které lze diferencovatelně získat povrch pomocí Marching Tetrahedra [ ]. Deformace mřížky posunutím jejích vrcholů umožňuje lepší využití jejího rozlišení. Přijetím DMTet pro extrakci povrchu můžeme produkovat explicitní sítě s libovolnou topologií a rodem. Níže uvádíme stručné shrnutí DMTet a pro další podrobnosti odkazujeme čtenáře na původní článek. 60 22 24 17 Nechť ( ) označuje celý 3D prostor, ve kterém se objekt nachází, kde jsou vrcholy v tetraedrické mřížce . Každý tetrahedron ∈ je definován pomocí čtyř vrcholů { }, s ∈ {1*, . . . , K*}, kde je celkový počet tetraedrů a ∈ ∈ R3. Kromě svých 3D souřadnic obsahuje každý vrchol hodnotu SDF ∈ R a deformaci ∆ ∈ R3 vrcholu od jeho počáteční kanonické souřadnice. Tato reprezentace umožňuje získat explicitní síť pomocí diferencovatelného algoritmu Marching Tetrahedra [ ], kde hodnoty SDF v kontinuálním prostoru jsou počítány barycentrickou interpolací jejich hodnot na deformovaných vrcholech ′ = + ∆ . VT , T VT T Tk T v ak , v bk , v ck , v dk k K v ik VT , v ik v i si v i 60 si v v i v i Mapujeme 1 ∈ R512 na hodnoty SDF a deformace na každý vrchol pomocí série podmíněných 3D konvolučních a plně propojených vrstev. Konkrétně nejprve použijeme 3D konvoluční vrstvy k vygenerování objemu příznaků podmíněného na 1. Poté dotazujeme příznak na každý vrchol ∈ pomocí trilineární interpolace a předáváme jej do MLPs, které generují hodnotu SDF a deformaci ∆ . V případech, kdy je vyžadováno modelování ve vysokém rozlišení (např. motocykl s tenkými strukturami na kolech), dále používáme objemové dělení podle [ ]. Architektura sítě w v i w v i VT si v i 60 Po získání a ∆ pro všechny vrcholy používáme diferencovatelný algoritmus Marching Tetrahedra k extrakci explicitní sítě. Marching Tetrahedra určuje topologii povrchu v každém tetrahedronu na základě znamének . Konkrétně je síťová plocha extrahována, když sign( ) /= sign( ), kde označují indexy vrcholů na hraně tetraedru, a vrcholy této plochy jsou určeny lineární interpolací jako mi,j = v 0 i sj−v 0 j si sj−si . Všimněte si, že výše uvedená rovnice je vyhodnocena pouze tehdy, když si 6= sj , takže je diferencovatelná a gradient z mi,j lze zpětně propagovat do hodnot SDF si a deformací ∆vi . S touto reprezentací lze snadno generovat tvary s libovolnou topologií předpovídáním různých znamének si . Diferencovatelná extrakce sítě si v i si si sj i, j m i,j 3.1.2 Generátor textury Přímo generovat texturovou mapu konzistentní s výstupní sítí není jednoduché, protože generovaný tvar může mít libovolný rod a topologii. Proto parametrizujeme texturu jako texturové pole [ ]. 50 Konkrétně parametrizujeme texturové pole pomocí funkce , která mapuje 3D polohu povrchového bodu ∈ R3, podmíněnou na 2, na RGB barvu ∈ R3 v této poloze. Protože texturové pole závisí na geometrii, dodatečně podmiňujeme toto mapování latentním kódem geometrie 1, takže = ( *,* 1 ⊕ 2), kde ⊕ značí zřetězení. ft p w c w c ft p w w Texturové pole reprezentujeme pomocí tri-plane reprezentace, která je efektivní a expresivní při rekonstrukci 3D objektů [ ] a generování 3D-aware obrazů [ ]. Konkrétně sledujeme [ , ] a používáme podmíněnou 2D konvoluční neuronovou síť k mapování latentního kódu 1 ⊕ 2 na tři osou souřadnicové ortogonální příznakové roviny o velikosti × × ( × 3), kde = 256 označuje prostorové rozlišení a = 32 počet kanálů. Architektura sítě 55 8 8 35 w w N N C N C Z daných příznakových rovin lze příznakový vektor f t ∈ R 32 povrchového bodu p získat jako f t = P e ρ(πe(p)), kde πe(p) je projekce bodu p na příznakovou rovinu e a ρ(·) značí bilineární interpolaci příznaků. Další plně propojená vrstva je pak použita k mapování agregovaného příznakového vektoru f t na RGB barvu c. Všimněte si, že na rozdíl od jiných prací na 3D-aware syntézu obrazu [8, 25, 7, 57], které také používají reprezentaci neuronového pole, potřebujeme vzorkovat texturové pole pouze na pozicích povrchových bodů (na rozdíl od hustých vzorků podél paprsku). To značně snižuje výpočetní složitost pro rendering obrazů ve vysokém rozlišení a zaručuje generování obrazů konzistentních s více pohledy z konstrukce. 3.2 Diferencovatelný rendering a trénování Abychom mohli náš model během trénování dohlížet, čerpáme inspiraci z Nvdiffrec [ ], která provádí rekonstrukci 3D objektů z více pohledů pomocí diferencovatelného rendereru. Konkrétně vykreslujeme extrahovanou 3D síť a texturové pole do 2D obrazů pomocí diferencovatelného rendereru [ ] a dohlížíme na naši síť pomocí 2D diskriminátoru, který se snaží rozlišit obrázek od reálného objektu nebo vykreslený z generovaného objektu. 47 37 Předpokládáme, že distribuce kamer C, která byla použita k získání obrázků v datové sadě, je známa. K vykreslení generovaných tvarů náhodně vzorkujeme kameru z C a používáme vysoce optimalizovaný diferencovatelný rasterizér Nvdiffrast [ ] k vykreslení 3D sítě do 2D siluety, stejně jako obrázku, kde každý pixel obsahuje souřadnice odpovídajícího 3D bodu na povrchu sítě. Tyto souřadnice se dále používají k dotazování texturového pole k získání RGB hodnot. Jelikož operujeme přímo na extrahované síti, můžeme vykreslovat obrazy ve vysokém rozlišení s vysokou efektivitou, což umožňuje trénovat náš model s obrazovým rozlišením až 1024×1024. Diferencovatelný rendering c 37 Náš model trénujeme s adverzním cílem. Přijímáme architekturu diskriminátoru ze StyleGAN [ ] a používáme stejný nelineární GAN cíl s R1 regularizací [ ]. Empiricky zjišťujeme, že použití dvou oddělených diskriminátorů, jednoho pro RGB obrazy a druhého pro siluety, přináší lepší výsledky než jeden diskriminátor pracující na obou. Nechť označuje diskriminátor, kde může být buď RGB obraz, nebo silueta. Adverzní cíl je pak definován následovně: Diskriminátor & Cíl 34 42 Dx x kde ( ) je definováno jako ( ) = − log(1 +exp(− )), je distribuce reálných obrazů, značí rendering a je hyperparametr. Protože je diferencovatelný, gradienty lze zpětně propagovat z 2D obrazů do našich 3D generátorů. g u g u u px R λ R Abychom odstranili vnitřní plovoucí plochy, které nejsou viditelné v žádném z pohledů, dále regularizujeme generátor geometrie pomocí ztráty křížové entropie definované mezi hodnotami SDF sousedních vrcholů [ ]: Regularizace 47 kde označuje binární ztrátu křížové entropie a označuje sigmoide funkci. Součet v rovnici je definován přes množinu unikátních hran S v tetraedrické mřížce, pro kterou platí sign( ) /= sign( ). H σ 2 e si sj Celková ztrátová funkce je pak definována jako: kde je hyperparametr, který řídí úroveň regularizace. µ