Optimalisasi bersama topologi, bahan, dan pencahayaan dari pengamatan gambar multi-view seperti yang dijelaskan dalam kertas yang mengekstraksi model 3D segitiga, bahan, dan pencahayaan dari gambar.
Untuk tetrahedons berbaris yang dapat dibedakan, kami telah mengadaptasi kode dari Nvidia's Kaolin: A Pytorch Library untuk mempercepat penelitian pembelajaran mendalam 3D.
2023-10-20 : Kami menambahkan versi perpustakaan Renderutils yang ditulis dalam slangpy untuk memanfaatkan kemampuan autodiff dari bahasa gaul alih-alih ekstensi CUDA dengan umpan ke depan dan ke belakang secara manual. Ini menyederhanakan kode secara substansial, dengan kinerja runtime yang sama seperti sebelumnya. Versi ini tersedia di cabang slang repo ini.
2023-09-15 : Kami menambahkan dukungan untuk teknik flexicubes isosurfacing. Silakan lihat configs/bob_flexi.json untuk contoh penggunaan, dan lihat dokumentasi Flexicubes untuk detailnya.
@inproceedings{Munkberg_2022_CVPR,
author = {Munkberg, Jacob and Hasselgren, Jon and Shen, Tianchang and Gao, Jun and Chen, Wenzheng
and Evans, Alex and M"uller, Thomas and Fidler, Sanja},
title = "{Extracting Triangular 3D Models, Materials, and Lighting From Images}",
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2022},
pages = {8280-8290}
}
Hak Cipta © 2022, Nvidia Corporation. Semua hak dilindungi undang -undang.
Pekerjaan ini tersedia di bawah Lisensi Kode Sumber NVIDIA.
Untuk pertanyaan bisnis, silakan kunjungi situs web kami dan kirimkan formulir: Lisensi Penelitian NVIDIA.
Membutuhkan Python 3.6+, VS2019+, CUDA 11.3+ dan Pytorch 1.10+
Diuji di Anaconda3 dengan Python 3.9 dan Pytorch 1.10
Pasang CUDA Toolkit (diperlukan untuk membangun ekstensi Pytorch). Kami mendukung CUDA 11.3 ke atas. Pilih versi Pytorch yang sesuai yang kompatibel dengan CUDA Toolkit yang diinstal. Di bawah ini adalah contoh dengan CUDA 11.6
conda create -n dmodel python=3.9
activate dmodel
conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge
pip install ninja imageio PyOpenGL glfw xatlas gdown
pip install git+https://github.com/NVlabs/nvdiffrast/
pip install --global-option="--no-networks" git+https://github.com/NVlabs/tiny-cuda-nn#subdirectory=bindings/torch
imageio_download_bin freeimage
activate dmodel
Pendekatan kami dirancang untuk GPU NVIDIA kelas atas dengan sejumlah besar memori. Untuk menjalankan pada GPU kelas menengah, kurangi parameter ukuran batch di file .json.
Contoh Rekonstruksi Genus 1 Sederhana:
python train.py --config configs/bob.json
Visualisasikan Kemajuan Pelatihan (hanya didukung di Windows):
python train.py --config configs/bob.json --display-interval 20
Multi GPU Contoh (Linux saja. Eksperimental: Semua hasil dalam kertas dihasilkan menggunakan GPU tunggal ), menggunakan Pytorch DDP
torchrun --nproc_per_node=4 train.py --config configs/bob.json
Di bawah, kami menunjukkan titik awal dan hasil akhirnya. Referensi ke kanan.


Hasilnya akan disimpan di folder out . Model Spot dan Bob dibuat dan dirilis ke domain publik oleh Keenan Crane.
Termasuk contoh
spot.json - Mengekstraksi model 3D dari model spot. Geometri, bahan, dan pencahayaan dari pengamatan gambar.spot_fixlight.json - Sama seperti di atas tetapi dengan asumsi pencahayaan lingkungan yang diketahui.spot_metal.json - Contoh pembelajaran bersama bahan dan pencahayaan lingkungan frekuensi tinggi untuk menampilkan split -sum.bob.json - Contoh sederhana model genus 1. Kami juga menyertakan konfigurasi ( nerf_*.json , nerd_*.json ) untuk mereproduksi hasil utama kertas. Kami mengandalkan kumpulan data pihak ketiga, yang merupakan milik penulis masing -masing. Harap dicatat bahwa lisensi individual berlaku untuk setiap dataset. Untuk secara otomatis mengunduh dan pra-proses semua dataset, jalankan skrip download_datasets.py :
activate dmodel
cd data
python download_datasets.py
Di bawah ini mengikuti lebih banyak informasi dan instruksi tentang cara menginstal dataset secara manual (jika skrip otomatis gagal).
Dataset Sintetis NERF Hasil interpolasi Tampilan kami Gunakan dataset sintetis dari kertas NERF asli. Untuk menginstalnya secara manual, unduh Arsip Dataset Sintetis NERF dan unzip ke folder nvdiffrec/data . Ini diperlukan untuk menjalankan konfigurasi nerf_*.json
Dataset NERD Kami menggunakan set data dari kertas Nerd, yang menampilkan fotogrametri dunia nyata dan topeng segmentasi yang tidak akurat (secara manual dianotasi). Kloning dataset kutu buku menggunakan git dan rescale mereka ke resolusi 512 x 512 piksel menggunakan skrip scale_images.py . Ini diperlukan untuk menjalankan konfigurasi nerd_*.json .
activate dmodel
cd nvdiffrec/data/nerd
git clone https://github.com/vork/ethiopianHead.git
git clone https://github.com/vork/moldGoldCape.git
python scale_images.py
cd docker
./make_image.sh nvdiffrec:v1
Mulai wadah Docker Interaktif: docker run --gpus device=0 -it --rm -v /raid:/raid -it nvdiffrec:v1 bash
Docker Terpisah: docker run --gpus device=1 -d -v /raid:/raid -w=[path to the code] nvdiffrec:v1 python train.py --config configs/bob.json