
XCube: Große 3D-Generative-Modellierung mit spärlichen Voxelhierarchien
Xuanchi Ren, Jiahui Huang, Xiaohui Zeng, Ken Museeth, Sanja Fidler, Francis Williams
Papier, Projektseite
Zusammenfassung: Wir präsentieren XCube (abgekürzte als x 3 ), ein neuartiges generatives Modell für hochauflösende, spärliche 3D-Voxelgitter mit willkürlichen Attributen. Unser Modell kann Millionen von Voxel mit einer besten effektiven Auflösung von bis zu 1024 3 auf Futtermittelgedicht ohne zeitaufwändige Testzeitoptimierung erzeugen. Um dies zu erreichen, verwenden wir ein hierarchisches Voxel-latentes Diffusionsmodell, das mit einem benutzerdefinierten Framework, das auf der hocheffizienten VDB-Datenstruktur basiert. Abgesehen von der Erzeugung hochauflösender Objekte demonstrieren wir die Wirksamkeit von XCube auf großen Außenszenen in Skalen von 100 m x 100 m mit einer Voxelgröße von nur 10 cm. Wir beobachten klare qualitative und quantitative Verbesserungen gegenüber früheren Ansätzen. Zusätzlich zur bedingungslosen Generation zeigen wir, dass unser Modell verwendet werden kann, um eine Vielzahl von Aufgaben wie benutzergeleitete Bearbeitung, Szenenabschluss aus einem einzigen Scan und Text-to-3D zu lösen.
Für geschäftliche Anfragen besuchen Sie bitte unsere Website und senden Sie das Formular: NVIDIA Research Lizenzierung. Bei anderen Fragen zum Modell wenden Sie sich bitte an Xuanchi oder Jiahui.
Beachten Sie, dass wir derzeit nur Linux unterstützen. Wir begrüßen die Unterstützung für andere Plattformen.
(Optional) Installieren Sie Libmamba für eine enorme Verbesserung der Lebensqualität bei der Verwendung von Conda
conda update -n base conda
conda install -n base conda-libmamba-solver
conda config --set solver libmamba
# Clone the repository
git clone [email protected]:nv-tlabs/XCube.git
cd XCube
# Create conda environment
conda env create -f environment.yml
conda activate xcube
# Install fVDB (3D learning framework; require GPU later than Ampere)
git clone https://github.com/AcademySoftwareFoundation/openvdb.git
cd openvdb
git fetch origin pull/1808/head:feature/fvdb
git checkout feature/fvdb
rm fvdb/setup.py && cp ../assets/setup.py fvdb/
cd fvdb && pip install .
cd ../..
# Mesh extraction
cd ext/nksr-cuda
python setup.py develop
cd ../..
Für Docker -Benutzer empfehlen wir, ein Basisbild von hier aus zu verwenden und das obige Conda -Setup darauf anzuwenden.
Laden Sie vorgeladene Kontrollpunkte von Google Drive herunter und stellen Sie sie unter checkpoints . Alternativ bieten wir ein Skript an, das automatisch alles für Sie herunterladen könnte (vorübergehend nicht verfügbar):
python inference/download_pretrain.py
Shapenet -Inferenz:
# Chair
python inference/sample_shapenet.py none --category chair --total_len 20 --batch_len 4 --ema --use_ddim --ddim_step 100 --extract_mesh
# Car
python inference/sample_shapenet.py none --category car --total_len 20 --batch_len 4 --ema --use_ddim --ddim_step 100 --extract_mesh
# Plane
python inference/sample_shapenet.py none --category plane --total_len 20 --batch_len 4 --ema --use_ddim --ddim_step 100 --extract_mesh
# Visualize
python visualize_object.py -p results/{YOUR_PATH} -i {YOUR_ID}
Waymo -Inferenz:
# Unconditional sampling
python inference/sample_waymo.py none --total_len 20 --batch_len 4 --ema --use_ddim --ddim_step 100 --extract_mesh
# Single-scan condition (coming soon)
# Visualize
python visualize_scene.py -p results/{YOUR_PATH} -i {YOUR_ID}
Objaverse Inferenz:
# Text to 3D
python inference/sample_objaverse.py none --batch_len 4 --ema --use_ddim --ddim_step 100 --extract_mesh
# Visualize
python visualize_object.py -p results/{YOUR_PATH} -i {YOUR_ID}
Der veröffentlichte Code hat einige Unterschiede zu der im Papier beschriebenen Version:
- Das Verfeinerungsnetz wird für sauberere Code weggelassen, was zu geringfügigen Abweichungen in den Ergebnissen führen kann, diese Unterschiede sind jedoch nicht signifikant.
- Der Maschenextraktionsprozess wurde von den VAE in die Nachbearbeitung verschoben.
Wir haben detaillierte Anweisungen zur Datenvorbereitung und nützlichen Tricks bei Xcube MISC erstellt.
Daten herunterladen Links:
../data/shapenet ein. Oder Sie ändern _shapenet_path in der config.Trainingsautocodermodelle:
# ShapeNet chair
python train.py ./configs/shapenet/chair/train_vae_16x16x16_dense.yaml --wname 16x16x16-kld-0.03_dim-16 --max_epochs 100 --cut_ratio 16 --gpus 8 --batch_size 32
# ShapeNet car
python train.py ./configs/shapenet/car/train_vae_16x16x16_dense.yaml --wname 16x16x16-kld-0.03_dim-16 --max_epochs 100 --cut_ratio 16 --gpus 8 --batch_size 32
# ShapeNet plane
python train.py ./configs/shapenet/plane/train_vae_16x16x16_dense.yaml --wname 16x16x16-kld-0.03_dim-16 --max_epochs 100 --cut_ratio 16 --gpus 8 --batch_size 32
# Waymo uncond
python train.py ./configs/waymo/train_vae_32x32x32_dense.yaml --wname 32x32x32-kld-0.03_dim-8 --max_epochs 50 --gpus 8 --batch_size 32 --eval_interval 1
Training latenter Diffusionsmodelle:
# ShapeNet chair
python train.py ./configs/shapenet/chair/train_diffusion_16x16x16_dense.yaml --wname 16x16x16_kld-0.03 --eval_interval 5 --gpus 8 --batch_size 8 --accumulate_grad_batches 4
# ShapeNet car
python train.py ./configs/shapenet/car/train_diffusion_16x16x16_dense.yaml --wname 16x16x16_kld-0.03 --eval_interval 5 --gpus 8 --batch_size 8 --accumulate_grad_batches 4
# ShapeNet plane
python train.py ./configs/shapenet/plane/train_diffusion_16x16x16_dense.yaml --wname 16x16x16_kld-0.03 --eval_interval 5 --gpus 8 --batch_size 8 --accumulate_grad_batches 4
# Waymo uncond
python train_auto.py ./configs/waymo/train_diffusion_32x32x32_dense.yaml --wname 32x32x32_kld-0.03 --eval_interval 1 --gpus 8 --batch_size 16 --accumulate_grad_batches 4 --save_topk 2
Trainingsautocodermodelle:
# ShapeNet chair
python train.py ./configs/shapenet/chair/train_vae_128x128x128_sparse.yaml --wname 512_to_128-kld-1.0 --max_epochs 100 --gpus 8 --batch_size 8 --accumulate_grad_batches 2
# ShapeNet car
python train.py ./configs/shapenet/car/train_vae_128x128x128_sparse.yaml --wname 512_to_128-kld-1.0 --max_epochs 100 --gpus 8 --batch_size 8 --accumulate_grad_batches 2
# ShapeNet plane
python train.py ./configs/shapenet/plane/train_vae_128x128x128_sparse.yaml --wname 512_to_128-kld-1.0 --max_epochs 100 --gpus 8 --batch_size 8 --accumulate_grad_batches 2
# Waymo uncond
python train.py ./configs/waymo/train_vae_256x256x256_sparse.yaml --wname 1024_to_256-kld-0.3 --max_epochs 50 --gpus 8 --batch_size 8 --accumulate_grad_batches 2
Training latenter Diffusionsmodelle:
# ShapeNet chair
python train.py ./configs/shapenet/plane/train_diffusion_128x128x128_sparse.yaml --wname 128x128x128_kld-1.0_normal_cond --eval_interval 5 --gpus 8 --batch_size 8 --accumulate_grad_batches 8 --save_topk 2 --save_every 30
# ShapeNet car
python train.py ./configs/shapenet/car/train_diffusion_128x128x128_sparse.yaml --wname 128x128x128_kld-1.0_normal_cond --eval_interval 5 --gpus 8 --batch_size 8 --accumulate_grad_batches 8 --save_topk 2 --save_every 30
# ShapeNet plane
python train.py ./configs/shapenet/car/train_diffusion_128x128x128_sparse.yaml --wname 128x128x128_kld-1.0_normal_cond --eval_interval 5 --gpus 8 --batch_size 8 --accumulate_grad_batches 8 --save_topk 2 --save_every 30
# Waymo uncond
python train.py ./configs/waymo/train_diffusion_256x256x256_sparse.yaml --wname 256x256x64_kld-0.3_semantic_cond --eval_interval 1 --gpus 8 --batch_size 8 --accumulate_grad_batches 4 --save_topk 1
Darüber hinaus können Sie verschiedene Trainingseinstellungen manuell angeben, um Modelle zu erhalten, die Ihren Anforderungen entsprechen. Gemeinsame Flaggen umfassen:
--wname : Zusätzlicher Experimentname für Wandb-Logger angeben.--batch_size : Num der Stapel insgesamt für autoencoder und die Num von Batch pro GPU zur diffusion .--logger_type : Wir verwenden standardmäßig wandb ; none wird auch unterstützt. Copyright © 2024, Nvidia Corporation & Affiliates. Alle Rechte vorbehalten. Diese Arbeit wird im Rahmen der NVIDIA -Quellcode -Lizenz zur Verfügung gestellt.
@inproceedings { ren2024xcube ,
title = { XCube: Large-Scale 3D Generative Modeling using Sparse Voxel Hierarchies } ,
author = { Ren, Xuanchi and Huang, Jiahui and Zeng, Xiaohui and Museth, Ken and Fidler, Sanja and Williams, Francis } ,
booktitle = { Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition } ,
year = { 2024 }
}