3D-Rekonstruktion mit räumlichem Gedächtnis
Hengyi Wang, Lourdes Agapito
arXiv 2024
[25.10.2024] Unterstützung für Nerfstudio hinzugefügt
[18.10.2024] Kameraparameterschätzung hinzufügen
[30.09.2024] @hugoycj fügt eine Gradio-Demo hinzu
[20.09.2024] Anleitung für Datensätze data_preprocess.md
[11.09.2024] Code für Spann3R
Klonen Sie Spann3R
git clone https://github.com/HengyiWang/spann3r.git cd spann3r
Erstellen Sie eine Conda-Umgebung
conda create -n spann3r python=3.9 cmake=3.14.0 conda install pytorch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 pytorch-cuda=11.8 -c pytorch -c nvidia # use the correct version of cuda for your system pip install -r requirements.txt # Open3D has a bug from 0.16.0, please use dev version pip install -U -f https://www.open3d.org/docs/latest/getting_started.html open3d
Kompilieren Sie Cuda-Kernel für RoPE
cd croco/models/curope/ python setup.py build_ext --inplace cd ../../../
Laden Sie den DUSt3R-Checkpoint herunter
mkdir checkpoints cd checkpoints # Download DUSt3R checkpoints wget https://download.europe.naverlabs.com/ComputerVision/DUSt3R/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth
Laden Sie unseren Checkpoint herunter und platzieren Sie ihn unter ./checkpoints
Laden Sie die Beispieldaten herunter (2 Szenen von map-free-reloc) und entpacken Sie sie als ./examples
Demo ausführen:
python demo.py --demo_path ./examples/s00567 --kf_every 10 --vis --vis_cam
Für die Visualisierung --vis
erhalten Sie ein Fenster zum Anpassen der Rendering-Ansicht. Sobald Sie die zu rendernde Ansicht gefunden haben, klicken Sie bitte auf space key
und schließen Sie das Fenster. Der Code übernimmt dann das Rendern der inkrementellen Rekonstruktion.
Nerfstudio:
# Run demo use --save_ori to save scaled intrinsics for original images python demo.py --demo_path ./examples/s00567 --kf_every 10 --vis --vis_cam --save_ori # Run splatfacto ns-train splatfacto --data ./output/demo/s00567 --pipeline.model.camera-optimizer.mode SO3xR3 # Render your results ns-render interpolate --load-config [path-to-your-config]/config.yml
Beachten Sie, dass Sie hier --save_ori
verwenden können, um die skalierten Eigenfunktionen in transform.json
zu speichern, um NeRF/3D-Gaußfunktionen mit Originalbildern zu trainieren.'
Für ein besseres Erlebnis bieten wir auch eine Gradio-Schnittstelle an, die einfach ausgeführt wird von:
# Für Linux- und Windows-Benutzer (und macOS mit Intel??)python app.py
Sie können die Argumente --server_port
, --share
und --server_name
entsprechend Ihren Anforderungen angeben!
Wir verwenden Habitat, ScanNet++, ScanNet, ArkitScenes, Co3D und BlendedMVS, um unser Modell zu trainieren. Bitte beziehen Sie sich auf data_preprocess.md.
Bitte verwenden Sie den folgenden Befehl, um unser Modell zu trainieren:
torchrun --nproc_per_node 8 train.py --batch_size 4
Bitte verwenden Sie den folgenden Befehl, um unser Modell auszuwerten:
python eval.py
Unser Code, unsere Datenvorverarbeitungspipeline und unsere Auswertungsskripte basieren auf mehreren fantastischen Repositorys:
DUSt3R
SplaTAM
NeRFStudio
MVSNet
SCHÖNER SLAM
NeuralRGBD
SimpleRecon
Wir danken den Autoren für die Veröffentlichung ihres Codes!
Die hier vorgestellte Forschung wurde durch einen gesponserten Forschungspreis von Cisco Research und dem UCL Center for Doctoral Training in Foundational AI unter der UKRI-Fördernummer EP/S021566/1 unterstützt. Dieses Projekt nutzte die Zeit der Tier-2-HPC-Anlage JADE2, finanziert von EPSRC (EP/T022205/1).
Wenn Sie unseren Code oder unser Papier für Ihre Recherche nützlich finden, denken Sie bitte darüber nach, Folgendes zu zitieren:
@article{wang20243d, title={3D Reconstruction with Spatial Memory}, author={Wang, Hengyi and Agapito, Lourdes}, journal={arXiv preprint arXiv:2408.16061}, year={2024} }