```html Autori: 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) Kopsavilkums Tā kā vairākas nozares virzās uz masīvu 3D virtuālo pasauļu modelēšanu, kļūst acīmredzama nepieciešamība pēc satura izveides rīkiem, kas varētu mērogot 3D satura daudzumu, kvalitāti un daudzveidību. Savā darbā mēs cenšamies apmācīt efektīvus 3D ģeneratīvus modeļus, kas sintezē teksturētas tīklšķiedras, kuras 3D renderēšanas dzinēji var tieši patērēt, tādējādi uzreiz izmantojamas turpmākajos lietojumos. Iepriekšējie darbi par 3D ģeneratīvo modelēšanu vai nu trūkst ģeometrisko detaļu, ir ierobežoti ar tīklšķiedru topoloģiju, ko tie var radīt, parasti neatbalsta tekstūras, vai arī izmanto neironu renderētājus sintezēšanas procesā, kas padara to lietošanu kopējās 3D programmatūrās netriviālu. Šajā darbā mēs iepazīstinām ar GET3D, enerative model that directly generates xplicit extured meshes with complex topology, rich geometric details, and high fidelity textures. Mēs izmantojam nesenos panākumus diferencējamā virsmu modelēšanā, diferencējamā renderēšanā, kā arī 2D ģeneratīvajos pretrunīgajos tīklos, lai apmācītu mūsu modeli no 2D attēlu kolekcijām. GET3D spēj radīt augstas kvalitātes 3D teksturētas tīklšķiedras, sākot no automašīnām, krēsliem, dzīvniekiem, motocikliem un cilvēku tēliem līdz ēkām, sasniedzot ievērojamu uzlabojumu salīdzinājumā ar iepriekšējām metodēm. Mūsu projektu lapa: G E T 3D https://nv-tlabs.github.io/GET3D 1 Ievads Daudzveidīgs, augstas kvalitātes 3D saturs kļūst arvien svarīgāks vairākām nozarēm, tostarp spēļu, robotikas, arhitektūras un sociālajām platformām. Tomēr 3D līdzekļu manuāla izveide ir ļoti laikietilpīga un prasa specifiskas tehniskās zināšanas, kā arī mākslinieciskas modelēšanas prasmes. Viens no galvenajiem izaicinājumiem ir mērogs – lai gan 3D modeļus var atrast 3D tirgos, piemēram, Turbosquid [ ] vai Sketchfab [ ], daudzu 3D modeļu izveide, lai, teiksim, aizpildītu spēli vai filmu ar dažādiem tēliem, joprojām prasa ievērojamu mākslinieka laiku. 4 3 Lai atvieglotu satura izveides procesu un padarītu to pieejamu dažādiem (iesācēju) lietotājiem, ģeneratīvi 3D tīkli, kas var radīt augstas kvalitātes un daudzveidīgus 3D līdzekļus, nesen ir kļuvuši par aktīvu pētniecības virzienu [ , , , , , , , , , , ]. Tomēr, lai praktiski noderētu pašreizējiem reālās pasaules lietojumiem, 3D ģeneratīviem modeļiem ideālā gadījumā būtu jāatbilst šādām prasībām: tiem jābūt spējīgiem radīt formas ar detalizētu ģeometriju un patvaļīgu topoloģiju, rezultātam jābūt teksturētai tīklšķiedrai, kas ir primārais attēlojums, ko izmanto standarta grafikas programmatūras paketes, piemēram, Blender [ ] un Maya [ ], un mums vajadzētu būt iespējai izmantot 2D attēlus uzraudzībai, jo tie ir plašāk pieejami nekā skaidri 3D formas. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Iepriekšējie darbi par 3D ģeneratīvo modelēšanu ir koncentrējušies uz iepriekš minēto prasību apakškopām, taču līdz šim neviena metode nav izpildījusi visas (1. tabula). Piemēram, metodes, kas ģenerē 3D punktu mākoņus [ , 68, 75], parasti nerada tekstūras un pēc apstrādes ir jākonvertē tīklšķiedrā. 5 Metodes, kas ģenerē vokseļus, bieži vien trūkst ģeometrisko detaļu un nerada tekstūru [ , , , ]. Neironu laukos balstīti ģeneratīvie modeļi [ , ] koncentrējas uz ģeometrijas izgūšanu, bet ignorē tekstūru. Lielākā daļa no tiem prasa arī skaidru 3D uzraudzību. Visbeidzot, metodes, kas tieši rada teksturētas 3D tīklšķiedras [ , ], parasti prasa iepriekš definētas formas veidnes un nevar radīt formas ar sarežģītu topoloģiju un mainīgu dzimumu. 66 20 27 40 43 14 54 53 Nesenais straujais progress neironu tilpuma renderēšanā [ ] un 2D ģeneratīvajos pretrunīgajos tīklos (GAN) [ , , , , ] ir novedis pie 3D informētu attēlu sintēzes [ , , , , , ]. Tomēr šis darbs mērķē uz daudzu skatu saderīgu attēlu sintēzi, izmantojot neironu renderēšanu sintēzes procesā, un negarantē, ka var radīt jēgpilnas 3D formas. Lai gan tīklšķiedru var potenciāli iegūt no pamata neironu lauka attēlojuma, izmantojot algoritmu "marching cubes" [ ], atbilstošās tekstūras izgūšana nav triviāla. 45 34 35 33 29 52 7 57 8 49 51 25 39 Šajā darbā mēs iepazīstinām ar jaunu pieeju, kas mērķē uz visām praktiski noderīga 3D ģeneratīvā modeļa prasībām. Konkrēti, mēs piedāvājam GET3D, enerative model for 3D shapes that directly outputs xplicit extured meshes with high geometric and texture detail and arbitrary mesh topology. Mūsu pieejas centrā ir ģeneratīvs process, kas izmanto diferencējamu virsmas izguves metodi [ ] un diferencējamu renderēšanas paņēmienu [ , ]. Pirmais ļauj mums tieši optimizēt un radīt teksturētas 3D tīklšķiedras ar patvaļīgu topoloģiju, bet otrais ļauj mums apmācīt mūsu modeli ar 2D attēliem, tādējādi izmantojot jaudīgus un nobriedušus diskriminatorus, kas izstrādāti 2D attēlu sintēzei. Tā kā mūsu modelis tieši ģenerē tīklšķiedras un izmanto ļoti efektīvu (diferencējamu) grafikas renderētāju, mēs varam viegli palielināt mūsu modeļa apjomu, lai apmācītu attēlus G E T 3D explicit 60 47 37 ar izšķirtspēju līdz 1024 × 1024, kas ļauj mums apgūt augstas kvalitātes ģeometriskās un teksturētās detaļas. Mēs demonstrējam vismodernākos rezultātus nenosacītai 3D formas ģenerēšanai vairākās kategorijās ar sarežģītu ģeometriju no ShapeNet [ ], Turbosquid [ ] un Renderpeople [ ], piemēram, krēsli, motocikli, automašīnas, cilvēku tēli un ēkas. Ar skaidru tīklšķiedras kā izejas attēlojumu, GET3D ir arī ļoti elastīgs un to var viegli pielāgot citiem uzdevumiem, tostarp: mācīšanās radīt sadalītus materiālus un skata atkarīgus apgaismojuma efektus, izmantojot progresīvu diferencējamu renderēšanu [ ], bez uzraudzības, ar tekstu vadīta 3D formas ģenerēšana, izmantojot CLIP [ ] iegultni. 9 4 2 (a) 12 (b) 56 2 Saistītie darbi Mēs pārskatām jaunākos sasniegumus 3D ģeneratīvos modeļos ģeometrijai un izskatam, kā arī 3D informētu ģeneratīvu attēlu sintēzi. Pēdējos gados 2D ģeneratīvie modeļi ir sasnieguši fotoreālistisku kvalitāti augstas izšķirtspējas attēlu sintēzē [ , , , , , , ]. Šis progress ir iedvesmojis arī pētniecību 3D satura ģenerēšanā. Agrākās pieejas mērķēja uz 2D CNN ģeneratoru paplašināšanu uz 3D vokseļu režģiem [ , , , , ], taču augstais atmiņas patēriņš un 3D konvolūciju aprēķinu sarežģītība kavē ģenerēšanas procesu augstā izšķirtspējā. Kā alternatīvu citi darbi ir izpētījuši punktu mākoņus [ , , , ], netiešus [ , ] vai oktree [ ] attēlojumus. Tomēr šie darbi galvenokārt koncentrējas uz ģeometrijas ģenerēšanu un ignorē izskatu. Viņu izejas attēlojumi arī ir jāapstrādā pēc tam, lai padarītu tos saderīgus ar standarta grafikas dzinējiem. 3D Ģeneratīvi Modeļi 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Vairāk līdzīgi mūsu darbam, Textured3DGAN [ , ] un DIBR [ ] ģenerē teksturētas 3D tīklšķiedras, taču tie formulē ģenerēšanu kā veidnes tīklšķiedras deformāciju, kas neļauj tiem radīt sarežģītu topoloģiju vai formas ar mainīgu dzimumu, ko mūsu metode var darīt. PolyGen [ ] un SurfGen [ ] var radīt tīklšķiedras ar patvaļīgu topoloģiju, taču nerada tekstūras. 54 53 11 48 41 Iedvesmojoties no neironu tilpuma renderēšanas [ ] un netiešiem attēlojumiem [ , ], nesenais darbs sācis risināt 3D informētas attēlu sintēzes problēmu [ , , , , , , , , , ]. Tomēr neironu til puma renderēšanas tīkli parasti ir lēni vaicājami, radot ilgu apmācības laiku [ , ] un radot ierobežotas izšķirtspējas attēlus. GIRAFFE [ ] un StyleNerf [ ] uzlabo apmācības un renderēšanas efektivitāti, veicot neironu renderēšanu zemākā izšķirtspējā un pēc tam palielinot rezultātus ar 2D CNN. Tomēr veiktspējas pieaugums nāk ar samazinātu daudzu skatu saderības cenu. Izmantojot dubulto diskriminatoru, EG3D [ ] var daļēji mazināt šo problēmu. Tomēr teksturētas virsmas izguve no metodēm, kas balstītas uz neironu renderēšanu, ir netriviāls pasākums. Turpretim GET3D tieši rada teksturētas 3D tīklšķiedras, kuras var viegli izmantot standarta grafikas dzinējos. 3D Informēta Ģeneratīva Attēlu Sintēze 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metodika Tagad mēs iepazīstinām ar mūsu GET3D sistēmu teksturētu 3D formu sintēzei. Mūsu ģenerēšanas process ir sadalīts divās daļās: ģeometrijas zars, kas diferencējami rada virsmas tīklšķiedru ar patvaļīgu topoloģiju, un tekstūras zars, kas rada tekstūras lauku, ko var vaicāt virsmas punktos, lai radītu krāsas. Pēdējo var paplašināt uz citiem virsmu rekvizītiem, piemēram, materiāliem (4.3.1. sadaļa). Apmācības laikā tiek izmantots efektīvs diferencējamais rasterizators, lai renderētu rezultātā iegūtās teksturētās tīklšķiedras 2D augstas izšķirtspējas attēlos. Viss process ir diferencējams, ļaujot pretrunīgai apmācībai no attēliem (ar maskām, kas norāda interesējošo objektu), izplatot gradientus no 2D diskriminatora uz abiem ģeneratora zariem. Mūsu modelis ir ilustrēts 2. attēlā. Tālāk mēs vispirms iepazīstinām ar mūsu 3D ģeneratoru 3.1. sadaļā, pirms turpinām ar diferencējamo renderēšanu un zudumu funkcijām 3.2. sadaļā. 3.1 3D Teksturētu Tīklšķiedru Ģeneratīvais Modelis Mēs cenšamies apgūt 3D ģeneratoru = ( ), lai kartētu paraugu no Gausa sadalījuma M, E G z ∈ N (0*,* ) uz tīklšķiedru ar tekstūru . z I M E Tā kā tā pati ģeometrija var būt ar atšķirīgām tekstūrām, un tā pati tekstūra var tikt lietota dažādām ģeometrijām, mēs paraugojam divus nejaušus ievades vektorus 1 ∈ R512 un 2 ∈ R512. Sekojot StyleGAN [ , , ], mēs pēc tam izmantojam nelineārus kartēšanas tīklus geo un tex, lai kartētu 1 un 2 uz starpposma latentiem vektoriem 1 = geo( 1) un 2 = tex( 2), kas tālāk tiek izmantoti, lai radītu , kas kontrolē 3D formu un tekstūras ģenerēšanu. Mēs formāli iepazīstinām ar ģeometrijas ģeneratoru 3.1.1. sadaļā un tekstūras ģeneratoru 3.1.2. sadaļā. z z 34 35 33 f f z z w f z w f z stilus 3.1.1 Ģeometrijas Ģenerators Mēs izstrādājām mūsu ģeometrijas ģeneratoru, lai integrētu DMTet [ ], nesen piedāvātu diferencējamu virsmas attēlojumu. DMTet attēlo ģeometriju kā parakstītu attāluma lauku (SDF), kas definēts deformējamā tetraedru režģī [ , ], no kura virsmu var diferencēti atgūt, izmantojot "marching tetrahedra" [ ]. Deformējot režģi, pārvietojot tā virsotnes, tiek labāk izmantota tā izšķirtspēja. Pieņemot DMTet virsmas izguvei, mēs varam radīt skaidras tīklšķiedras ar patvaļīgu topoloģiju un dzimumu. Tālāk mēs sniedzam īsu DMTet kopsavilkumu un attiecībā uz sīkāku informāciju novirzām lasītāju uz oriģinālo rakstu. 60 22 24 17 Ļaujiet ( ) apzīmēt pilno 3D telpu, kurā atrodas objekts, kur ir tetraedru režģa virsotnes. Katrs tetraedrs ∈ ir definēts, izmantojot četras virsotnes { }, kur ∈ {1*, . . . , K*}, kur ir kopējais tetraedru skaits, un ∈ ∈ R3. Papildus savām 3D koordinātēm, katrai virsotnei ir SDF vērtība ∈ R un virsotnes ∆ ∈ R3 deformācija no tās sākotnējās kanoniskās koordinātas. Šis attēlojums ļauj atgūt skaidru tīklšķiedru, izmantojot diferencējamu "marching tetrahedra" [ ], kur SDF vērtības nepārtrauktā telpā tiek aprēķinātas, izmantojot to vērtību uz deformētajām virsotnēm ′ = + ∆ baricentrisku interpolāciju. 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 Mēs kartējam 1 ∈ R512 uz SDF vērtībām un deformācijām katrai virsotnei , izmantojot virkni nosacītu 3D konvolūciju un pilnībā savienotu slāņu. Konkrēti, mēs vispirms izmantojam 3D konvolūciju slāņus, lai radītu funkciju tilpumu, kas nosacīts ar 1. Pēc tam mēs vaicājam funkciju katrā virsotnē ∈ , izmantojot trilineāru interpolāciju, un nododam to MLPs, kas rada SDF vērtību un deformāciju ∆ . Gadījumos, kad nepieciešams modelēt augstu izšķirtspēju (piemēram, motocikls ar plānām detaļām riteņos), mēs papildus izmantojam tilpuma sadalījumu, sekojot [ ]. Tīkla Arhitektūra w v i w v i VT si v i 60 Pēc un ∆ iegūšanas visām virsotnēm, mēs izmantojam diferencējamo "marching tetrahedra" algoritmu, lai izgūtu skaidro tīklšķiedru. "Marching tetrahedra" nosaka virsmas topoloģiju katrā tetraedrā, pamatojoties uz zīmēm. Konkrēti, tīklšķiedras seja tiek izgūta, kad sign( ) /= sign( ), kur apzīmē virsotņu indeksus tetraedra malā, un tās virsmas virsotnes tiek noteiktas ar lineāru interpolāciju kā mi,j = v 0 i sj−v 0 j si sj−si . Ņemiet vērā, ka iepriekš minētā vienādojumam tiek novērtēta tikai tad, ja si 6= sj , tādējādi tā ir diferencējama, un gradients no mi,j var tikt atpakaļ izplatīts uz SDF vērtībām si un deformācijām ∆vi . Ar šo attēlojumu formas ar patvaļīgu topoloģiju var viegli radīt, prognozējot dažādas si zīmes. Diferencējamā Tīklšķiedras Izguve si v i si si sj i, j m i,j 3.1.2 Tekstūras Ģenerators Tieši radīt tekstūras karti, kas ir saderīga ar izejas tīklšķiedru, nav triviāli, jo radītā forma var būt ar patvaļīgu dzimumu un topoloģiju. Tādēļ mēs parametrizējam tekstūru kā tekstūras lauku [ ]. 50 Konkrēti, mēs modelējam tekstūras lauku ar funkciju , kas kartē 3D virsmas punkta atrašanās vietu ∈ R3, nosacītu ar 2, uz RGB krāsu ∈ R3 šajā atrašanās vietā. Tā kā tekstūras lauks ir atkarīgs no ģeometrijas, mēs papildus nosacījam šo kartēšanu ar ģeometrijas latento kodu 1, lai = ( *,* 1 ⊕ 2), kur ⊕ apzīmē konkatenāciju. ft p w c w c ft p w w Mēs attēlojam mūsu tekstūras lauku, izmantojot tri-plāna attēlojumu, kas ir efektīvs un izteiksmīgs 3D objektu rekonstrukcijā [ ] un 3D informētu attēlu ģenerēšanā [ ]. Konkrēti, mēs sekojam [ , ] un izmantojam nosacītu 2D konvolūciju neironu tīklu, lai kartētu latentu kodu 1 ⊕ 2 uz trīs ass-orientētiem ortogonāliem funkciju plāniem ar izmēru × × ( × 3), kur = 256 apzīmē telpisko izšķirtspēju un = 32 kanālu skaitu. Tīkla Arhitektūra 55 8 8 35 w w N N C N C Ņemot vērā funkciju plānus, funkciju vektors f t ∈ R 32 no virsmas punkta p tiek atgūts kā f t = P e ρ(πe(p)), kur πe(p) ir punkta p projekcija uz funkciju plānu e un ρ(·) apzīmē bilineāru interpolāciju funkcijām. Papildu pilnībā savienots slānis tiek izmantots, lai kartētu agregēto funkciju vektoru f t uz RGB krāsu c. Ņemiet vērā, ka atšķirībā no citiem darbiem par 3D informētu attēlu sintēzi [8, 25, 7, 57], kas arī izmanto neironu lauka attēlojumu, mums ir nepieciešams tikai paraugot tekstūras lauku virsmas punktu atrašanās vietās (atšķirībā no blīviem paraugiem pa staru). Tas ievērojami samazina aprēķinu sarežģītību augstas izšķirtspējas attēlu renderēšanai un garantē daudzu skatu saderīgu attēlu radīšanu pēc konstrukcijas. 3.2 Diferencējamā Renderēšana un Apmācība Lai uzraudzītu mūsu modeli apmācības laikā, mēs smeļamies iedvesmu no Nvdiffrec [ ], kas veic daudzu skatu 3D objektu rekonstrukciju, izmantojot diferencējamu renderētāju. Konkrēti, mēs renderējam izgūtās 3D tīklšķiedras un tekstūras lauku 2D attēlos, izmantojot diferencējamu renderētāju [ ], un uzraugām mūsu tīklu ar 2D diskriminator 47 37