Pengarang: 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) Abstrak Memandangkan beberapa industri beralih ke arah memodelkan dunia maya 3D yang besar, keperluan untuk alat penciptaan kandungan yang boleh diskalakan dari segi kuantiti, kualiti dan kepelbagaian kandungan 3D menjadi jelas. Dalam kerja kami, kami bertujuan untuk melatih model penjanaan 3D yang berprestasi yang menghasilkan mesh bertekstur yang boleh digunakan secara langsung oleh enjin render 3D, justeru boleh digunakan serta-merta dalam aplikasi hiliran. Kerja lepas mengenai pemodelan penjanaan 3D sama ada kekurangan perincian geometri, terhad dalam topologi mesh yang boleh dihasilkannya, biasanya tidak menyokong tekstur, atau menggunakan renderer neural dalam proses sintesis, yang menjadikan penggunaannya dalam perisian 3D biasa tidak mudah. Dalam kerja ini, kami memperkenalkan GET3D, model eneratif yang secara langsung menjana mesh bertekstur kspresit dengan topologi kompleks, perincian geometri yang kaya, dan tekstur resolusi tinggi. Kami menjambungkan kejayaan terkini dalam pemodelan permukaan boleh beza, renderan boleh beza serta Rangkaian Permusuhan Penjanaan 2D untuk melatih model kami daripada koleksi imej 2D. GET3D mampu menjana mesh bertekstur 3D berkualiti tinggi, daripada kereta, kerusi, haiwan, motosikal dan watak manusia kepada bangunan, mencapai peningkatan ketara berbanding kaedah terdahulu. Halaman projek kami: G E 3D https://nv-tlabs.github.io/GET3D 1 Pengenalan Kandungan 3D yang pelbagai dan berkualiti tinggi menjadi semakin penting untuk beberapa industri, termasuk permainan, robotik, seni bina, dan platform sosial. Walau bagaimanapun, penciptaan aset 3D secara manual memakan masa yang sangat banyak dan memerlukan pengetahuan teknikal khusus serta kemahiran pemodelan artistik. Salah satu cabaran utama ialah skala – walaupun seseorang boleh menemui model 3D di pasaran 3D seperti Turbosquid [ ] atau Sketchfab [ ], mencipta banyak model 3D untuk, katakan, memenuhi permainan atau filem dengan orang ramai watak yang semuanya kelihatan berbeza masih mengambil masa artis yang ketara. 4 3 Untuk memudahkan proses penciptaan kandungan dan menjadikannya boleh diakses oleh pelbagai pengguna (novis), rangkaian penjanaan 3D yang boleh menghasilkan aset 3D berkualiti tinggi dan pelbagai telah menjadi bidang penyelidikan aktif baru-baru ini [ , , , , , , , , , , ]. Walau bagaimanapun, untuk menjadi berguna secara praktikal untuk aplikasi dunia sebenar semasa, model penjanaan 3D sepatutnya memenuhi keperluan berikut: Mereka sepatutnya mempunyai kapasiti untuk menjana bentuk dengan perincian geometri dan topologi rawak, Output sepatutnya menjadi mesh bertekstur, yang merupakan perwakilan utama yang digunakan oleh pakej perisian grafik standard seperti Blender [ ] dan Maya [ ], dan Kita sepatutnya boleh memanfaatkan imej 2D untuk penyeliaan, kerana ia lebih tersedia daripada bentuk 3D eksplisit. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Kerja lepas mengenai pemodelan penjanaan 3D telah menumpukan pada subset keperluan di atas, tetapi tiada kaedah sehingga kini memenuhi semuanya (Jadual. ). Contohnya, kaedah yang menjana titik awan 3D [ , 68, 75] biasanya tidak menjana tekstur dan perlu ditukar kepada mesh dalam pasca-pemprosesan. 1 5 Kaedah yang menjana voxel sering kekurangan perincian geometri dan tidak menjana tekstur [ , , , ]. Model penjanaan berdasarkan medan neural [ , ] menumpukan pada mengekstrak geometri tetapi mengabaikan tekstur. Kebanyakan daripada ini juga memerlukan penyeliaan 3D eksplisit. Akhir sekali, kaedah yang secara langsung mengeluarkan mesh 3D bertekstur [ , ] biasanya memerlukan templat bentuk yang telah ditetapkan dan tidak dapat menjana bentuk dengan topologi kompleks dan genus yang berubah-ubah. 66 20 27 40 43 14 54 53 Baru-baru ini, kemajuan pesat dalam rendering volumetrik neural [ ] dan Rangkaian Permusuhan Penjanaan 2D (GAN) [ , , , , ] telah membawa kepada peningkatan sintesis imej sedar 3D [ , , , , , ]. Walau bagaimanapun, barisan kerja ini bertujuan untuk mensintesis imej konsisten pelbagai pandangan menggunakan rendering neural dalam proses sintesis dan tidak menjamin bahawa bentuk 3D yang bermakna boleh dijana. Walaupun mesh berpotensi diperoleh daripada perwakilan medan neural asas menggunakan algoritma kiub perarakan [ ], mengekstrak tekstur yang sepadan bukanlah mudah. 45 34 35 33 29 52 7 57 8 49 51 25 39 Dalam kerja ini, kami memperkenalkan pendekatan novel yang bertujuan untuk menangani semua keperluan model penjanaan 3D yang berguna secara praktikal. Khususnya, kami mencadangkan GET3D, model eneratif untuk bentuk 3D yang secara langsung mengeluarkan mesh bertekstur kspresit dengan perincian geometri dan tekstur resolusi tinggi serta topologi mesh rawak. Di tengah-tengah pendekatan kami ialah proses penjanaan yang menggunakan kaedah pengekstrakan permukaan boleh beza [ ] dan teknik rendering boleh beza [ , ]. Yang pertama membolehkan kami secara langsung mengoptimumkan dan mengeluarkan mesh 3D bertekstur dengan topologi rawak, manakala yang kedua membenarkan kami melatih model kami dengan imej 2D, justeru memanfaatkan diskriminator yang berkuasa dan matang yang dibangunkan untuk sintesis imej 2D. Oleh kerana model kami secara langsung menjana mesh dan menggunakan renderer grafik (boleh beza) yang sangat cekap, kami boleh meningkatkan skala model kami untuk melatih dengan imej G E 3D eksplisit 60 47 37 resolusi setinggi 1024 × 1024, membolehkan kami mempelajari perincian geometri dan tekstur berkualiti tinggi. Kami menunjukkan prestasi canggih untuk penjanaan bentuk 3D tanpa syarat pada pelbagai kategori dengan geometri kompleks daripada ShapeNet [ ], Turbosquid [ ] dan Renderpeople [ ], seperti kerusi, motosikal, kereta, watak manusia, dan bangunan. Dengan mesh eksplisit sebagai perwakilan output, GET3D juga sangat fleksibel dan boleh disesuaikan dengan mudah untuk tugasan lain, termasuk: pembelajaran untuk menjana kesan bahan dan pencahayaan bergantung pandangan yang terurai menggunakan rendering boleh beza termaju [ ], tanpa penyeliaan, penjanaan bentuk 3D berpandukan teks menggunakan penyulitan CLIP [ ]. 9 4 2 (a) 12 (b) 56 2 Kerja Berkaitan Kami mengkaji kemajuan terkini dalam model penjanaan 3D untuk geometri dan penampilan, serta sintesis imej penjanaan sedar 3D. Dalam beberapa tahun kebelakangan ini, model penjanaan 2D telah mencapai kualiti fotorealistik dalam sintesis imej resolusi tinggi [ , , , , , , ]. Kemajuan ini juga telah memberi inspirasi kepada penyelidikan dalam penjanaan kandungan 3D. Pendekatan awal bertujuan untuk mengembangkan penjana CNN 2D secara langsung kepada grid voxel 3D [ , , , , ], tetapi jejak memori yang tinggi dan kerumitan pengiraan konvolusi 3D menghalang proses penjanaan pada resolusi tinggi. Sebagai alternatif, kerja lain telah meneroka perwakilan titik awan [ , , , ], implisit [ , ], atau octree [ ]. Walau bagaimanapun, kerja-kerja ini terutamanya menumpukan pada penjanaan geometri dan mengabaikan penampilan. Perwakilan output mereka juga perlu diproses selepas itu agar serasi dengan enjin grafik standard. Model Penjanaan 3D 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Lebih serupa dengan kerja kami, Textured3DGAN [ , ] dan DIBR [ ] menjana mesh 3D bertekstur, tetapi mereka merumuskan penjanaan sebagai deformasi templat mesh, yang menghalang mereka daripada menjana topologi kompleks atau bentuk dengan genus yang berubah-ubah, yang boleh dilakukan oleh kaedah kami. PolyGen [ ] dan SurfGen [ ] boleh menghasilkan mesh dengan topologi rawak, tetapi tidak mensintesis tekstur. 54 53 11 48 41 Diinspirasikan oleh kejayaan rendering volumetrik neural [ ] dan perwakilan implisit [ , ], kerja terkini mula menangani masalah sintesis imej sedar 3D [ , , , , , , , , , ]. Walau bagaimanapun, rangkaian rendering volumetrik neural biasanya perlahan untuk ditanya, menyebabkan masa latihan yang panjang [ , ], dan menjana imej resolusi terhad. GIRAFFE [ ] dan StyleNerf [ ] meningkatkan kecekapan latihan dan rendering dengan melakukan rendering neural pada resolusi yang lebih rendah dan kemudian menaikkan skala keputusan dengan CNN 2D. Walau bagaimanapun, peningkatan prestasi datang dengan kos konsistensi pelbagai pandangan yang berkurangan. Dengan menggunakan diskriminator dwi, EG3D [ ] boleh mengurangkan sebahagian masalah ini. Walau bagaimanapun, mengekstrak permukaan bertekstur daripada kaedah yang berasaskan rendering neural adalah satu usaha yang tidak mudah. Sebaliknya, GET3D secara langsung mengeluarkan mesh bertekstur 3D yang boleh digunakan serta-merta dalam enjin grafik standard. Sintesis Imej Penjanaan Sedar 3D 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Kaedah Kami kini membentangkan rangka kerja GET3D kami untuk mensintesis bentuk 3D bertekstur. Proses penjanaan kami terbahagi kepada dua bahagian: cawangan geometri, yang boleh membezakan mengeluarkan mesh permukaan topologi rawak, dan cawangan tekstur yang menghasilkan medan tekstur yang boleh ditanya pada titik permukaan untuk menghasilkan warna. Yang terakhir ini boleh diperluas kepada sifat permukaan lain seperti contohnya bahan (Sek. ). Semasa latihan, rasterizer boleh beza yang cekap digunakan untuk merender mesh bertekstur yang terhasil ke dalam imej 2D resolusi tinggi. Keseluruhan proses boleh dibezakan, membolehkan latihan adversarial daripada imej (dengan topeng menunjukkan objek minat) dengan menyebarkan gradien daripada diskriminator 2D ke kedua-dua cawangan penjana. Model kami digambarkan dalam Rajah. . Dalam bahagian berikut, kami terlebih dahulu memperkenalkan penjana 3D kami dalam Sek , sebelum meneruskan kepada renderan boleh beza dan fungsi kerugian dalam Sek . 4.3.1 2 3.1 3.2 3.1 Model Penjanaan Mesh 3D Bertekstur Kami bertujuan untuk mempelajari penjana 3D = ( ) untuk memetakan sampel daripada taburan Gaussian M, E G z ∈ N (0*,* ) kepada mesh dengan tekstur . z I M E Oleh kerana geometri yang sama boleh mempunyai tekstur yang berbeza, dan tekstur yang sama boleh digunakan pada geometri yang berbeza, kami mengambil sampel dua vektor input rawak 1 ∈ R512 dan 2 ∈ R512. Mengikut StyleGAN [ , , ], kami kemudian menggunakan rangkaian pemetaan bukan linear geo dan tex untuk memetakan 1 dan 2 kepada vektor laten perantaraan 1 = geo( 1) dan 2 = tex( 2) yang seterusnya digunakan untuk menghasilkan yang mengawal penjanaan bentuk 3D dan tekstur, masing-masing. Kami secara rasmi memperkenalkan penjana untuk geometri dalam Sek. dan penjana tekstur dalam Sek. . z z 34 35 33 f f z z w f z w f z gaya 3.1.1 3.1.2 3.1.1 Penjana Geometri Kami mereka bentuk penjana geometri kami untuk menggabungkan DMTet [ ], perwakilan permukaan boleh beza yang dicadangkan baru-baru ini. DMTet mewakili geometri sebagai medan jarak bertanda (SDF) yang ditakrifkan pada grid tetrahedral boleh ubah [ , ], dari mana permukaan boleh dipulihkan secara boleh beza melalui perarakan tetrahedra [ ]. Mengubah grid dengan menggerakkan verteksnya menghasilkan penggunaan resolusinya yang lebih baik. Dengan menggunakan DMTet untuk pengekstrakan permukaan, kami boleh menghasilkan mesh eksplisit dengan topologi dan genus rawak. Seterusnya kami menyediakan ringkasan ringkas DMTet dan merujuk pembaca kepada kertas asal untuk butiran lanjut. 60 22 24 17 Biarkan ( ) mewakili keseluruhan ruang 3D tempat objek berada, di mana ialah verteks dalam grid tetrahedral . Setiap tetrahedron ∈ ditakrifkan menggunakan empat verteks { }, dengan ∈ {1*, . . . , K*}, di mana ialah jumlah tetrahedron, dan ∈ ∈ R3. Selain daripada koordinat 3D nya, setiap verteks mengandungi nilai SDF ∈ R dan deformasi ∆ ∈ R3 bagi verteks daripada koordinat kanonik asalnya. Perwakilan ini membenarkan pemulihan mesh eksplisit melalui perarakan tetrahedra boleh beza [ ], di mana nilai SDF dalam ruang berterusan dikira dengan interpolasi barysentrik nilai nya pada verteks yang diubahsuai ′ = + ∆ . 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 Kami memetakan 1 ∈ R512 kepada nilai SDF dan deformasi pada setiap verteks melalui siri konvolusi 3D bersyarat dan lapisan bersambung penuh. Khususnya, kami mula-mula menggunakan lapisan konvolusi 3D untuk menjana isipadu ciri yang dikondisikan pada 1. Kami kemudian bertanya ciri pada setiap verteks ∈ menggunakan interpolasi trilinear dan memasukkannya ke dalam MLP yang mengeluarkan nilai SDF dan deformasi ∆ . Sekiranya pemodelan pada resolusi tinggi diperlukan (cth. motosikal dengan struktur nipis pada roda), kami seterusnya menggunakan pembahagian isipadu mengikut [ ]. Senibina Rangkaian w v i w v i VT si v i 60 Selepas memperoleh dan ∆ untuk semua verteks, kami menggunakan algoritma perarakan tetrahedra boleh beza untuk mengekstrak mesh eksplisit. Perarakan tetrahedra menentukan topologi permukaan dalam setiap tetrahedron berdasarkan tanda . Khususnya, muka mesh diekstrak apabila sign( ) /= sign( ), di mana menunjukkan indeks verteks dalam tepi tetrahedron, dan verteks bagi muka itu ditentukan oleh interpolasi linear seperti mi,j = v 0 i sj−v 0 j si sj−si . Ambil perhatian bahawa persamaan di atas hanya dinilai apabila si 6= sj , justeru ia boleh dibezakan, dan gradien daripada mi,j boleh disebarkan semula ke dalam nilai SDF si dan deformasi ∆vi . Dengan perwakilan ini, bentuk dengan topologi rawak boleh dijana dengan mudah dengan meramalkan tanda si yang berbeza. Pengekstrakan Mesh Boleh Beza si v i si si sj i, j m i,j 3.1.2 Penjana Tekstur Menjana peta tekstur yang konsisten dengan mesh output secara langsung bukanlah mudah, kerana bentuk yang dijana boleh mempunyai genus dan topologi rawak. Oleh itu, kami memparameterkan tekstur sebagai medan tekstur [ ]. 50 Khususnya, kami memodelkan medan tekstur dengan fungsi yang memetakan lokasi 3D bagi titik permukaan ∈ R3, dikondisikan pada 2, kepada warna RGB ∈ R3 pada lokasi itu. Oleh kerana medan tekstur bergantung pada geometri, kami juga mengkondisikan pemetaan ini pada kod laten geometri 1, supaya = ( *,* 1 ⊕ 2), di mana ⊕ menunjukkan penyambungan. ft p w c w c ft p w w Kami mewakili medan tekstur kami menggunakan perwakilan tri-satah, yang cekap dan ekspresif dalam merekonstruksi objek 3D [ ] dan menjana imej sedar 3D [ ] . Khususnya, kami mengikut [ , ] dan menggunakan rangkaian saraf konvolusional 2D bersyarat untuk memetakan kod laten 1 ⊕ 2 kepada tiga satah ciri ortogonal selari paksi bersaiz × × ( × 3), di mana = 256 mewakili resolusi spatial dan = 32 bilangan saluran. Senibina Rangkaian 55 8 8 35 w w N N C N C Diberikan satah ciri, vektor ciri f t ∈ R 32 bagi titik permukaan p boleh diperoleh sebagai f t = P e ρ(πe(p)), di mana πe(p) ialah unjuran titik p ke satah ciri e dan ρ(·) merujuk kepada interpolasi bilinear ciri. Lapisan bersambung penuh tambahan kemudiannya digunakan untuk memetakan vektor ciri terkumpul f t kepada warna RGB c. Ambil perhatian bahawa, berbeza daripada kerja lain mengenai sintesis imej sedar 3D yang juga menggunakan perwakilan medan neural, kami hanya perlu mengambil sampel medan tekstur pada lokasi titik permukaan (berbanding sampel padat di sepanjang sinar). Ini mengurangkan kerumitan pengiraan secara mendadak untuk merender imej resolusi tinggi dan menjamin penjanaan imej konsisten pelbagai pandangan mengikut pembinaan. 3.2 Renderan Boleh Beza dan Latihan Untuk menyelia model kami semasa latihan, kami mendapat inspirasi daripada Nvdiffrec [ ] yang melakukan pembinaan semula objek 3D pelbagai pandangan dengan menggunakan renderer boleh beza. Khususnya, kami merender mesh yang diekstrak dan medan tekstur kepada imej 2D menggunakan renderer boleh beza [ ], dan menyelia rangkaian kami dengan diskriminator 2D, yang cuba membezakan imej daripada objek sebenar atau yang dirender daripada objek yang dijana. 47 37 Kami menganggap bahawa taburan kamera C yang digunakan untuk memperoleh imej dalam set data diketahui. Untuk merender bentuk yang dijana, kami mengambil sampel kamera secara rawak daripada C, dan menggunakan rasterizer boleh beza Nvdiffrast [ ] yang dioptimumkan tinggi untuk merender mesh 3D kepada siluet 2D serta imej di mana setiap piksel mengandungi koordinat titik 3D yang sepadan Renderan Boleh Beza c 37 pada permukaan mesh. Koordinat ini seterusnya digunakan untuk bertanya medan tekstur untuk mendapatkan nilai RGB. Oleh kerana kami beroperasi secara langsung pada mesh yang diekstrak, kami boleh merender imej resolusi tinggi dengan kecekapan tinggi, membolehkan model kami dilatih dengan resolusi imej setinggi 1024×1024. Kami melatih model kami menggunakan objektif adversarial. Kami menggunakan senibina diskriminator daripada StyleGAN [ ], dan menggunakan objektif GAN bukan tepu yang sama dengan regularisasi R1 [ ]. Kami secara empirikal mendapati bahawa menggunakan dua diskriminator berasingan, satu untuk imej RGB dan satu lagi untuk siluet, memberikan hasil yang lebih baik daripada satu diskriminator yang beroperasi pada kedua-duanya. Biarkan mewakili diskriminator, di mana sama ada imej RGB atau siluet. Objektif adversarial kemudiannya ditakrifkan seperti berikut: Diskriminator & Objektif 34 42 Dx x di mana ( ) ditakrifkan sebagai ( ) = − log(1 +exp(− )), ialah taburan imej sebenar, mewakili rendering, dan ialah hiperparameter. Oleh kerana boleh dibezakan, gradien boleh disebarkan semula daripada imej 2D kepada penjana 3D kami. g u g u u px R λ R Untuk mengalih keluar muka terapung dalaman yang tidak kelihatan dalam mana-mana pandangan, kami seterusnya mengawal penjana geometri dengan kerugian silang entropi yang ditakrifkan antara nilai SDF verteks bersebelahan [ ]: Regularisasi 47 di mana mewakili kerugian silang entropi binari dan mewakili fungsi sigmoid. Jumlah dalam Eq. ditakrifkan ke atas set tepi unik S dalam grid tetrahedral, di mana sign( ) /= sign( ). H σ 2 e si sj Fungsi kerugian keseluruhan kemudiannya ditakrifkan sebagai: di mana ialah hiperparameter yang mengawal tahap regularisasi. µ 4 Eksperimen Kami menjalankan eksperimen ekstensif untuk menilai model kami. Kami pertama kali membandingkan kualiti mesh bertekstur 3D yang dijana oleh GET3D dengan kaedah sedia ada menggunakan set data ShapeNet [ ] dan Turbosquid [ ]. Seterusnya, kami melakukan ablasi pilihan reka bentuk kami dalam Sek. . Akhir sekali, kami menunjukkan fleksibiliti GET3D dengan menyesuaikannya untuk aplikasi hiliran dalam Sek. . Keputusan eksperimen tambahan dan butiran pelaksanaan disediakan dalam Lampiran. 9 4 4.2 4.3 4.1 Eksperimen pada Set Data Sintetik Untuk penilaian pada ShapeNet [ ], kami menggunakan tiga kategori dengan geometri kompleks – , , dan , yang mengandungi 7497, 6778, dan 337 bentuk, masing-masing. Kami secara rawak membahagikan setiap kategori kepada latihan (70%), pengesahan (10%), dan ujian (20%), dan seterusnya mengalih keluar daripada set ujian bentuk yang mempunyai pendua dalam set latihan. Untuk merender data latihan, kami secara rawak mengambil sampel kedudukan kamera daripada hemisfera atas setiap bentuk. Untuk kategori dan , kami menggunakan 24 pandangan rawak, manakala untuk kami menggunakan 100 pandangan kerana bilangan bentuk yang lebih sedikit. Memandangkan model dalam ShapeNet hanya mempunyai tekstur ringkas, kami juga menilai GET3D pada set data (442 bentuk) yang dikumpulkan daripada TurboSquid [ ], di mana tekstur lebih terperinci dan kami membahagikannya kepada latihan, pengesahan dan ujian seperti yang ditakrifkan di atas. Akhir sekali, untuk menunjukkan keserbagunaan GET3D, kami juga menyediakan keputusan kualitatif pada set data yang dikumpulkan daripada Turbosquid (563 bentuk), dan set data daripada Renderpeople [ ] (500 bentuk). Kami melatih model berasingan pada setiap kategori. Set Data 9 Kereta Kerusi Motosikal Kereta Kerusi Motosikal Haiwan 4 Rumah Badan Manusia 2