

SDFSTUDIO是基於Awesome Nerfstudio項目頂部的神經隱式表面重建的統一且模塊化的框架。我們提供了三種主要的隱式表面重建方法的統一實施:Unisurf,volsdf和Neus。 SDFSTUDIO還支持各種場景表示,例如MLP,Tri-Plane和Multi-Res。具有特徵網格和多點採樣策略,例如Unisurf中的表面引導採樣,以及來自NeuralReconw的Voxel-Surface指導採樣。它進一步整合了該領域的最新進展,例如單眼線索(MONOSDF),幾何正規化(UNISURF)和多視圖一致性(GEO-NEUS)。多虧了統一和模塊化的實現,SDFSTUDIO使您可以輕鬆地將想法從一種方法傳輸到另一種方法。例如,Mono-Neus將MonoSDF的想法應用於NEU,而Geo-Volsdf將其從地理Neus應用於Volsdf。
2023.06.16 :添加bakedangelo ,將BakedSDF與數值彈簧和Neuralangelo的逐步訓練相結合。
2023.06.16 :添加neus-facto-angelo ,將neus-facto與數值彈簧結合在一起,並逐步訓練Neuralangelo 。
2023.06.16 :支持Neuralangelo。
2023.03.12 :支持Bakedsdf。
2022.12.28 :支持神經RGB-D表面重建。
CUDA必須安裝在系統上。該庫已通過版本11.3進行了測試。您可以在此處找到有關安裝CUDA的更多信息。
sdfstudio需要python >= 3.7 。我們建議使用Conda來管理依賴關係。在進行之前,請確保安裝CONDA。
conda create --name sdfstudio -y python=3.8
conda activate sdfstudio
python -m pip install --upgrade pip安裝帶有CUDA的Pytorch(此存儲庫已用CUDA 11.3進行了測試)和Tiny-Cuda-nn
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install git+https://github.com/NVlabs/tiny-cuda-nn/ # subdirectory=bindings/torchgit clone https://github.com/autonomousvision/sdfstudio.git
cd sdfstudio
pip install --upgrade pip setuptools
pip install -e .
# install tab completion
ns-install-cli以下將訓練Neus-Facto模型,
# Download some test data: you might need to install curl if your system don't have that
ns-download-data sdfstudio
# Train model on the dtu dataset scan65
ns-train neus-facto --pipeline.model.sdf-field.inside-outside False --vis viewer --experiment-name neus-facto-dtu65 sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65
# Or you could also train model on the Replica dataset room0 with monocular priors
ns-train neus-facto --pipeline.model.sdf-field.inside-outside True --pipeline.model.mono-depth-loss-mult 0.1 --pipeline.model.mono-normal-loss-mult 0.05 --vis viewer --experiment-name neus-facto-replica1 sdfstudio-data --data data/sdfstudio-demo-data/replica-room0 --include_mono_prior True如果一切正常,您應該看到以下培訓進度:

導航到終端末尾的鏈接將加載WebViewer(由Nerfstudio開發)。如果您在遠程計算機上運行,則需要向轉發Websocket端口(默認為7007)。使用RTX3090 GPU,20K迭代需要約15分鐘,但是在WebViewer中進行了2k迭代後,您已經可以看到合理的重建結果。

也可以通過運行來加載驗證的模型
ns-train neus-facto --trainer.load-dir {outputs/neus-facto-dtu65/neus-facto/XXX/sdfstudio_models} sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65 這將自動恢復培訓。如果您不想恢復培訓,請在培訓命令中添加--viewer.start-train False 。請注意,命令的順序很重要,需要在模型子命令之後進行dataparser子命令。
一旦擁有訓練有素的型號,您就可以導出網格並渲染網格。
ns-extract-mesh --load-config outputs/neus-facto-dtu65/neus-facto/XXX/config.yml --output-path meshes/neus-facto-dtu65.ply ns-render-mesh --meshfile meshes/neus-facto-dtu65.ply --traj interpolate --output-path renders/neus-facto-dtu65.mp4 sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65
如果一切正常,您將獲得以下視頻。
首先,我們必須為相機創建一條路徑。這可以在“渲染”選項卡下的觀眾中完成。將3D視圖定向到您希望啟動視頻的位置,然後按“添加相機”。這將設置第一個相機鑰匙框。繼續添加其他相機以創建相機路徑的新觀點。我們提供其他參數,以進一步完善您的相機路徑。一旦滿足,請按“渲染”,該“渲染”將顯示一個模式,其中包含渲染視頻所需的命令。殺死培訓工作(如果您有很多計算,則創建一個新的終端),並命令生成視頻。
查看所有視頻導出選項運行:
ns-render --help我們提供除Neus-Facto以外的許多其他模型,請參閱文檔。例如,如果要訓練原始的NEUS模型,請使用以下命令:
ns-train neus --pipeline.model.sdf-field.inside-outside False sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65對於包含型號的完整列表,運行ns-train --help 。請參閱文檔以獲取每種方法的更詳細說明。
每個模型都包含許多可以更改的參數,在此處列出了太多參數。使用--help命令查看配置選項的完整列表。
請注意,參數順序很重要!例如,您無法設置--machine.num-gpus之後--data參數
ns-train neus-facto --help
Nerfstudio支持三種不同的方法,使用查看器,張板以及重量和偏見來跟踪訓練進度。這些可視化工具也可以在SDFSTUDIO中使用。您可以指定通過附加的可視化器--vis {viewer, tensorboard, wandb}到訓練命令。請注意,一次只能使用一個。此外,查看器僅適用於快速的方法(即NeuS-facto和NeuS-acc ),對於諸如NeuS-facto-bigmlp之類的較慢的方法,請使用其他日誌記錄器。
如果您想使用自定義數據集,請參閱數據集和數據格式文檔。

如果您使用此庫或發現對您的研究有用的文檔,請考慮引用:
@misc { Yu2022SDFStudio ,
author = { Yu, Zehao and Chen, Anpei and Antic, Bozidar and Peng, Songyou and Bhattacharyya, Apratim
and Niemeyer, Michael and Tang, Siyu and Sattler, Torsten and Geiger, Andreas } ,
title = { SDFStudio: A Unified Framework for Surface Reconstruction } ,
year = { 2022 } ,
url = { https://github.com/autonomousvision/sdfstudio } ,
}