
Xcube: Pemodelan generatif 3D skala besar menggunakan hierarki voxel yang jarang
Xuananchi Ren, Jiahui Huang, Xiaohui Zeng, Ken Museth, Sanja Fidler, Francis Williams
Kertas, halaman proyek
Abstrak: Kami menyajikan xcube (disingkat x 3 ), model generatif baru untuk grid voxel 3D resolusi tinggi dengan atribut sewenang-wenang. Model kami dapat menghasilkan jutaan voxel dengan resolusi efektif terbaik hingga 1024 3 dengan cara feed-forward tanpa optimasi waktu tes yang memakan waktu. Untuk mencapai hal ini, kami menggunakan model difusi laten voxel hierarkis yang menghasilkan kisi-kisi resolusi yang semakin tinggi dengan cara kasar-ke-halus menggunakan kerangka kerja khusus yang dibangun pada struktur data VDB yang sangat efisien. Selain menghasilkan objek resolusi tinggi, kami menunjukkan efektivitas XCUBE pada adegan luar ruangan yang besar pada skala 100m x 100m dengan ukuran voxel sekecil 10cm. Kami mengamati perbaikan kualitatif dan kuantitatif yang jelas atas pendekatan masa lalu. Selain generasi tanpa syarat, kami menunjukkan bahwa model kami dapat digunakan untuk menyelesaikan berbagai tugas seperti pengeditan yang dipandu pengguna, penyelesaian adegan dari satu pemindaian, dan teks-ke-3d.
Untuk pertanyaan bisnis, silakan kunjungi situs web kami dan kirimkan formulir: Lisensi Penelitian NVIDIA. Untuk pertanyaan lain yang terkait dengan model, silakan hubungi Xuananchi atau Jiahui.
Perhatikan bahwa kami saat ini hanya mendukung Linux. Kami menyambut dukungan untuk platform lain.
(Opsional) Pasang libmamba untuk peningkatan kualitas hidup yang sangat besar saat menggunakan 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 ../..
Untuk pengguna Docker, kami sarankan menggunakan gambar dasar dari sini, dan menerapkan pengaturan Conda di atas.
Unduh pos pemeriksaan pretrained dari Google Drive dan letakkan di bawah checkpoints . Atau, kami menyediakan skrip yang dapat secara otomatis mengunduh semuanya untuk Anda (sementara tidak tersedia):
python inference/download_pretrain.py
Inferensi Shapenet:
# 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 Inference:
# 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}
Inferensi 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}
Kode yang dirilis memiliki beberapa perbedaan dari versi yang dijelaskan dalam makalah:
- Jaringan penyempurnaan dihilangkan untuk kode yang lebih bersih, yang dapat menyebabkan sedikit variasi dalam hasil, tetapi perbedaan ini tidak signifikan.
- Proses ekstraksi mesh telah dipindahkan dari VAE ke pasca pemrosesan.
Kami telah menyiapkan instruksi terperinci tentang persiapan data dan trik yang bermanfaat di Xcube Misc.
Tautan Unduhan Data:
../data/shapenet . Atau Anda akan mengubah _shapenet_path di konfigurasi.Model Pelatihan Autoencoder:
# 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
Pelatihan Model Difusi Laten:
# 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
Model Pelatihan Autoencoder:
# 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
Pelatihan Model Difusi Laten:
# 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
Selain itu, Anda dapat secara manual menentukan pengaturan pelatihan yang berbeda untuk mendapatkan model yang sesuai dengan kebutuhan Anda. Bendera umum meliputi:
--wname : Nama percobaan tambahan untuk ditentukan untuk Wandb Logger.--batch_size : BUM BATCH Total untuk autoencoder dan BUM BATCH per GPU untuk diffusion .--logger_type : kami menggunakan wandb secara default; none yang juga didukung. Hak Cipta © 2024, Nvidia Corporation & Afiliasi. Semua hak dilindungi undang -undang. Pekerjaan ini tersedia di bawah Lisensi Kode Sumber 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 }
}