
XCUBE: Modélisation générative 3D à grande échelle à l'aide de hiérarchies de voxels clairsemés
Xuanchi Ren, Jiahii Huang, XiaoHui Zeng, Ken Museth, Sanja Fidler, Francis Williams
Papier, page de projet
Résumé: Nous présentons Xcube (abrégé en X 3 ), un nouveau modèle génératif pour les grilles de voxel 3D clairsemées à haute résolution avec des attributs arbitraires. Notre modèle peut générer des millions de voxels avec une plus belle résolution efficace de jusqu'à 1024 3 d'une manière alimentaire sans optimisation du temps de test qui prend du temps. Pour y parvenir, nous utilisons un modèle de diffusion latente hiérarchique voxel qui génère des grilles de résolution progressivement plus élevées de manière grossière à finale en utilisant un cadre personnalisé construit sur la structure de données VDB très efficace. En plus de générer des objets haute résolution, nous démontrons l'efficacité de Xcube sur de grandes scènes extérieures à des échelles de 100 m x 100m avec une taille de voxel aussi petite que 10 cm. Nous observons des améliorations qualitatives et quantitatives claires par rapport aux approches passées. En plus de la génération inconditionnelle, nous montrons que notre modèle peut être utilisé pour résoudre une variété de tâches telles que l'édition guidée par l'utilisateur, l'achèvement de la scène à partir d'un seul scan et du texte à 3D.
Pour les demandes commerciales, veuillez visiter notre site Web et soumettre le formulaire: NVIDIA Research Licensing. Pour toute autre question liée au modèle, veuillez contacter Xuanchi ou JiaHui.
Notez que nous ne prenons actuellement en charge que Linux. Nous accueillons le support pour d'autres plateformes.
(Facultatif) Installez Libmamba pour une énorme amélioration de la qualité de vie lors de l'utilisation de 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 ../..
Pour les utilisateurs de Docker, nous suggérons d'utiliser une image de base à partir d'ici et d'appliquer la configuration de conda ci-dessus.
Téléchargez les points de contrôle pré-entraînés sur Google Drive et placez-les sous checkpoints . Alternativement, nous fournissons un script qui pourrait tout télécharger automatiquement pour vous (temporairement indisponible):
python inference/download_pretrain.py
Inférence de formet:
# 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}
Inférence Waymo:
# 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}
Inférence objaverse:
# 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}
Le code publié a quelques différences par rapport à la version décrite dans l'article:
- Le réseau de raffinement est omis pour le code plus propre, ce qui peut provoquer de légères variations dans les résultats, mais ces différences ne sont pas significatives.
- Le processus d'extraction du maillage a été déplacé de la VAE au post-traitement.
Nous avons préparé des instructions détaillées sur la préparation des données et les astuces utiles chez Xcube Misc.
Liens de téléchargement des données:
../data/shapenet . Ou vous devez changer _shapenet_path dans la configuration.Modèles de formation automatique de formation:
# 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
Formation des modèles de diffusion latente:
# 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
Modèles de formation automatique de formation:
# 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
Formation des modèles de diffusion latente:
# 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
De plus, vous pouvez spécifier manuellement différents paramètres de formation pour obtenir des modèles qui répondent à vos besoins. Les drapeaux communs comprennent:
--wname : Nom de l'expérience supplémentaire à spécifier pour Wandb Logger.--batch_size : Num of Batch in Total pour autoencoder et Num of Batch par GPU pour diffusion .--logger_type : nous utilisons wandb par défaut; none n'est également pris en charge. Copyright © 2024, Nvidia Corporation & Affiliates. Tous droits réservés. Ce travail est mis à disposition sous la licence de code source NVIDIA.
@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 }
}