Reconstruction 3D avec mémoire spatiale
Hengyi Wang, Lourdes Agapito
arXiv 2024
[2024-10-25] Ajout de la prise en charge de Nerfstudio
[2024-10-18] Ajouter une estimation des paramètres de la caméra
[2024-09-30] @hugoycj ajoute une démo gradio
[2024-09-20] Instructions pour les ensembles de données data_preprocess.md
[2024-09-11] Code pour Spann3R
Cloner Spann3R
git clone https://github.com/HengyiWang/spann3r.git cd spann3r
Créer un environnement conda
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
Compiler les noyaux cuda pour RoPE
cd croco/models/curope/ python setup.py build_ext --inplace cd ../../../
Téléchargez le point de contrôle DUSt3R
mkdir checkpoints cd checkpoints # Download DUSt3R checkpoints wget https://download.europe.naverlabs.com/ComputerVision/DUSt3R/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth
Téléchargez notre point de contrôle et placez-le sous ./checkpoints
Téléchargez les exemples de données (2 scènes de map-free-reloc) et décompressez-les en tant que ./examples
Exécuter la démo :
python demo.py --demo_path ./examples/s00567 --kf_every 10 --vis --vis_cam
Pour la visualisation --vis
, cela vous donnera une fenêtre pour ajuster la vue du rendu. Une fois que vous avez trouvé la vue à restituer, cliquez sur space key
et fermez la fenêtre. Le code effectuera ensuite le rendu de la reconstruction incrémentale.
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
Notez qu'ici, vous pouvez utiliser --save_ori
pour enregistrer les éléments intrinsèques mis à l'échelle dans transform.json
afin d'entraîner les gaussiennes NeRF/3D avec des images originales.'
Nous fournissons également une interface Gradio pour une meilleure expérience, simplement gérée par :
# Pour les utilisateurs Linux et Windows (et macOS avec Intel ??)python app.py
Vous pouvez spécifier les arguments --server_port
, --share
, --server_name
pour satisfaire vos besoins !
Nous utilisons Habitat, ScanNet++, ScanNet, ArkitScenes, Co3D et BlendedMVS pour entraîner notre modèle. Veuillez vous référer à data_preprocess.md.
Veuillez utiliser la commande suivante pour entraîner notre modèle :
torchrun --nproc_per_node 8 train.py --batch_size 4
Veuillez utiliser la commande suivante pour évaluer notre modèle :
python eval.py
Notre code, notre pipeline de prétraitement des données et nos scripts d'évaluation sont basés sur plusieurs référentiels impressionnants :
POUSSIÈRE3R
SplaTAM
NeRFStudio
MVSNet
NICE-SLAM
NeuralRGBD
SimpleRecon
Nous remercions les auteurs d'avoir publié leur code !
La recherche présentée ici a été soutenue par une bourse de recherche sponsorisée par Cisco Research et le Centre UCL de formation doctorale en IA fondamentale sous le numéro de subvention UKRI EP/S021566/1. Ce projet a utilisé du temps sur l'installation HPC de niveau 2 JADE2, financée par EPSRC (EP/T022205/1).
Si vous trouvez notre code ou article utile pour votre recherche, pensez à citer :
@article{wang20243d, title={3D Reconstruction with Spatial Memory}, author={Wang, Hengyi and Agapito, Lourdes}, journal={arXiv preprint arXiv:2408.16061}, year={2024} }