Reconstrucción 3D con Memoria Espacial
Hengyi Wang, Lourdes Agapito
arXiv 2024
[2024-10-25] Agregar soporte para Nerfstudio
[2024-10-18] Agregar estimación de parámetros de cámara
[2024-09-30] @hugoycj agrega una demostración de gradio
[2024-09-20] Instrucciones para conjuntos de datos data_preprocess.md
[2024-09-11] Código para Spann3R
Clonar Spann3R
git clone https://github.com/HengyiWang/spann3r.git cd spann3r
Crear entorno 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
Compile kernels cuda para RoPE
cd croco/models/curope/ python setup.py build_ext --inplace cd ../../../
Descarga el punto de control DUSt3R
mkdir checkpoints cd checkpoints # Download DUSt3R checkpoints wget https://download.europe.naverlabs.com/ComputerVision/DUSt3R/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth
Descargue nuestro punto de control y colóquelo en ./checkpoints
Descargue los datos de ejemplo (2 escenas de map-free-reloc) y descomprímalos como ./examples
Ejecutar demostración:
python demo.py --demo_path ./examples/s00567 --kf_every 10 --vis --vis_cam
Para la visualización --vis
, le dará una ventana para ajustar la vista de renderizado. Una vez que encuentre la vista para renderizar, haga clic en space key
y cierre la ventana. Luego, el código realizará la representación de la reconstrucción incremental.
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
Tenga en cuenta que aquí puede usar --save_ori
para guardar los intrínsecos escalados en transform.json
para entrenar gaussianos NeRF/3D con imágenes originales.'
También proporcionamos una interfaz Gradio para una mejor experiencia, simplemente ejecutada por:
# Para usuarios de Linux y Windows (¿y macOS con Intel??)python app.py
¡Puede especificar los argumentos --server_port
, --share
, --server_name
para satisfacer sus necesidades!
Usamos Habitat, ScanNet++, ScanNet, ArkitScenes, Co3D y BlendedMVS para entrenar nuestro modelo. Consulte data_preprocess.md.
Utilice el siguiente comando para entrenar nuestro modelo:
torchrun --nproc_per_node 8 train.py --batch_size 4
Utilice el siguiente comando para evaluar nuestro modelo:
python eval.py
Nuestro código, proceso de preprocesamiento de datos y scripts de evaluación se basan en varios repositorios increíbles:
DUSt3R
SplaTAM
NeRFStudio
MVSNet
AGRADABLE SLAM
NeuralRGBD
Reconstrucción simple
¡Agradecemos a los autores por publicar su código!
La investigación presentada aquí ha sido respaldada por un premio de investigación patrocinado por Cisco Research y el Centro de Formación Doctoral en IA Fundacional de la UCL bajo el número de subvención EP/S021566/1 de UKRI. Este proyecto aprovechó el tiempo de la instalación de HPC de nivel 2 JADE2, financiada por EPSRC (EP/T022205/1).
Si encuentra nuestro código o artículo útil para su investigación, considere citar:
@article{wang20243d, title={3D Reconstruction with Spatial Memory}, author={Wang, Hengyi and Agapito, Lourdes}, journal={arXiv preprint arXiv:2408.16061}, year={2024} }