NoPoSplat прогнозирует 3D-гауссианы в каноническом пространстве на основе необработанных разреженных изображений.
обеспечивая высококачественный синтез новых изображений и точную оценку позы.
Установка
Предварительно обученные контрольные точки
Соглашения о камерах
Наборы данных
Запуск кода
Благодарности
Цитирование
Наш код основан на Python 3.10+ и разработан на основе PyTorch 2.1.2 и CUDA 11.8, но он также должен работать и с более поздними версиями Pytorch/CUDA.
Клон НоПоСплат.
git клон https://github.com/cvg/NoPoSplatcd NoPoSplat
Создайте среду, здесь мы покажем пример с использованием conda.
conda create -y -n noposplat python=3.10 Конда активирует нопосплат pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118 pip install -r требования.txt
По желанию скомпилируйте ядра cuda для RoPE (как в CroCo v2).
# NoPoSplat опирается на позиционные встраивания RoPE, для которых вы можете скомпилировать некоторые ядра cuda для более быстрого выполнения.cd src/model/encoder/backbone/croco/curope/ python setup.py build_ext --inplacecd ../../../../../..
Наши модели размещены на Hugging Face?
Название модели | Резолюции обучения | Данные обучения |
---|---|---|
re10k.ckpt | 256x256 | ре10к |
кислота.ckpt | 256x256 | кислота |
mixRe10kDl3dv.ckpt | 256x256 | ре10к, дл3дв |
mixRe10kDl3dv_512x512.ckpt | 512x512 | ре10к, дл3дв |
Мы предполагаем, что загруженные веса находятся в каталоге pretrained_weights
.
Наша система камер такая же, как и у PixelSplat. Внутренние матрицы камеры нормализованы (первая строка разделена по ширине изображения, вторая строка — по высоте изображения). Внешние матрицы камеры представляют собой матрицы типа «камера-мир» в стиле OpenCV (+X вправо, +Y вниз, +Z камера смотрит на экран).
Пожалуйста, обратитесь к DATASETS.md для подготовки набора данных.
Основная точка входа — src/main.py
. Позвоните через:
# 8 графических процессоров, размер каждого пакета = 16. Удалите два последних аргумента, если вы не хотите использовать wandb для ведения журналов. Python -m src.main +experiment=re10k wandb.mode=online wandb.name=re10k
Для этой конфигурации обучения по умолчанию требуется 8 графических процессоров с размером пакета 16 на каждом графическом процессоре (>= 80 ГБ памяти). Обучение займет около 6 часов. Вы можете настроить размер пакета в соответствии с вашим оборудованием, но учтите, что изменение общего размера пакета может потребовать изменения начальной скорости обучения для поддержания производительности. Вы можете обратиться к re10k_1x8 для обучения на 1 графическом процессоре A6000 (память 48 ГБ), который обеспечит аналогичную производительность.
# RealEstate10Kpython -m src.main +experiment=re10k mode=test wandb.name=re10k dataset/[email protected]_sampler=evaluation dataset.re10k.view_sampler.index_path=assets/evaluation_index_re10k.json checkpointing.load=./pretrained_weights /re10k.ckpt test.save_image=true# RealEstate10Kpython -m src.main +experiment=acid mode=test wandb.name=acid dataset/[email protected]_sampler=evaluation dataset.re10k.view_sampler.index_path=assets/evaluation_index_acid .json checkpointing.load=./pretrained_weights/acid.ckpt test.save_image=true
Вы можете установить wandb.name=SAVE_FOLDER_NAME
, чтобы указать путь сохранения.
Чтобы оценить производительность оценки позы, вы можете запустить следующую команду:
# RealEstate10Kpython -m src.eval_pose +experiment=re10k +evaluation=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt dataset/[email protected]_sampler=evaluation dataset.re10k.view_sampler.index_path=assets/evaluation_index_re1 0k.json # ACIDpython -m src.eval_pose +experiment=acid +evaluation=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt dataset/[email protected]_sampler=evaluation dataset.re10k.view_sampler.index_path=assets/evaluation_index_acid.json # ScanNet-1500python -m src.eval_pose +experiment=scannet_pose +evaluation=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt
Обратите внимание, что здесь мы показываем оценку с использованием смешанной модели, обученной на RealEstate10K и DL3DV. Вы можете заменить путь контрольной точки другими обученными моделями.
Этот проект разработан с использованием нескольких замечательных репозиториев: PixelSplat, DUSt3R и CroCo. Мы благодарим первоначальных авторов за их прекрасную работу. Мы благодарим Дэвида Чаратана за любезную помощь за предоставление оценочного кода и предварительно обученных моделей для некоторых предыдущих методов.
@article{ye2024noposplat, title = {No Pose, No Problem: Surprisingly Simple 3D Gaussian Splats from Sparse Unposed Images}, author = {Ye, Botao and Liu, Sifei and Xu, Haofei and Xueting, Li and Pollefeys, Marc and Yang, Ming-Hsuan and Songyou, Peng}, journal = {arXiv preprint arXiv:xxxx.xxxx}, year = {2024} }