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 se několik průmyslových odvětví posouvá směrem k modelování masivních 3D virtuálních světů, je zřejmá potřeba nástrojů pro tvorbu obsahu, které se mohou š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 renderovacími enginy, a tudíž okamžitě použitelné v následných aplikacích. Předchozí práce na 3D generativním modelování buď postrádají geometrické detaily, jsou omezeny v topologii sítě, kterou mohou produkovat, obvykle nepodporují textury, nebo využívají neuronové rendery v procesu syntézy, což ztěžuje jejich použití v běžném 3D softwaru. 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 vysoce věrnými texturami. Spojujeme nedávné úspěchy v diferencovatelném modelování povrchů, diferencovatelném renderování 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 automobilů, židlí, zvířat, motocyklů a lidských postav po budovy, čímž 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ě her, 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 dovednosti v modelování. Jednou z hlavních výzev je tedy škálovatelnost – zatímco 3D modely lze najít na 3D tržištích, jako je Turbosquid [ ] nebo Sketchfab [ ], vytvoření mnoha 3D modelů k například zaplnění hry nebo filmu davem postav, které všechny vypadají odlišně, stále zabere značné množství času umělců. 4 3 Aby se usnadnil proces tvorby obsahu a zpřístupnil se široké škále (začínajících) uživatelů, staly se generativní 3D sítě, které dokáží produkovat vysoce kvalitní a rozmanitá 3D aktiva, nedávno aktivní oblastí výzkumu [ , , , , , , , , , , ]. Aby však 3D generativní modely byly prakticky užitečné 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 dostupnější 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 generující 3D bodové mraky [ , 68, 75] obvykle negenerují textury a musí být po zpracování převedeny na síť. 1 5 Metody generující voxely často postrádají geometrické detaily a negenerují textury [ , , , ]. 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. Nakonec metody, které přímo produkují texturované 3D sítě [ , ], obvykle vyžadují předdefinované šablony tvarů a nemohou generovat tvary se složitou topologií a proměnlivým rodem. 66 20 27 40 43 14 54 53 Nedávný rychlý pokrok v neuronovém objemovém renderování [ ] a 2D generativních adverzních sítích (GAN) [ , , , , ] vedl k rozmachu 3D-aware syntézy obrazu [ , , , , , ]. Tato linie práce se však zaměřuje na syntézu obrazů konzistentních z více pohledů pomocí neuronového renderování v procesu syntézy a nezaručuje, ž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 pro kreslení povrchu [ ], extrakce odpovídající textury je netriviální. 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 splnit všechny požadavky prakticky užitečného 3D generativního modelu. Konkrétně navrhujeme GET3D, enerativní model pro 3D tvary, který přímo produkuje xplicitní exturované sítě s vysokými geometrickými a texturovými detaily a libovolnou topologií sítě. Jádrem našeho přístupu je generativní proces, který využívá diferencovatelnou metodu extrakce povrchu [ ] a techniku diferencovatelného renderování [ , ]. První nám umožňuje přímo optimalizovat a produkovat texturované 3D sítě s libovolnou topologií, zatímco druhá nám umožňuje trénovat náš model pomocí 2D obrázků, a tím využít silné a vyspělé diskriminátory vyvinuté pro syntézu 2D obrazů. Jelikož náš model přímo generuje sítě a používá vysoce efektivní (diferencovatelný) grafický render, můžeme náš model snadno škálovat pro trénování s rozlišením obrazu až 1024 × 1024, což nám umožňuje naučit se vysoce kvalitní geometrické a texturové detaily. G E T 3D explicitního 60 47 37 Demonstrujeme špičkový výkon v nekondicionální generaci 3D tvarů na více kategoriích se složitou geometrií z ShapeNet [ ], Turbosquid [ ] a Renderpeople [ ], jako jsou židle, motocykly, auta, lidské postavy a budovy, čímž dosahujeme významného zlepšení oproti předchozím metodám. S explicitní sítí jako výstupní reprezentací je GET3D také velmi flexibilní a lze jej snadno přizpůsobit dalším úkolům, včetně: učení se generovat rozložené materiálové a na pohledu závislé světelné efekty pomocí pokročilého diferencovatelného renderování [ ], bez dohledu, 3D generování tvarů řízené textem pomocí CLIP [ ] embeddingu. 9 4 2 (a) 12 (b) 56 2 Související práce Zrevidujeme 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 v syntéze obrazů s vysokým rozlišením [ , , , , , , ]. Tento pokrok inspiroval také výzkum v 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 zkoumaly jiné práce reprezentace bodových mraků [ , , , ], implicitní [ , ] nebo oktree [ ]. Tyto práce se však zaměřují hlavně na generování geometrie a ignorují vzhled. Jejich výstupní reprezentace také musí být po zpracování 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 Textured3DGAN [ , ] a DIBR [ ], které jsou naší práci podobnější, generují texturované 3D sítě, ale formulují generování jako deformaci šablonové sítě, což jim brání v generování složitých topologií nebo tvarů s proměnlivým rodem, což naše metoda dokáže. PolyGen [ ] a SurfGen [ ] dokáží produkovat sítě s libovolnou topologií, ale negenerují textury. 54 53 11 48 41 Inspirováni úspěchem neuronového objemového renderování [ ] a implicitních reprezentací [ , ], nedávné práce začaly řešit problém 3D-aware syntézy obrazu [ , , , , , , , , , ]. Nicméně neuronové objemové renderovací sítě jsou obvykle pomalé na dotazování, což vede k dlouhým časům trénování [ , ] a generování obrazů s omezeným rozlišením. GIRAFFE [ ] a StyleNerf [ ] zlepšují efektivitu trénování a renderování prováděním neuronového renderování v nižším rozlišení a následným upsamplingem výsledků pomocí 2D CNN. Zisk výkonu je však vykoupen sníženou konzistencí z více pohledů. Pomocí duálního diskriminátoru může EG3D [ ] částečně zmírnit tento problém. Nicméně extrakce texturovaného povrchu z metod založených na neuronovém renderování je netriviální úkol. Na rozdíl od toho GET3D přímo produkuje 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áš rámec GET3D pro syntézu texturovaných 3D tvarů. Náš proces generování je rozdělen do dvou částí: geometrická větev, která diferencovatelně produkuje povrchovou síť libovolné topologie, a texturová větev, která produkuje texturovou mapu, která může být dotazována na povrchových bodech k produkci barev. Druhá zmíněná může být rozšířena na další povrchové vlastnosti, jako jsou například materiály (sekce ). Během trénování se používá efektivní diferencovatelný rasterizér k renderování výsledné texturované sítě do 2D obrazů s vysokým rozlišením. Celý proces je diferencovatelný, což umožňuje adverzní trénování z obrazů (s maskami označujícími objekt zájmu) propagací gradientů z 2D diskriminátoru do obou generátorových větví. Náš model je ilustrován na obr. . Níže nejprve představíme náš 3D generátor v sekci , než přistoupíme k diferencovatelnému renderování a ztrátovým funkcím v sekci . 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 = ( ) pro mapování vzorku 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 [ , , ] 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ě zavádíme generátor geometrie v sekci a texturový generátor v sekci . 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 podepsaných vzdáleností (SDF) definované na deformovatelném tetraedrickém mřížce [ , ], ze které lze povrch diferencovatelně obnovit pomocí metody kreslení povrchu z tetraedrů [ ]. Deformace mřížky posouvání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 odkazujeme čtenáře na původní článek pro další podrobnosti. 60 22 24 17 Nechť ( ) označuje plný 3D prostor, ve kterém objekt leží, kde jsou vrcholy v tetraedrické mřížce . Každý tetraedr ∈ je definován pomocí čtyř vrcholů { }, kde ∈ {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 z jeho počáteční kanonické souřadnice. Tato reprezentace umožňuje obnovit explicitní síť pomocí diferencovatelného algoritmu kreslení povrchu z tetraedrů [ ], kde hodnoty SDF v kontinuálním prostoru jsou počítány barycentrickou interpolací jejich hodnoty 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ém vrcholu prostřednictvím 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 v každém vrcholu ∈ pomocí trilineární interpolace a podáváme jej do MLP, které produkuje 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 v 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žijeme diferencovatelný algoritmus kreslení povrchu z tetraedrů k extrakci explicitní sítě. Algoritmus kreslení povrchu z tetraedrů určuje topologii povrchu v každém tetraedru na základě znamének . Konkrétně je síťová plocha extrahována, když sign( ) /= sign( ), kde označuje 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ý vzorec je vyhodnocen pouze tehdy, když si 6= sj, a je tedy 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římé generování texturové mapy konzistentní s výstupní sítí není triviální, protože vygenerovaný tvar může mít libovolný rod a topologii. Texturu proto parametrizujeme jako texturovou mapu [ ]. 50 Konkrétně modelujeme texturovou mapu pomocí funkce , která mapuje 3D polohu povrchového bodu ∈ R3, podmíněnou na 2, na barvu RGB ∈ R3 v této poloze. Protože texturová mapa závisí na geometrii, tuto mapu dodatečně podmiňujeme 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 Naši texturovou mapu reprezentujeme pomocí tri-planární reprezentace, která je efektivní a expresivní při rekonstrukci 3D objektů [ ] a generování 3D-aware obrazů [ ]. Konkrétně ná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 osě-kolmé ortogonální příznakové roviny o velikosti × × ( × 3), kde = 256 značí prostorové rozlišení a = 32 počet kanálů. Architektura sítě 55 8 8 35 w w N N C N C Dané příznakové roviny, vektor příznaků f t ∈ R 32 povrchového bodu p lze 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 se pak používá k mapování agregovaného vektoru příznaků f t na barvu RGB c. Všimněte si, že na rozdíl od jiných prací na 3D-aware syntézu obrazu, které také používají reprezentaci neuronového pole, my potřebujeme pouze vzorkovat texturovou mapu na polohách povrchových bodů (na rozdíl od hustých vzorků podél paprsku). To výrazně snižuje výpočetní složitost renderování obrazů s vysokým rozlišením a zaručuje generování obrazů konzistentních z více pohledů z principu. 3.2 Diferencovatelné renderování 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 renderu. Konkrétně renderujeme extrahovanou síť a texturovou mapu do 2D obrazů pomocí diferencovatelného renderu [ ] a dohlížíme na naši síť pomocí 2D diskriminátoru, který se snaží rozlišit obraz od reálného objektu nebo obraz renderovaný 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 datasetu, je známa. K renderování generovaných tvarů náhodně vzorkujeme kameru z C a používáme vysoce optimalizovaný diferencovatelný rasterizér Nvdiffrast [ ] k renderování 3D sítě do 2D siluety a také do obrazu, 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é mapy k získání hodnot RGB. Protože operujeme přímo na extrahované síti, můžeme renderovat obrazy s vysokým rozlišením s vysokou efektivitou, což umožňuje trénovat náš model s rozlišením obrazu až 1024×1024. Diferencovatelné renderování c 37 Trénujeme náš model pomocí adverzního cíle. Přijímáme architekturu diskriminátoru ze StyleGAN [ ] a používáme stejný necílový GAN cíl s R1 regularizací [ ]. Empiricky zjišťujeme, že použití dvou samostatných diskriminátorů, jednoho pro RGB obrazy a druhého pro siluety, přináší lepší výsledky než jeden diskriminátor operují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 takto: Diskriminátor & Cíl 34 42 Dx x kde ( ) je definováno jako ( ) = − log(1 +exp(− )), je distribuce reálných obrazů, značí renderování 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 K odstranění vnitřních plovoucích ploch, které nejsou viditelné v žádném z pohledů, dále regularizujeme geometrický generátor pomocí ztráty křížové entropie definované mezi hodnotami SDF sousedních vrcholů [ ]: Regularizace 47 kde značí ztrátu binární křížové entropie a značí sigmoide funkci. Součet v rovnici je definován přes množinu unikátních hran S v tetraedrické mřížce, pro které platí sign( ) /= sign( ). H σ 2 e si sj Celková ztrátová funkce je pak definována jako: kde je hyperparametr, který řídí úroveň regularizace. µ