目录
复现参考链接:https://github.com/lioryariv/volsdf
一、环境安装
git clone https://github.com/lioryariv/volsdf #下载项目
cd volsdf #进入项目文件夹
#利用miniconda进行项目环境的配置并激活项目环境
conda env create -f environment.yml
conda activate volsdf
注:官方给的环境配置是cuda10.2,pytorch1.10.0版本的,如果自己电脑安装的不是cuda10.2,可以去pytorch官网下载适配的版本,以我的cuda11.3和pytorch1.12.0为例,在进行上述操作后直接重新下载pytorch即可。
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
二、数据集下载
多视图表面重建模型应用于来自两个数据集的真实 2D 图像:DTU和BlendedMVS。可以使用以下方式下载本文中评估的选定扫描数据:
bash data/download_data.sh
三、运行实验
1、多视图3d重建
cd ./code
python training/exp_runner.py --conf ./confs/dtu.conf --scan_id SCAN_ID
其中 SCAN_ID 是要重建的场景的 ID。
要在具有更复杂背景的 BlendedMVS 数据集上运行,请使用--conf ./confs/bmvs.conf
示例:以dtu数据集中的scan24场景为例
cd ./code
python training/exp_runner.py --conf ./confs/dtu.conf --scan_id 24
normal_2000 | surface_2000 |
ps:因为在训练的时候突然停电了,所以只有跑了2000轮,大概有了七八个小时,表面重建的效果感觉很一般,但是后面进行评估的时候,网格优化后呈现的结果还是比较不错的,如果再训练的久一点效果会更好,vol的训练是手动停止的,没有规定训练多少个轮次。
2、评估
要生成网格表面和渲染,请运行:
cd ./code
python evaluation/eval.py --conf ./confs/dtu.conf --scan_id SCAN_ID --checkpoint CHECKPOINT [--eval_rendering]
其中 CHECKPOINT 是您想要评估的轮次,如果想获取最近的轮次,则为“latest”。开启--eval_rendering
将进一步产生和评估训练图像重建的 PSNR。
示例:以dtu数据集中的scan24场景为例
cd ./code
python evaluation/eval.py --conf ./confs/dtu.conf --scan_id 24 --checkpoint latest --eval_rendering
evals_mesh | evals_rendering_2000 |
3、总结
NeRF,将神经隐式函数与体积渲染相结合,能够达到极佳的渲染效果。然而在场景几何体形状的表示上有所欠缺。于是,提出Volume Rendering of Neural Implicit Surfaces(VolSDF):神经隐式曲面的体渲染。是一个神经隐式表面体积渲染框架,将体积密度建模为几何形状的函数来实现表面重建。具体可参考:VolSDF