
XCube: крупномасштабное 3D-генеративное моделирование с использованием разреженных иерархий вокселей
Xuanchi Ren, Jiahui Huang, Xiaohui Zeng, Ken Museth, Sanja Fidler, Francis Williams
Бумага, страница проекта
Аннотация: Мы представляем Xcube (сокращенно как x 3 ), новую генеративную модель для разреженных трехмерных сетей вокселей с высоким разрешением с произвольными атрибутами. Наша модель может генерировать миллионы вокселей с наибольшим эффективным разрешением до 1024 3 в моде, не получающей много времени, оптимизации времени испытания. Для достижения этого мы используем иерархическую скрытую модель вокселя, которая генерирует постепенно более высокие сети разрешения грубым образом, используя пользовательскую структуру, основанную на высокоэффективной структуре данных VDB. Помимо генерирования объектов с высоким разрешением, мы демонстрируем эффективность Xcube на больших наружных сценах в масштабах 100 м x 100 м с размером вокселя до 10 см. Мы наблюдаем четкие качественные и количественные улучшения по сравнению с прошлыми подходами. В дополнение к безоговорочному поколению, мы показываем, что наша модель можно использовать для решения различных задач, таких как редактирование под руководством пользователя, завершение сцены с одного сканирования и текст к 3D.
Для запросов на деловые запросы, пожалуйста, посетите наш веб -сайт и отправьте форму: Nvidia Research Licensing. Для любых других вопросов, связанных с моделью, пожалуйста, свяжитесь с Сюанчи или Цзяхуи.
Обратите внимание, что в настоящее время мы поддерживаем только Linux. Мы приветствуем поддержку других платформ.
(Необязательно) Установите Libmamba для огромного улучшения качества жизни при использовании 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 ../..
Для пользователей Docker мы предлагаем использовать базовое изображение отсюда и применить вышеупомянутую настройку Conda.
Загрузите предварительные контрольные точки с Google Drive и поместите их под checkpoints . В качестве альтернативы мы предоставляем сценарий, который может автоматически загружать все для вас (временно недоступно):
python inference/download_pretrain.py
Вывод формы:
# 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}
Веймо вывод:
# 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:
# 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}
Выпущенный код имеет некоторые отличия от версии, описанной в статье:
- Сеть уточнения пропущена для более чистого кода, что может вызвать небольшие изменения в результатах, но эти различия не являются значительными.
- Процесс извлечения сетки был перемещен из VAE в постобработку.
Мы подготовили подробные инструкции о подготовке данных и полезных трюках на XCube Misc.
Ссылки загрузки данных:
../data/shapenet . Или вы измените _shapenet_path в конфигурации.Обучение моделей автоэкодера:
# 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
Обучение скрытых диффузионных моделей:
# 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
Обучение моделей автоэкодера:
# 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
Обучение скрытых диффузионных моделей:
# 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
Кроме того, вы можете вручную указать различные настройки обучения для получения моделей, которые соответствуют вашим потребностям. Общие флаги включают:
--wname : дополнительное имя эксперимента, чтобы указать для Wandb Logger.--batch_size : число партии в общей сложности для autoencoder и числа партии на графический процессор для diffusion .--logger_type : мы используем wandb по умолчанию; none также не поддерживается. Copyright © 2024, Nvidia Corporation & Filecates. Все права защищены. Эта работа предоставляется в соответствии с лицензией 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 }
}