NoPoSplat memprediksi Gaussian 3D dalam ruang kanonik dari gambar renggang yang tidak diposisikan,
memungkinkan sintesis tampilan baru berkualitas tinggi dan estimasi pose yang akurat.
Instalasi
Pos Pemeriksaan yang telah dilatih sebelumnya
Konvensi Kamera
Kumpulan data
Menjalankan Kode
Ucapan Terima Kasih
Kutipan
Kode kami mengandalkan Python 3.10+, dan dikembangkan berdasarkan PyTorch 2.1.2 dan CUDA 11.8, tetapi kode ini juga dapat berfungsi dengan versi Pytorch/CUDA yang lebih tinggi.
Klon NoPoSplat.
git clone https://github.com/cvg/NoPoSplatcd NoPoSplat
Buat lingkungan, di sini kami tunjukkan contoh menggunakan conda.
conda buat -y -n noposplat python=3.10 conda aktifkan noposplat pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118 instalasi pip -r persyaratan.txt
Opsional, kompilasi kernel cuda untuk RoPE (seperti pada CroCo v2).
# NoPoSplat mengandalkan penyematan posisi RoPE di mana Anda dapat mengkompilasi beberapa kernel cuda untuk runtime yang lebih cepat.cd src/model/encoder/backbone/croco/curope/ python setup.py build_ext --inplacecd ../../../../../..
Model kami dihosting di Hugging Face?
Nama model | Resolusi pelatihan | Data pelatihan |
---|---|---|
re10k.ckpt | 256x256 | re10k |
asam.ckpt | 256x256 | asam |
mixRe10kDl3dv.ckpt | 256x256 | re10k, dl3dv |
campurRe10kDl3dv_512x512.ckpt | 512x512 | re10k, dl3dv |
Kami berasumsi bobot yang diunduh terletak di direktori pretrained_weights
.
Sistem kamera kami sama dengan pixelSplat. Matriks intrinsik kamera dinormalisasi (baris pertama dibagi lebar gambar, dan baris kedua dibagi tinggi gambar). Matriks ekstrinsik kamera adalah matriks kamera-ke-dunia gaya OpenCV ( +X kanan, +Y bawah, +Z kamera melihat ke layar).
Silakan merujuk ke DATASETS.md untuk persiapan kumpulan data.
Titik masuk utamanya adalah src/main.py
. Hubungi melalui:
# 8 GPU, dengan ukuran batch masing-masing = 16. Hapus dua argumen terakhir jika Anda tidak ingin menggunakan tongkat sihir untuk loggingpython -m src.main +experiment=re10k tongkat sihir.mode=online tongkat sihir.nama=re10k
Konfigurasi pelatihan default ini memerlukan 8x GPU dengan ukuran batch 16 pada setiap GPU (>= memori 80 GB). Pelatihan akan memakan waktu sekitar 6 jam untuk diselesaikan. Anda dapat menyesuaikan ukuran batch agar sesuai dengan perangkat keras Anda, namun perhatikan bahwa mengubah total ukuran batch mungkin memerlukan modifikasi kecepatan pembelajaran awal untuk mempertahankan kinerja. Anda dapat merujuk ke re10k_1x8 untuk pelatihan pada 1 GPU A6000 (memori 48GB), yang akan menghasilkan kinerja serupa.
# 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 tongkatb.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
Anda dapat mengatur wandb.name=SAVE_FOLDER_NAME
untuk menentukan jalur penyimpanan.
Untuk mengevaluasi performa estimasi pose, Anda dapat menjalankan perintah berikut:
# 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_re10 k.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
Perhatikan bahwa di sini kami menampilkan evaluasi menggunakan model campuran yang dilatih pada RealEstate10K dan DL3DV. Anda dapat mengganti jalur pos pemeriksaan dengan model terlatih lainnya.
Proyek ini dikembangkan dengan beberapa repo fantastis: pixelSplat, DUSt3R, dan CroCo. Kami berterima kasih kepada penulis asli atas karya luar biasa mereka. Kami berterima kasih atas bantuan David Charatan yang telah menyediakan kode evaluasi dan model terlatih untuk beberapa metode sebelumnya.
@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} }