(三维重建学习)NeRFStudio安装win11

参考:

requirements

cuda 11.8(11.5以上)
conda
python 3.8 (>=3.8 )
cmake
visual studio 2019/2022

一、创建环境

anaconda prompt中创建conda环境:

conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
pip install --upgrade pip

二、安装依赖

1.安装pytorch

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

2.安装tiny-cuda-nn

按照官方文档上的方法执行会报错,找了一个教程安装:https://blog.csdn.net/yangyu0515/article/details/131959907#comments_29299437 照着这个教程的【直接下载(推荐)】那里开始安装就可以了。

3.安装nerfstudio

简单的选择:

pip install nerfstudio

或者,如果您想要最新和最好的:

git clone https://github.com/nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

三、训练模型

1.模型准备

方法一 drive.google.com下载:

下载kitchen测试集,解压缩,并将其拷贝到nerfstudio的data/nerfstudio目录下,data/nerfstudio需自己创建;https://drive.google.com/drive/folders/19TV6kdVGcmg3cGZ1bNIUnBBMD-iQjRbG

方法二 ns-download-data:

官网也提供了下载模型的方法:

	# Download some test data:
	ns-download-data nerfstudio --capture-name=poster
	# Train model
	ns-train nerfacto --data data/nerfstudio/poster# Train model
	ns-train nerfacto --data data/nerfstudio/poster`

方法三 自己的数据集:

首先得到自己的照片序列:

  1. 围绕重建物体拍摄一段视频
  2. 在kitchen同级目录下新建一个LILO_STITCH文件夹,将视频放入并在cmd中执行:FFMPEG -i D:\Projects\Nerf\nerfstudio\data\nerfstudio\LILO_STITCH\1.mp4 -qscale:v 1 -qmin 1 -vf fps=5 %04d.jpg 得到照片序列放进\data\nerfstudio\LILO_STITCH\train

回到虚拟环境中执行如下命令生成transforms.json:

 ns-process-data images --data data/nerfstudio/LILO_STITCH/train --output-dir .\data\nerfstudio\LILO_STITCH\ --camera-type perspective --matching-method exhaustive --sfm-tool colmap --crop-factor 0.0 0.0 0.0 0.0 

目录结构如下:
在这里插入图片描述

2.开始训练

执行如下命令进行训练:迭代产生的checkpoint存储在outputs/kitchen/nerfacto目录下

ns-train nerfacto --data data/nerfstudio/kitchen --vis viewer --max-num-iterations 50000

在第一次执行训练命令的时候我报错了:PytorchStreamReader failed reading zip archive: failed finding central ,解决方法如下:我估计是因为之前网络不好啥的导致下载的权重文件有点问题,所以找到 C:\Users\Administrator.cache\torch\hub\checkpoints\alexnet-owt-7be5be79.pth 将其删除。重新执行后问题解决。
在这里插入图片描述
训练进度如下图所示:
在这里插入图片描述
可视化效果:
在这里插入图片描述
用自己的数据集跑出来的效果如下:
训练到10%时:
在这里插入图片描述
训练完成:
在这里插入图片描述

3.用GaussianSplatting训练

在训练的命令里 nerfacto是一个可选参数,表示支持的类型。执行 ns-trian --help 可以查看还有其他可选项,例如我这里想要使用3D Gaussian Splatting再执行 ns-trian gaussian-splatting --help
在这里插入图片描述
在这里插入图片描述
开始训练:

ns-train gaussian-splatting --data .\data\nerfstudio\LILO_STITCH --vis viewer --output-dir /outputs/gaussian_splatting 

代码运行效果:
在这里插入图片描述

四、加载预训练模型

可以加载预训练模型,如下命令所示:这将自动开始继续训练 :

ns-train nerfacto --data data/nerfstudio/kitchen --load-dir outputs/kitchen/nerfacto/2024-01-02_164443/nerfstudio_models

在这里插入图片描述
在这里插入图片描述
可以加载预训练模型进行可视化查看:

ns-viewer --load-config outputs/kitchen/nerfacto/2024-01-02_174829/config.yml

在这里插入图片描述
在这里插入图片描述

每个命令都有很多参数,可以通过–help查看具体支持哪些参数及参数的用处,如:

ns-render --help
ns-train --help
ns-train nerfacto --help

五、导出结果

获得 NeRF 模型后,您可以渲染视频或导出点云。

1.渲染视频

在这里插入图片描述
导出方法如图:
在这里插入图片描述
执行代码:

ns-render camera-path --load-config outputs\kitchen\nerfacto\2024-01-02_174829/config.yml --camera-path-filename data\nerfstudio\kitchen/camera_paths/2024-01-02_174829.json --output-path renders/data\nerfstudio\kitchen/2024-01-02_174829.mp4

在这里插入图片描述
渲染视频:

nerfstudio渲染视2024-01-02_174829

2.生成点云

在这里插入图片描述
在可视化web上面我们可以选择导出点云的配置,并复制command进行导出:

ns-export pointcloud --load-config outputs\kitchen\nerfacto\2024-01-02_174829/config.yml --output-dir exports/pcd/ --num-points 1000000 --remove-outliers True --normal-method open3d --use-bounding-box True --bounding-box-min -1 -1 -1 --bounding-box-max 1 1 1

在这里插入图片描述
在这里插入图片描述

3.生成网格

在可视化web上面我们可以选择导出网格的配置,并复制command进行导出:

ns-export poisson --load-config outputs\kitchen\nerfacto\2024-01-02_174829/config.yml --output-dir exports/mesh/ --target-num-faces 50000 --num-pixels-per-side 2048 --normal-method open3d --num-points 1000000 --remove-outliers True --use-bounding-box True --bounding-box-min -1 -1 -1 --bounding-box-max 1 1 1

在这里插入图片描述
在这里插入图片描述
导出后在exports\mesh中有四个文件:
在这里插入图片描述

MTL文件是一种包含材质定义的文件格式,通常用于与3D模型文件一起使用。MTL是英文Material Library的缩写,它存储了模型的材质信息,包括颜色、纹理、光照等属性。

4.对比一下

对比一下ply和mesh里点云的区别:可以看到ply里面是没有面数据的……在这里插入图片描述

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值