Gelenkoptimierung von Topologie, Materialien und Beleuchtung aus Multi-View-Bildbeobachtungen, wie in dem Papier beschrieben, das dreieckige 3D-Modelle, Materialien und Beleuchtung aus Bildern extrahiert.
Für differenzierbare marschierende Tetrahedonen haben wir den Code von Nvidia Kaolin angepasst: einer Pytorch -Bibliothek zur Beschleunigung von 3D Deep Learning Research.
2023-10-20 : Wir haben eine Version der in Slangpy geschriebenen Renderutils-Bibliothek hinzugefügt, um die Autodiff-Funktionen des Slang anstelle von Cuda-Erweiterungen mit manuell verarbeiteten Vorwärts- und Rückwärtspässen zu nutzen. Dies vereinfacht den Code erheblich mit der gleichen Laufzeitleistung wie zuvor. Diese Version ist im slang -Zweig dieses Repo erhältlich.
2023-09-15 : Wir haben Unterstützung für die Flexicubes Isosurfacing-Technik hinzugefügt. Weitere Informationen finden Sie in der configs/bob_flexi.json . Weitere Informationen finden Sie in der Dokumentation von Flexicubes.
@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}
}
Copyright © 2022, Nvidia Corporation. Alle Rechte vorbehalten.
Diese Arbeit wird im Rahmen der NVIDIA -Quellcode -Lizenz zur Verfügung gestellt.
Für geschäftliche Anfragen besuchen Sie bitte unsere Website und senden Sie das Formular: NVIDIA Research Lizenzierung.
Benötigt Python 3.6+, VS2019+, CUDA 11.3+ und Pytorch 1.10+
Getestet in Anaconda3 mit Python 3.9 und Pytorch 1.10
Installieren Sie das CUDA -Toolkit (erforderlich, um die Pytorch -Erweiterungen zu erstellen). Wir unterstützen Cuda 11.3 und höher. Wählen Sie die entsprechende Version von Pytorch, die mit dem installierten CUDA -Toolkit kompatibel sind. Unten finden Sie ein Beispiel mit 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
Unser Ansatz ist für High-End-NVIDIA-GPUs mit großen Mengen an Speicher ausgelegt. Reduzieren Sie den Parameter der Stapelgröße in den .json-Dateien, um mit Mid-Range-GPUs auszuführen.
Einfache Gattung 1 Rekonstruktionsbeispiel:
python train.py --config configs/bob.json
Visualisieren Sie den Trainingsfortschritt (nur unter Windows unterstützt):
python train.py --config configs/bob.json --display-interval 20
Multi -GPU
torchrun --nproc_per_node=4 train.py --config configs/bob.json
Im Folgenden zeigen wir den Startpunkt und das Endergebnis. Verweise auf das Recht.


Die Ergebnisse werden im out -Ordner gespeichert. Die Spot- und Bob -Modelle wurden von Keenan Crane gegründet und in die Öffentlichkeit freigegeben.
Eingeschlossene Beispiele
spot.json - Extrahieren eines 3D -Modells des Spot -Modells. Geometrie, Materialien und Beleuchtung aus Bildbeobachtungen.spot_fixlight.json - gilt wie oben, aber die bekannte Umgebungsbeleuchtung.spot_metal.json - Beispiel für das gemeinsame Lernen von Materialien und Hochfrequenzumweltbeleuchtung, um Split -Sum zu präsentieren.bob.json - Einfaches Beispiel für ein Modell der Gattung 1. Wir enthalten zusätzlich Konfigurationen ( nerf_*.json , nerd_*.json ), um die Hauptergebnisse des Papiers zu reproduzieren. Wir verlassen uns auf Datensätze von Drittanbietern, die mit freundlicher Genehmigung ihrer jeweiligen Autoren sind. Bitte beachten Sie, dass einzelne Lizenzen für jeden Datensatz gelten. Um alle Datensätze automatisch herunterzuladen und vorzuarbeiten, führen Sie das Skript download_datasets.py aus:
activate dmodel
cd data
python download_datasets.py
Im Folgenden folgt weitere Informationen und Anweisungen zur manuellen Installation der Datensätze (falls das automatisierte Skript fehlschlägt).
Nerf Synthetic Dataset Unsere Ansicht Interpolationsergebnisse Verwenden Sie den synthetischen Datensatz aus dem ursprünglichen NERF -Papier. Um es manuell zu installieren, laden Sie das Nerf Synthetic Dataset Archive herunter und entpacken Sie es in den Ordner nvdiffrec/data . Dies ist erforderlich, um die nerf_*.json -Konfiguration auszuführen.
NERD-Datensatz Wir verwenden Datensätze aus dem Nerd-Papier, das reale Photogrammetrie und ungenaue (manuell kommentierte) Segmentierungsmasken enthält. Klonen Sie die NERD -Datensätze mit Git und skalieren Sie sie mit der Auflösung von 512 x 512 Pixel mit der Skript scale_images.py . Dies ist erforderlich, um die nerd_*.json -Konfiguration auszuführen.
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
Starten Sie einen interaktiven Docker -Container: docker run --gpus device=0 -it --rm -v /raid:/raid -it nvdiffrec:v1 bash
Abstandsdocker: docker run --gpus device=1 -d -v /raid:/raid -w=[path to the code] nvdiffrec:v1 python train.py --config configs/bob.json