Författare: 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) Sammanfattning I takt med att flera branscher rör sig mot att modellera massiva 3D-virtuella världar blir behovet av verktyg för innehållsskapande som kan skalas i termer av kvantitet, kvalitet och mångfald av 3D-innehåll uppenbart. I vårt arbete syftar vi till att träna högpresterande 3D-generativa modeller som syntetiserar texturerade nät som direkt kan konsumeras av 3D-renderingsmotorer, och därmed omedelbart användbara i nedströmsapplikationer. Tidigare arbeten om 3D-generativ modellering saknar antingen geometriska detaljer, är begränsade i den nät-topologi de kan producera, stöder vanligtvis inte texturer, eller använder neurala renderare i syntesprocessen, vilket gör deras användning i vanlig 3D-programvara icke-trivial. I detta arbete introducerar vi GET3D, en enerative modell som direkt genererar xplicit extured meshes med komplex topologi, rika geometriska detaljer och hög-fidilitet texturer. Vi bygger vidare på den senaste framgången inom differentierbar ytmodellering, differentierbar rendering samt 2D Generative Adversarial Networks för att träna vår modell från 2D-bildsamlingar. GET3D kan generera högkvalitativa 3D-texturerade nät, allt från bilar, stolar, djur, motorcyklar och mänskliga karaktärer till byggnader, vilket ger betydande förbättringar jämfört med tidigare metoder. Vår projektsida: G E T 3D https://nv-tlabs.github.io/GET3D 1 Introduktion Mångsidigt, högkvalitativt 3D-innehåll blir allt viktigare för flera branscher, inklusive spel, robotik, arkitektur och sociala plattformar. Manuell skapande av 3D-tillgångar är dock mycket tidskrävande och kräver specifik teknisk kunskap samt konstnärliga modelleringsfärdigheter. En av de största utmaningarna är därmed skala – medan man kan hitta 3D-modeller på 3D-marknadsplatser som Turbosquid [ ] eller Sketchfab [ ], tar det fortfarande betydande mängder av konstnärtid att skapa många 3D-modeller för att till exempel befolka ett spel eller en film med en folkmassa av karaktärer som alla ser olika ut. 4 3 För att underlätta innehållsskapandeprocessen och göra den tillgänglig för en mängd (nybörjar)användare har generativa 3D-nät som kan producera högkvalitativa och mångsidiga 3D-tillgångar nyligen blivit ett aktivt forskningsområde [ , , , , , , , , , , ]. För att vara praktiskt användbara för nuvarande verkliga applikationer bör 3D-generativa modeller dock idealt uppfylla följande krav: De bör ha kapacitet att generera former med detaljerad geometri och godtycklig topologi, Utgången bör vara ett texturerat nät, vilket är en primär representation som används av standardgrafikprogram som Blender [ ] och Maya [ ], och Vi bör kunna utnyttja 2D-bilder för övervakning, eftersom de är mer allmänt tillgängliga än explicit 3D-form. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Tidigare arbete med 3D-generativ modellering har fokuserat på delmängder av ovanstående krav, men ingen metod har hittills uppfyllt alla (tabell ). Metoder som genererar 3D-punktmoln [ , 68, 75] producerar till exempel vanligtvis inte texturer och måste konverteras till ett nät i efterhand. 1 5 Metoder som genererar voxlar saknar ofta geometriska detaljer och producerar inte textur [ , , , ]. Generativa modeller baserade på neurala fält [ , ] fokuserar på att extrahera geometri men ignorerar textur. De flesta av dessa kräver också explicit 3D-övervakning. Slutligen kräver metoder som direkt producerar texturerade 3D-nät [ , ] vanligtvis fördefinierade mallformer och kan inte generera former med komplex topologi och varierande genus. 66 20 27 40 43 14 54 53 Nyligen har snabba framsteg inom neural volymrendering [ ] och 2D Generative Adversarial Networks (GANs) [ , , , , ] lett till framväxten av 3D-medveten bildsyntes [ , , , , , ]. Detta arbete syftar dock till att syntetisera flerfönsterkonsekventa bilder med hjälp av neural rendering i syntesprocessen och garanterar inte att meningsfulla 3D-former kan genereras. Även om ett nät potentiellt kan erhållas från den underliggande neurala fältrepresentationen med hjälp av marscub-algoritmen [ ], är det icke-trivialt att extrahera motsvarande textur. 45 34 35 33 29 52 7 57 8 49 51 25 39 I detta arbete introducerar vi en ny metod som syftar till att uppfylla alla krav för en praktiskt användbar 3D-generativ modell. Specifikt föreslår vi GET3D, en enerative modell för 3D-former som direkt producerar xplicit extured meshes med hög geometrisk och texturdetalj och godtycklig nät-topologi. Kärnan i vår metod är en generativ process som använder en differentierbar *explicit* yt-extraktionsmetod [ ] och en differentierbar renderingsteknik [ , ]. Den förra gör det möjligt för oss att direkt optimera och producera texturerade 3D-nät med godtycklig topologi, medan den senare tillåter oss att träna vår modell med 2D-bilder, och därmed utnyttja kraftfulla och mogna diskriminatorer utvecklade för 2D-bildsyntes. Eftersom vår modell direkt genererar nät och använder en mycket effektiv (differentierbar) grafikrenderare, kan vi enkelt skala upp vår modell för att träna med bildupplösningar så höga som 1024 × 1024, vilket gör att vi kan lära oss högkvalitativa geometriska och texturdetaljer. G E T 3D 60 47 37 Vi visar toppmodern prestanda för ovillkorlig 3D-formgenerering på flera kategorier med komplex geometri från ShapeNet [ ], Turbosquid [ ] och Renderpeople [ ], såsom stolar, motorcyklar, bilar, mänskliga karaktärer och byggnader. Med explicit nät som utdatarepresentation är GET3D också mycket flexibel och kan enkelt anpassas till andra uppgifter, inklusive: lära sig att generera dekomponerat material och vy-beroende ljuseffekter med hjälp av avancerad differentierbar rendering [ ], utan övervakning, text-styrd 3D-formgenerering med hjälp av CLIP [ ] inbäddning. 9 4 2 (a) 12 (b) 56 2 Relaterat arbete Vi granskar de senaste framstegen inom 3D-generativa modeller för geometri och utseende, samt 3D-medveten generativ bildsyntes. Under de senaste åren har 2D-generativa modeller uppnått fotorealistisk kvalitet i bildsyntes med hög upplösning [ , , , , , , ]. Dessa framsteg har också inspirerat forskning inom 3D-innehållsgenerering. Tidiga metoder syftade till att direkt utöka 2D CNN-generatorer till 3D voxel-rutnät [ , , , , ], men den höga minnesanvändningen och den beräkningsmässiga komplexiteten hos 3D-konvolutioner hindrar genereringsprocessen vid hög upplösning. Som ett alternativ har andra arbeten utforskat punktmoln [ , , , ], implicita [ , ], eller oktree [ ] representationer. Dessa arbeten fokuserar dock främst på att generera geometri och ignorerar utseende. Deras utdatarepresentationer måste också efterbearbetas för att göra dem kompatibla med standardgrafikmotorer. 3D Generativa Modeller 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Mer likt vårt arbete genererar Textured3DGAN [ , ] och DIBR [ ] texturerade 3D-nät, men de formulerar genereringen som en deformation av ett mallnät, vilket hindrar dem från att generera komplex topologi eller former med varierande genus, vilket vår metod kan göra. PolyGen [ ] och SurfGen [ ] kan producera nät med godtycklig topologi, men syntetiserar inte texturer. 54 53 11 48 41 Inspirerade av framgången med neural volymrendering [ ] och implicita representationer [ , ] har de senaste arbetena börjat ta itu med problemet med 3D-medveten bildsyntes [ , , , , , , , , , ]. Neurala volymrenderingsnätverk är dock vanligtvis långsamma att fråga, vilket leder till långa träningstider [ , ] och genererar bilder med begränsad upplösning. GIRAFFE [ ] och StyleNerf [ ] förbättrar tränings- och renderingseffektiviteten genom att utföra neural rendering med lägre upplösning och sedan uppskala resultaten med en 2D CNN. Prestandavinsten sker dock på bekostnad av minskad flerfönsterkonsistens. Genom att använda en dubbel diskriminator kan EG3D [ ] delvis mildra detta problem. Att extrahera en texturerad yta från metoder baserade på neural rendering är dock en icke-trivial uppgift. I kontrast producerar GET3D direkt texturerade 3D-nät som omedelbart kan användas i vanliga grafikmotorer. 3D-medveten Generativ Bildsyntes 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metod Vi presenterar nu vårt GET3D-ramverk för syntes av texturerade 3D-former. Vår genereringsprocess är uppdelad i två delar: en geometrigren som differentierbart producerar ett nät med godtycklig topologi, och en texturgren som producerar ett texturfält som kan frågas på ytpunkterna för att producera färger. Den senare kan utökas till andra ytegenskaper, såsom till exempel material (sektion ). Under träning används en effektiv differentierbar rasteriserare för att rendera det resulterande texturerade nätet till 2D-bilder med hög upplösning. Hela processen är differentierbar, vilket möjliggör adversariell träning från bilder (med masker som indikerar ett objekt av intresse) genom att propagera gradienterna från 2D-diskriminatorn till båda generatorgrenarna. Vår modell illustreras i figur . Nedan introducerar vi först vår 3D-generator i sektion , innan vi fortsätter till differentierbar rendering och förlustfunktioner i sektion . 4.3.1 2 3.1 3.2 3.1 Generativ modell för 3D-texturerade nät Vi syftar till att lära oss en 3D-generator *M*, *E* = *G*(**z**) som mappar ett sampel från en Gaussisk distribution **z** ∈ N (0*,* **I**) till ett nät *M* med textur *E*. Eftersom samma geometri kan ha olika texturer, och samma textur kan appliceras på olika geometrier, samplar vi två slumpmässiga indatavektorer **z**1 ∈ R och **z**2 ∈ R . I enlighet med StyleGAN [ , , ], använder vi sedan icke-linjära mappningsnätverk *f* och *f* för att mappa **z**1 och **z**2 till mellanliggande latenta vektorer **w** = *f* (**z** ) och **w** = *f* (**z** ) som ytterligare används för att producera *stilar* som styr genereringen av 3D-former och textur, respektive. Vi introducerar formellt generatorn för geometri i sektion och texturgeneratorn i sektion . 512 512 34 35 33 geo tex 1 geo 1 2 tex 2 3.1.1 3.1.2 3.1.1 Geometri-generator Vi utformar vår geometri-generator för att införliva DMTet [ ], en nyligen föreslagen differentierbar ytpresentation. DMTet representerar geometri som ett signerat avstånds-fält (SDF) definierat på ett deformerbart tetraedriskt rutnät [ , ], från vilket ytan kan differentierbart återvinnas genom marscing tetrahedra [ ]. Deformation av rutnätet genom att flytta dess hörn resulterar i en bättre utnyttjande av dess upplösning. Genom att anamma DMTet för yt-extraktion kan vi producera explicita nät med godtycklig topologi och genus. Vi ger en kort sammanfattning av DMTet och hänvisar läsaren till originalartikeln för ytterligare detaljer. 60 22 24 17 Låt (*V* , *T*) beteckna hela 3D-rymden som objektet ligger i, där *V* är hörnen i det tetraedriska rutnätet *T*. Varje tetraeder *T* ∈ *T* definieras med fyra hörn {**v** , **v** , **v** , **v** }, med *k* ∈ {1*, . . . , K*}, där *K* är det totala antalet tetraedrar, och **v** ∈ *V* , **v** ∈ R . Utöver sina 3D-koordinater innehåller varje hörn **v** SDF-värdet *s* ∈ R och deformationen ∆**v** ∈ R av hörnet från dess ursprungliga kanoniska koordinat. Denna representation möjliggör återvinning av det explicita nätet genom differentierbar marscing tetrahedra [ ], där SDF-värden i kontinuerlig rymd beräknas genom en barycentrisk interpolation av deras värde *s* på de deformerade hörnen **v**′ = **v** + ∆**v** . T T k a,k b,k c,k d,k i,k T i,k 3 i i i 3 60 i i i Vi mappar **w** ∈ R till SDF-värden och deformationer vid varje hörn **v** genom en serie betingade 3D-konvolutionella och helt anslutna lager. Specifikt använder vi först 3D-konvolutionella lager för att generera ett funktionsvolym betingad av **w** . Vi frågar sedan funktionen vid varje hörn **v** ∈ *V* med trilineär interpolation och matar in den i MLPs som producerar SDF-värdet *s* och deformationen ∆**v** . I fall där modellering med hög upplösning krävs (t.ex. motorcykel med tunna strukturer i hjulen), använder vi ytterligare volymsubdivision enligt [ ]. Nätverksarkitektur 1 512 i 1 i T i i 60 Efter att ha erhållit *s* och ∆**v** för alla hörn använder vi den differentierbara marscing tetrahedra-algoritmen för att extrahera det explicita nätet. Marscing tetrahedra bestämmer ytans topologi inom varje tetraeder baserat på tecknen på *s* . Specifikt extraheras en nät-yta när sign(*s* ) ≠ sign(*s* ), där *i*, *j* betecknar indexen för hörn i tetraederns kant, och hörnen **m** på den ytan bestäms av en linjär interpolation som m = v′ s − v′ s / s − s . Notera att ovanstående ekvation endast utvärderas när s ≠ s , så den är differentierbar, och gradienten från **m** kan back-propagera till SDF-värdena *s* och deformationerna ∆**v** . Med denna representation kan former med godtycklig topologi enkelt genereras genom att förutsäga olika tecken på *s* . Differentierbar Nät-extraktion i i i i j i,j i,j i j j i j i i j i,j i i i 3.1.2 Textur-generator Att direkt generera en texturkarta som är konsekvent med utdatanätet är inte trivialt, eftersom den genererade formen kan ha ett godtyckligt genus och topologi. Vi parametriserar därför texturen som ett texturfält [ ]. 50 Specifikt modellerar vi texturfältet med en funktion *f* som mappar 3D-positionen för en ytpunkts **p** ∈ R , betingad av **w** , till RGB-färgen **c** ∈ R vid den positionen. Eftersom texturfältet beror på geometrin, betingar vi ytterligare denna mappning på den geometriska latenta koden **w** , så att **c** = *f* (**p**, **w** ⊕ **w** ), där ⊕ betecknar konkatenering. t 3 2 3 1 t 1 2 Vi representerar vårt texturfält med en tri-plan representation, vilket är effektivt och uttrycksfullt för att rekonstruera 3D-objekt [ ] och generera 3D-medvetna bilder [ ]. Specifikt följer vi [ , ] och använder ett betingat 2D-konvolutionellt neuralt nätverk för att mappa den latenta koden **w** ⊕ **w** till tre axel-allignerade ortogonala funktionsplan av storleken *N* × *N* × (*C* × 3), där *N* = 256 betecknar den rumsliga upplösningen och *C* = 32 antalet kanaler. Nätverksarkitektur 55 8 8 35 1 2 Givet funktionsplanen kan funktionsvektorn f ∈ R för en ytpunkts **p** återvinnas som f = ⊕ ρ(π (**p**)) * w , där π (**p**) är projektionen av punkten **p** till funktionsplanen *e* och ρ(·) betecknar bilineär interpolation av funktionerna. Ett ytterligare helt anslutet lager används sedan för att mappa den aggregerade funktionsvektorn f till RGB-färgen **c**. Notera att, till skillnad från andra arbeten om 3D-medveten bildsyntes som också använder en neural fältrepresentation, behöver vi bara sampla texturfältet vid positionerna för ytpunkterna (i motsats till täta samplingar längs en stråle). Detta minskar beräkningskomplexiteten för att rendera bilder med hög upplösning avsevärt och garanterar att generera flerfönsterkonsekventa bilder genom konstruktion. t 32 t e∈{x,y,z} e e e t 3.2 Differentierbar Rendering och Träning För att övervaka vår modell under träning hämtar vi inspiration från Nvdiffrec [ ] som utför flerfönster 3D-objektrekonstruktion genom att använda en differentierbar renderare. Specifikt renderar vi det extraherade 3D-nätet och texturfältet till 2D-bilder med hjälp av en differentierbar renderare [ ], och övervakar vårt nätverk med en 2D-diskriminator, som försöker skilja bilden från ett verkligt objekt eller renderad från det genererade objektet. 47 37 Vi antar att kameraprovet C som användes för att förvärva bilderna i datasetet är känt. För att rendera de genererade formerna samplar vi slumpmässigt en kamera *c* från C, och använder en högt optimerad differentierbar rasteriserare Nvdiffrast [ ] för att rendera 3D-nätet till en 2D-silhuett samt en bild där varje pixel innehåller koordinaterna för den motsvarande 3D-punkten på nätets yta. Dessa koordinater används ytterligare för att fråga texturfältet för att erhålla RGB-värdena. Eftersom vi opererar direkt på det extraherade nätet kan vi rendera högupplösta bilder med hög effektivitet, vilket gör att vår modell kan tränas med bildupplösningar så höga som 1024×1024. Differentierbar Rendering 37 Vi tränar vår modell med ett adversariellt mål. Vi anpassar diskriminatorarkitekturen från StyleGAN [ ], och använder samma icke-mättande GAN-mål med R1-regularisering [ ]. Vi finner empiriskt att användningen av två separata diskriminatorer, en för RGB-bilder och en annan för silhuetter, ger bättre resultat än en enda diskriminator som opererar på båda. Låt *D* beteckna diskriminatorn, där *x* antingen är en RGB-bild eller en silhuett. Det adversariella målet definieras då som följer: Diskriminator & Mål 34 42 x där *g*(*u*) definieras som *g*(*u*) = − log(1 +exp(−*u*)), *p* är distributionen av verkliga bilder, *R* betecknar rendering, och *λ* är en hyperparameter. Eftersom *R* är differentierbar kan gradienterna back-propagera från 2D-bilder till våra 3D-generatorer. x För att ta bort interna flytande ytor som inte syns i någon av vyerna, regulariserar vi ytterligare geometri-generatorn med en korsentropiförlust definierad mellan SDF-värdena för närliggande hörn [ ]: Regularisering 47 där *H* betecknar binär korsentropiförlust och *σ* betecknar sigmoidfunktionen. Summan i ekvation definieras över mängden unika kanter *S* i det tetraedriska rutnätet, för vilka sign(*s* ) ≠ sign(*s* ). 2 e i j Den övergripande förlustfunktionen definieras sedan som: där *µ* är en hyperparameter som styr nivån av regularisering. 4 Experiment