Reconstrução 3D com Memória Espacial
Hengyi Wang, Lourdes Agapito
arXiv 2024
[2024-10-25] Adicionar suporte para Nerfstudio
[2024-10-18] Adicionar estimativa de parâmetros da câmera
[2024-09-30] @hugoycj adiciona uma demonstração gradio
[2024-09-20] Instruções para conjuntos de dados data_preprocess.md
[2024-09-11] Código para Spann3R
Clonar Spann3R
git clone https://github.com/HengyiWang/spann3r.git cd spann3r
Criar ambiente 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
Compilar kernels cuda para RoPE
cd croco/models/curope/ python setup.py build_ext --inplace cd ../../../
Baixe o ponto de verificação DUST3R
mkdir checkpoints cd checkpoints # Download DUSt3R checkpoints wget https://download.europe.naverlabs.com/ComputerVision/DUSt3R/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth
Baixe nosso checkpoint e coloque-o em ./checkpoints
Baixe os dados de exemplo (2 cenas de map-free-reloc) e descompacte-os como ./examples
Execute a demonstração:
python demo.py --demo_path ./examples/s00567 --kf_every 10 --vis --vis_cam
Para visualização --vis
, você terá uma janela para ajustar a visualização de renderização. Depois de encontrar a visualização a ser renderizada, clique space key
e feche a janela. O código fará então a renderização da reconstrução 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
Observe que aqui você pode usar --save_ori
para salvar os intrínsecos dimensionados em transform.json
para treinar NeRF/3D Gaussianos com imagens originais.'
Também disponibilizamos uma interface Gradio para uma melhor experiência, bastando rodar por:
# Para usuários de Linux e Windows (e macOS com Intel ??) python app.py
Você pode especificar os argumentos --server_port
, --share
, --server_name
para satisfazer suas necessidades!
Usamos Habitat, ScanNet++, ScanNet, ArkitScenes, Co3D e BlendedMVS para treinar nosso modelo. Consulte data_preprocess.md.
Use o seguinte comando para treinar nosso modelo:
torchrun --nproc_per_node 8 train.py --batch_size 4
Use o seguinte comando para avaliar nosso modelo:
python eval.py
Nosso código, pipeline de pré-processamento de dados e scripts de avaliação são baseados em vários repositórios incríveis:
DUST3R
SplaTAM
NeRFStudio
MVSNet
NICE-SLAM
NeuralRGBD
SimpleRecon
Agradecemos aos autores por liberarem seu código!
A pesquisa aqui apresentada foi apoiada por um prêmio de pesquisa patrocinado pela Cisco Research e pelo UCL Center for Doctoral Training in Foundational AI sob o número de concessão UKRI EP/S021566/1. Este projeto aproveitou o tempo da instalação HPC Tier 2 JADE2, financiada pelo EPSRC (EP/T022205/1).
Se você achar nosso código ou artigo útil para sua pesquisa, considere citar:
@article{wang20243d, title={3D Reconstruction with Spatial Memory}, author={Wang, Hengyi and Agapito, Lourdes}, journal={arXiv preprint arXiv:2408.16061}, year={2024} }