Mga May-akda: 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) Abstrakto Habang ang ilang mga industriya ay lumilipat patungo sa pagmomodelo ng malalaking virtual na mundo sa 3D, ang pangangailangan para sa mga kasangkapan sa paglikha ng nilalaman na maaaring sukatin sa dami, kalidad, at pagkakaiba-iba ng 3D na nilalaman ay nagiging maliwanag. Sa aming gawain, layunin naming sanayin ang mga performant na 3D generative na modelo na lumilikha ng mga textured mesh na maaaring direktang gamitin ng mga 3D rendering engine, kaya't agad na magagamit sa mga down-stream na aplikasyon. Ang mga nakaraang gawa sa 3D generative modeling ay kulang sa mga detalye ng geometry, limitado sa mesh topology na kanilang nagagawa, karaniwang hindi sumusuporta sa mga texture, o gumagamit ng mga neural renderer sa proseso ng synthesis, na ginagawang hindi simple ang kanilang paggamit sa karaniwang 3D software. Sa gawang ito, ipinakilala namin ang GET3D, isang enerative na modelo na direktang lumilikha ng xplicit na extured na meshes na may kumplikadong topology, mayayamang detalye ng geometry, at mataas na kalidad na mga texture. Pinagsama namin ang mga kamakailang tagumpay sa differentiable surface modeling, differentiable rendering, pati na rin ang 2D Generative Adversarial Networks upang sanayin ang aming modelo mula sa mga koleksyon ng 2D na imahe. Ang GET3D ay may kakayahang lumikha ng mataas na kalidad na 3D textured meshes, mula sa mga kotse, upuan, hayop, motor, at mga tauhan hanggang sa mga gusali, na nagpapakita ng makabuluhang pagpapabuti kumpara sa mga nakaraang pamamaraan. Ang aming project page: G E T 3D https://nv-tlabs.github.io/GET3D 1 Introduksyon Ang sari-sari at mataas na kalidad na 3D na nilalaman ay nagiging mas mahalaga para sa ilang industriya, kabilang ang gaming, robotics, arkitektura, at mga social platform. Gayunpaman, ang manu-manong paglikha ng 3D na mga asset ay napaka-oras-ubos at nangangailangan ng partikular na teknikal na kaalaman pati na rin ang mga kasanayan sa pagmomodelo ng sining. Isa sa mga pangunahing hamon ay ang sukat—habang makakahanap ng mga 3D model sa mga 3D marketplace tulad ng Turbosquid [ ] o Sketchfab [ ], ang paglikha ng maraming 3D model upang, sabihin nating, punuin ang isang laro o pelikula ng mga tauhan na lahat ay mukhang kakaiba ay nangangailangan pa rin ng malaking oras ng artista. 4 3 Upang mapadali ang proseso ng paglikha ng nilalaman at gawin itong accessible sa iba't ibang (baguhan) na mga gumagamit, ang mga 3D generative network na maaaring lumikha ng mataas na kalidad at sari-saring 3D na mga asset ay naging isang aktibong larangan ng pananaliksik kamakailan [ , , , , , , , , , , ]. Gayunpaman, upang maging praktikal para sa mga kasalukuyang aplikasyon sa totoong mundo, ang mga 3D generative na modelo ay dapat na matupad ang mga sumusunod na kinakailangan: Dapat silang magkaroon ng kakayahang lumikha ng mga hugis na may detalyadong geometry at arbitrary topology, Ang output ay dapat na isang textured mesh, na isang pangunahing representasyon na ginagamit ng mga karaniwang graphics software package tulad ng Blender [ ] at Maya [ ], at Dapat nating magamit ang mga 2D na imahe para sa superbisyon, dahil mas marami ang mga ito kaysa sa mga explicit na 3D na hugis. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Ang mga nakaraang gawa sa 3D generative modeling ay nakatuon sa mga subset ng mga nabanggit na kinakailangan, ngunit walang pamamaraan hanggang ngayon ang nakakatupad sa lahat ng ito (Talaan ). Halimbawa, ang mga pamamaraan na lumilikha ng mga 3D point cloud [ , 68, 75] ay karaniwang hindi lumilikha ng mga texture at kailangang i-convert sa isang mesh sa post-processing. 1 5 Ang mga pamamaraan na lumilikha ng mga voxel ay madalas na kulang sa mga detalye ng geometry at hindi lumilikha ng texture [ , , , ]. Ang mga generative na modelo na batay sa neural fields [ , ] ay nakatuon sa pagkuha ng geometry ngunit binabalewala ang texture. Karamihan sa mga ito ay nangangailangan din ng explicit na 3D supervision. Sa wakas, ang mga pamamaraan na direktang naglalabas ng mga textured 3D mesh [ , ] ay karaniwang nangangailangan ng mga paunang natukoy na hugis na template at hindi maaaring lumikha ng mga hugis na may kumplikadong topology at variable na genus. 66 20 27 40 43 14 54 53 Kamakailan lamang, ang mabilis na pag-unlad sa neural volume rendering [ ] at 2D Generative Adversarial Networks (GANs) [ , , , , ] ay nagbunga ng pagtaas ng 3D-aware image synthesis [ , , , , , ]. Gayunpaman, ang linyang ito ng gawain ay naglalayong lumikha ng multi-view consistent na mga imahe gamit ang neural rendering sa proseso ng synthesis at hindi ginagarantiyahan na maaaring malikha ang makabuluhang mga 3D na hugis. Bagama't ang isang mesh ay maaaring makuha mula sa pinagbabatayan na neural field representation gamit ang marching cube algorithm [ ], ang pagkuha ng kaukulang texture ay hindi simple. 45 34 35 33 29 52 7 57 8 49 51 25 39 Sa gawang ito, ipinakikilala namin ang isang nobelang pamamaraan na naglalayong tugunan ang lahat ng mga kinakailangan ng isang praktikal na 3D generative model. Sa partikular, ipinakikilala namin ang GET3D, isang enerative na modelo para sa mga 3D na hugis na direktang naglalabas ng xplicit na extured na meshes na may mataas na detalye ng geometry at texture at arbitraryong mesh topology. Sa puso ng aming pamamaraan ay isang generative na proseso na gumagamit ng isang differentiable na pamamaraan ng pagkuha ng ibabaw [ ] at isang differentiable rendering technique [ , ]. Ang una ay nagbibigay-daan sa amin na direktang i-optimize at ilabas ang mga textured 3D mesh na may arbitraryong topology, habang ang huli ay nagpapahintulot sa amin na sanayin ang aming modelo gamit ang mga 2D na imahe, kaya ginagamit ang malakas at matatag na mga discriminator na binuo para sa 2D image synthesis. Dahil ang aming modelo ay direktang lumilikha ng mga mesh at gumagamit ng isang mataas na mahusay (differentiable) na graphics renderer, madali naming mapapalaki ang aming modelo upang sanayin gamit ang resolusyon ng imahe na kasing taas ng 1024 × 1024, na nagpapahintulot sa amin na matuto ng mataas na kalidad na geometry at mga detalye ng texture. G E T 3D explicit 60 47 37 Nagpapakita kami ng state-of-the-art na performance para sa unconditional 3D shape generation sa maraming kategorya na may kumplikadong geometry mula sa ShapeNet [ ], Turbosquid [ ], at Renderpeople [ ], tulad ng mga upuan, motor, kotse, mga tauhan, at mga gusali. Sa explicit na mesh bilang output representation, ang GET3D ay napaka-flexible at madaling mai-angkop sa iba pang mga gawain, kabilang ang: pag-aaral na lumikha ng mga decomposed na materyal at mga epekto ng pag-iilaw na nakadepende sa view gamit ang advanced na differentiable rendering [ ], nang walang superbisyon, text-guided na 3D shape generation gamit ang CLIP [ ] embedding. 9 4 2 (a) 12 (b) 56 2 Kaugnay na Gawain Sinusuri namin ang mga kamakailang pag-unlad sa mga 3D generative na modelo para sa geometry at hitsura, pati na rin ang 3D-aware generative image synthesis. Sa mga nakaraang taon, ang mga 2D generative na modelo ay nakamit ang photorealistic na kalidad sa high-resolution image synthesis [ , , , , , , ]. Ang pag-unlad na ito ay nagbigay inspirasyon din sa pananaliksik sa paglikha ng 3D na nilalaman. Ang mga naunang pamamaraan ay naglalayong direktang palawakin ang 2D CNN generators sa 3D voxel grids [ , , , , ], ngunit ang mataas na memory footprint at computational complexity ng 3D convolutions ay humahadlang sa generative process sa mataas na resolusyon. Bilang alternatibo, ang iba pang mga gawa ay nag-explore ng point cloud [ , , , ], implicit [ , ], o octree [ ] na mga representasyon. Gayunpaman, ang mga gawang ito ay pangunahing nakatuon sa paglikha ng geometry at binabalewala ang hitsura. Ang kanilang mga output representation ay kailangan ding i-post-process upang maging compatible sa mga karaniwang graphics engine. 3D Generative Models 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Mas katulad sa aming gawain, ang Textured3DGAN [ , ] at DIBR [ ] ay lumilikha ng mga textured 3D mesh, ngunit binubuo nila ang generation bilang isang deformation ng isang template mesh, na pumipigil sa kanila na lumikha ng kumplikadong topology o mga hugis na may iba't ibang genus, na magagawa ng aming pamamaraan. Ang PolyGen [ ] at SurfGen [ ] ay maaaring lumikha ng mga mesh na may arbitraryong topology, ngunit hindi sila lumilikha ng mga texture. 54 53 11 48 41 Dahil sa tagumpay ng neural volume rendering [ ] at implicit representations [ , ], nagsimulang tugunan ng mga kamakailang gawa ang problema ng 3D-aware image synthesis [ , , , , , , , , , ]. Gayunpaman, ang mga neural volume rendering network ay karaniwang mabagal sa pag-query, na nagreresulta sa mahabang oras ng pagsasanay [ , ], at lumilikha ng mga imahe na may limitadong resolusyon. Ang GIRAFFE [ ] at StyleNerf [ ] ay nagpapabuti sa kahusayan ng pagsasanay at rendering sa pamamagitan ng pagsasagawa ng neural rendering sa mas mababang resolusyon at pagkatapos ay pag-upscale ng mga resulta gamit ang isang 2D CNN. Gayunpaman, ang pagpapabuti sa performance ay may kapalit na nabawasan ang multi-view consistency. Sa pamamagitan ng paggamit ng isang dual discriminator, ang EG3D [ ] ay maaaring bahagyang makatulong sa problemang ito. Gayunpaman, ang pagkuha ng isang textured surface mula sa mga pamamaraan na batay sa neural rendering ay isang hindi simpleng gawain. Sa kabaligtaran, ang GET3D ay direktang naglalabas ng mga textured 3D mesh na madaling magagamit sa mga karaniwang graphics engine. 3D-Aware Generative Image Synthesis 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Pamamaraan Ngayon ay ipinakikilala namin ang aming GET3D framework para sa paglikha ng mga 3D na hugis na may texture. Ang aming generative na proseso ay nahahati sa dalawang bahagi: isang geometry branch, na differentiably na naglalabas ng isang surface mesh ng arbitraryong topology, at isang texture branch na lumilikha ng isang texture field na maaaring i-query sa mga surface point upang makabuo ng mga kulay. Ang huli ay maaaring palawakin sa iba pang mga surface property tulad ng, halimbawa, mga materyales (Seksyon ). Sa panahon ng pagsasanay, ginagamit ang isang mahusay na differentiable rasterizer upang i-render ang nalikhang textured mesh sa mga 2D na high-resolution na imahe. Ang buong proseso ay differentiable, na nagpapahintulot sa adversarial training mula sa mga imahe (na may mga maskara na nagpapahiwatig ng isang bagay na interesado) sa pamamagitan ng pagpapalaganap ng mga gradient mula sa 2D discriminator patungo sa parehong generator branches. Ang aming modelo ay inilalarawan sa Fig. . Sa mga sumusunod, ipinakikilala muna namin ang aming 3D generator sa Seksyon , bago magpatuloy sa differentiable rendering at mga loss function sa Seksyon . 4.3.1 2 3.1 3.2 3.1 Generative na Modelo ng mga 3D Textured Meshes Layunin naming matutunan ang isang 3D generator = ( ) upang i-map ang isang sample mula sa isang Gaussian distribution M, E G z ∈ N (0*,* ) sa isang mesh na may texture . z I M E Dahil ang parehong geometry ay maaaring magkaroon ng iba't ibang mga texture, at ang parehong texture ay maaaring mailapat sa iba't ibang mga geometry, nagsa-sample kami ng dalawang random na input vector 1 ∈ R512 at 2 ∈ R512. Kasunod ng StyleGAN [ , , ], ginagamit namin ang mga non-linear mapping network geo at tex upang i-map ang 1 at 2 sa mga intermediate latent vector 1 = geo( 1) at 2 = tex( 2) na higit pang ginagamit upang lumikha ng mga na kumokontrol sa generation ng 3D shapes at texture, ayon sa pagkakabanggit. Pormal naming ipinakikilala ang generator para sa geometry sa Seksyon at ang texture generator sa Seksyon . z z 34 35 33 f f z z w f z w f z style 3.1.1 3.1.2 3.1.1 Geometry Generator Idinisenyo namin ang aming geometry generator upang isama ang DMTet [ ], isang kamakailang iminungkahing differentiable surface representation. Ang DMTet ay kumakatawan sa geometry bilang isang signed distance field (SDF) na tinukoy sa isang deformable tetrahedral grid [ , ], kung saan ang ibabaw ay maaaring differentiably na mabawi sa pamamagitan ng marching tetrahedra [ ]. Ang pagpapabago ng grid sa pamamagitan ng paggalaw ng mga vertices nito ay nagreresulta sa mas mahusay na paggamit ng resolution nito. Sa pamamagitan ng paggamit ng DMTet para sa pagkuha ng ibabaw, maaari kaming lumikha ng mga explicit na mesh na may arbitraryong topology at genus. Susunod, nagbibigay kami ng maikling buod ng DMTet at tinutukoy ang mambabasa sa orihinal na papel para sa karagdagang mga detalye. 60 22 24 17 Hayaan ang ( ) na kumatawan sa buong 3D space kung saan matatagpuan ang bagay, kung saan ang ay ang mga vertices sa tetrahedral grid . Ang bawat tetrahedron ∈ ay tinukoy gamit ang apat na vertices { }, kung saan ∈ {1*, . . . , K*}, kung saan ang ay ang kabuuang bilang ng mga tetrahedron, at ang ∈ ∈ R3. Bukod sa 3D coordinates nito, ang bawat vertex ay naglalaman ng SDF value ∈ R at ang deformation ∆ ∈ R3 ng vertex mula sa kanyang paunang canonical coordinate. Ang representasyong ito ay nagpapahintulot sa pagbawi ng explicit mesh sa pamamagitan ng differentiable marching tetrahedra [ ], kung saan ang mga SDF value sa tuloy-tuloy na espasyo ay kinakalkula sa pamamagitan ng barycentric interpolation ng kanilang value sa mga deformed vertices ′ = + ∆ . 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 I-map namin ang 1 ∈ R512 sa mga SDF value at deformations sa bawat vertex sa pamamagitan ng isang serye ng mga conditional 3D convolutional at fully connected layers. Sa partikular, una naming ginagamit ang 3D convolutional layers upang lumikha ng isang feature volume na kondisyonal sa 1. Pagkatapos ay i-query namin ang feature sa bawat vertex ∈ gamit ang trilinear interpolation at ipapasok ito sa mga MLP na naglalabas ng SDF value at ng deformation ∆ . Sa mga kaso kung saan kinakailangan ang pagmomodelo sa mataas na resolution (hal. motor na may manipis na mga istruktura sa mga gulong), mas ginagamit namin ang volume subdivision kasunod ng [ ]. Network Architecture w v i w v i VT si v i 60 Pagkatapos makuha ang at ∆ para sa lahat ng mga vertices, ginagamit namin ang differentiable marching tetrahedra algorithm upang kunin ang explicit mesh. Ang marching tetrahedra ay tumutukoy sa topology ng ibabaw sa loob ng bawat tetrahedron batay sa mga sign ng . Sa partikular, isang mesh face ang nakukuha kapag sign( ) /= sign( ), kung saan ang ay tumutukoy sa mga index ng vertices sa gilid ng tetrahedron, at ang mga vertices ng mukhang iyon ay tinutukoy sa pamamagitan ng isang linear interpolation bilang mi,j = v 0 i sj−v 0 j si sj−si . Tandaan na ang nabanggit na equation ay nasusuri lamang kapag si 6= sj , kaya ito ay differentiable, at ang gradient mula sa mi,j ay maaaring ma-back-propagate sa mga SDF value si at deformations ∆vi . Sa representasyong ito, ang mga hugis na may arbitraryong topology ay madaling malilikha sa pamamagitan ng paghula ng iba't ibang sign ng si . Differentiable Mesh Extraction si v i si si sj i, j m i,j 3.1.2 Texture Generator Ang direktang paglikha ng isang texture map na tugma sa output mesh ay hindi simple, dahil ang nalikhang hugis ay maaaring magkaroon ng arbitraryong genus at topology. Kaya't ipinamamahagi namin ang texture bilang isang texture field [ ]. 50 Sa partikular, minomodelo namin ang texture field gamit ang isang function na nagmamapa sa 3D na lokasyon ng isang surface point ∈ R3, na kondisyonal sa 2, sa RGB color ∈ R3 sa lokasyong iyon. Dahil ang texture field ay nakasalalay sa geometry, karagdagan naming kondisyon ang mapping na ito sa geometry latent code 1, upang ang = ( *,* 1 ⊕ 2), kung saan ang ⊕ ay kumakatawan sa concatenation. ft p w c w c ft p w w Kinakatawan namin ang aming texture field gamit ang isang tri-plane representation, na mahusay at malinaw sa pagbuo ng mga 3D object [ ] at paglikha ng mga 3D-aware na imahe [ ]. Sa partikular, sinusundan namin ang [ , ] at gumagamit ng isang conditional 2D convolutional neural network upang i-map ang latent code 1 ⊕ 2 sa tatlong axis-aligned orthogonal feature planes na may sukat na × × ( × 3), kung saan ang = 256 ay kumakatawan sa spatial resolution at = 32 ang bilang ng mga channel. Network Architecture 55 8 8 35 w w N N C N C Dahil sa mga feature plane, ang feature vector f t ∈ R 32 ng isang surface point p ay maaaring mabawi bilang f t = P e ρ(πe(p)), kung saan ang πe(p) ay ang projection ng point p sa feature plane e at ang ρ(·) ay kumakatawan sa bilinear interpolation ng mga feature. Ang karagdagang fully connected layer ay ginagamit upang i-map ang aggregated feature vector f t sa RGB color c. Tandaan na, hindi tulad ng iba pang mga gawa sa 3D-aware image synthesis na gumagamit din ng neural field representation, kailangan lang naming i-sample ang texture field sa mga lokasyon ng mga surface point (kumpara sa dense samples sa kahabaan ng isang ray). Ito ay lubos na nagpapababa ng computational complexity para sa rendering ng mga high-resolution na imahe at ginagarantiyahan ang paglikha ng multi-view consistent na mga imahe sa pamamagitan ng konstruksyon. 3.2 Differentiable Rendering at Pagsasanay Upang ma-supervise ang aming modelo sa panahon ng pagsasanay, kumukuha kami ng inspirasyon mula sa Nvdiffrec [ ] na nagsasagawa ng multi-view 3D object reconstruction sa pamamagitan ng paggamit ng isang differentiable renderer. Sa partikular, ini-render namin ang nakuha na 3D mesh at ang texture field sa mga 2D na imahe gamit ang isang differentiable renderer [ ], at sinusupervise namin ang aming network gamit ang isang 2D discriminator, na sumusubok na paghiwalayin ang imahe mula sa isang totoong bagay o in-render mula sa nalikhang bagay. 47 37 Ipinapalagay namin na ang camera distribution C na ginamit upang makuha ang mga imahe sa dataset ay kilala. Upang i-render ang mga nalikhang hugis, random kaming nagsa-sample ng isang camera mula sa C, at ginagamit namin ang isang mataas na optimized na differentiable rasterizer Nvdiffrast [ ] upang i-render ang 3D mesh sa isang 2D silhouette pati na rin sa isang imahe kung saan ang bawat pixel ay naglalaman ng mga coordinate ng kaukulang 3D Differentiable Rendering c 37 point sa mesh surface. Ang mga coordinate na ito ay higit pang ginagamit upang i-query ang texture field upang makuha ang mga RGB value. Dahil direktang gumagana kami sa nakuha na mesh, maaari kaming mag-render ng mga high-resolution na imahe na may mataas na kahusayan, na nagpapahintulot sa aming modelo na masanay sa resolusyon ng imahe na kasing taas ng 1024×1024. Nagsasanay kami ng aming modelo gamit ang isang adversarial objective. Ginagamit namin ang discriminator architecture mula sa StyleGAN [ ], at ginagamit ang parehong non-saturating GAN objective na may R1 regularization [ ]. Sa empirikal, natagpuan namin na ang paggamit ng dalawang magkahiwalay na discriminator, isa para sa mga RGB na imahe at isa pa para sa mga silhouette, ay nagbibigay ng mas mahusay na mga resulta kaysa sa isang solong discriminator na gumagana sa pareho. Hayaan ang na kumatawan sa discriminator, kung saan ang ay maaaring isang RGB image o isang silhouette. Kung gayon, ang adversarial objective ay tinutukoy bilang sumusunod: Discriminator & Objective 34 42 Dx x kung saan ang ( ) ay tinutukoy bilang ( ) = − log(1 +exp(− )), ang ay ang distribution ng mga tunay na imahe, ang ay kumakatawan sa rendering, at ang ay isang hyperparameter. Dahil ang ay differentiable, ang mga gradient ay maaaring ma-backpropagate mula sa mga 2D na imahe patungo sa aming mga 3D generator. g u g u u px R λ R Upang alisin ang mga internal floating face na hindi nakikita sa alinman sa mga view, karagdagang nireregulate namin ang geometry generator gamit ang isang cross-entropy loss na tinukoy sa pagitan ng mga SDF value ng mga katabing vertices [ ]: Regularization 47