Ubuntu复现NeuS(用体绘制学习神经隐式曲面用于多视图重建 )——NeRF应用:表面重建

目录

一、系统配置

二、安装

可能会遇到的问题:

1.pytorch安装报错

 2.缺少安装依赖项

三、数据集文件夹设置

1.数据集链接

2.数据集组织

3.以dtu_scan24为例

四、训练(以dtu_scan24为例)

 1.无掩码训练

2.有掩码训练

3.从训练模型中提取表面(有掩码)

4. 视图插值(有掩码)

五、复现结果

1.无掩码训练得到的网格优化(60万次)

2. 有掩码训练得到的网格优化(30万次)

3.预训练有掩码监督训练得到的网格优化(30万次)

4. 渲染得到的视频(有掩码监督)


参考:https://github.com/Totoro97/NeuS

一、系统配置

1. 操作系统:ubuntu20.04

2. GPU:Nvidia RTX3090

3. CUDA:11.3 

4. python3.8.0

5. torch==1.8.0

6. opencv_python==4.5.2.52

7. trimesh==3.9.8

8. numpy==1.19.2

9. pyhocon==0.3.57

10. icecream==2.1.0

11. tqdm==4.50.2

12. scipy==1.7.0

13. PyMCube==0.1.2

二、安装

git clone https://github.com/Totoro97/NeuS.git
cd NeuS
pip install -r requirements.txt

按照以上代码在终端中运行就可以下载此项目的软件包并且完成conda环境的配置。

可能会遇到的问题:

1.pytorch安装报错

我电脑安装的cuda是11.3的,但是配置文件里面的pytorch是1.8版本的,我在pytorch官网上没有找到cuda11.3对应的pytoch==1.8版本的,如果直接安装pytorch1.8版本的话训练时会报错使用不了GPU加速,因此我安装cuda11.1版本的pytorch,可以进行训练,以下是安装指令。

pip install torch==1.8.0+cu111 -f https://download.pytorch.org/whl/cu111/torch_stable.html

 2.缺少安装依赖项

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
tensorboard 2.13.0 requires protobuf>=3.19.6, which is not installed.
tensorboard 2.13.0 requires requests<3,>=2.21.0, which is not installed.
google-auth 2.18.0 requires urllib3<2.0, which is not installed.
pandas 2.0.1 requires numpy>=1.20.3; python_version < "3.10", but you have numpy 1.19.2 which is incompatible.

我是新创建的NeuS环境,所以会遇到一些依赖项没有安装,按照它报错的提示把这些依赖项安装就可以了。

三、数据集文件夹设置

1.数据集链接

https://drive.google.com/drive/folders/1Nlzejs4mfPuJYORLbDEUDWlc9IZIbU0C

2.数据集组织

<case_name>
|-- cameras_xxx.npz    # camera parameters
|-- image
    |-- 000.png        # target image for each view
    |-- 001.png
    ...
|-- mask
    |-- 000.png        # target mask each view (For unmasked setting, set all pixels as 255)
    |-- 001.png
    ...

3.以dtu_scan24为例

我复现实验的数据集:NeuS复现的一个DTU数据集

NeuS
 |
 | public_data
 |   | dtu_scan24
 |   |   |-- cameras_large.npz
 |   |   |-- cameras_sphere.npz 
 |   |   |-- image
 |   |      |-- 000.png        
 |   |      |-- 001.png
 |   |      ...
 |   |   |-- mask
 |   |      |-- 000.png        
 |   |      |-- 001.png
 |   |      ...

在NeuS文件夹里面创建public_data文件夹,然后把dtu_scan24文件夹放进去数据集的放置就可以了。

四、训练(以dtu_scan24为例)

 1.无掩码训练

python exp_runner.py --mode train --conf ./confs/womask.conf --case dtu_scan24

2.有掩码训练

python exp_runner.py --mode train --conf ./confs/wmask.conf --case dtu_scan24

3.从训练模型中提取表面(有掩码)

python exp_runner.py --mode validate_mesh --conf ./confs/wmask.conf --case dtu_scan24 --is_continue

4. 视图插值(有掩码)

python exp_runner.py --mode interpolate_0_1 --conf ./confs/wmask.conf --case dtu_scan241 --is_continue 

五、复现结果

1.无掩码训练得到的网格优化(60万次)

2. 有掩码训练得到的网格优化(30万次)

3.预训练有掩码监督训练得到的网格优化(30万次)

4. 渲染得到的视频(有掩码监督)

NeuS render

ps:如果使用无掩码监督的权重渲染视频的话得不到物体的模型哦,打开是一个非常模糊的景象。总之复现出来的结果与原论文上面的结果差距是非常大的,都是训练30万次,可是结果是很差。在rtx3090上训练有掩码监督的话需要大概7个小时,没有掩码的话大概需要9个小时。总之NeuS 主要的关注点即是几何重建,往往能得到相比之前方法更优秀的代理几何结果,最大贡献就在于将体渲染和 SDF 有机结合,二者建立联系,共同优化。

猜你喜欢

转载自blog.csdn.net/weixin_59961223/article/details/131215651