Nerfstudio使用教程

本文详细介绍了如何使用nerfstudio训练nerf模型,包括数据预处理、colmap数据生成、nerfacto训练参数设置、渲染深度图和RGB图等步骤,适合想要深入了解nerf技术的读者。
摘要由CSDN通过智能技术生成

nerfstudio使用教程,nerfstudio官网。本教程讲述如何使用自己的数据训练nerf模型,以及生成nerf的深度图以及rgb图过程。关于nerfstudio内容这里不再赘述,这里主要讲述一些参数和命令。需要准备条件(具体可以看其他博客或者我之前写过的这篇博客):

1、配置好nerfstudio 环境

2、安装好colmap环境

3、准备自己的数据集(这里我以fern数据集为例)

一、使用colmap生成数据集

1.数据集(fern)

这里的数据集是nerf论文中的数据集一样,20张图片来进行测试

2.生成colmap数据

准备好图片数据之后可以运行下面代码colmap。

ns-process-data {video,images,polycam,record3d} --data {DATA_PATH} --output-dir {PROCESSED_DATA_DIR}

#例子 {DATA_PATH}为你图片的文件夹路径  {PROCESSED_DATA_DIR}是你生成的路径
ns-process-data images --data images/ --output-dir colmap/

出现下面的结果说明运行成功:

生成的结果如下图所示:

  • colmap文件夹:会记录colmap生成的一些数据
  • image:会生成四个文件夹,image_x,表示缩放的图片
  • .ply,生成的点云文件,可以导入cloudcompare中查看
  • transforms.json:会生成相机内参数(cx、cy、fx、fy)和相机外参数矩阵(R,T)

3.命令中一些参数说明

(1)不仅图片数据可以colmap,可以传入视频或者{polycam,metashape,realitycapture,record3d,odm,aria}的数据,具体操作可以通过以下命令查看:

#查看可以处理的数据有哪些
ns-process-data -h

(2)对图片处理可以使用以下命令查看(其他也类似):

ns-process-data images -h

(3)这里对images的部分命令进行解释:

命令        作用
--data输入数据路径(必须要有)

--output-dir

输出的数据路径(必须要有)
--num-downscales

下采样的次数(默认是3)缩放图像的次数。每次缩放 2 倍。例如,值为 3 时,

图像的缩放比例分别为 2x、4x 和 8x

 --skip-colmap

--no-skip-colmap

跳过colmap,如果自己用colmap生成了数据,那么可以添加命令 --skip-colmap

--skip-image-processing

--no-skip-image-processing 

如果为 "True",则跳过图像的复制和缩放,仅在可能和启用的情况下运行 COLMAP。

这里选择了一些可能用到的命令,其他可以看具体的文档,特征提取、特征匹配的一些方法都有具体的操作。

二、使用nerfstudio训练数据

1、对colmap生成的数据训练

ns-train nerfacto --data {PROCESSED_DATA_DIR} --output-dir {PATH}
# {PROCESSED_DATA_DIR}这里是你colmap生成的路径位置{PATH}是你输出的路径

#例子
ns-train nerfacto --data colmap --output-dir train

如下训练的过程,可以通过端口查看。

训练的过程,可以在右边调整一些参数或者查看深度图之类的。

训练完成:

会生成以下目录(包含训练的一些参数还有transforms矩阵):

其中最重要的就是config.yml文件,之后的命令都会涉及到这个文件。

2、设置camera_path

在训练时设置camera_path,生成深度图和rgb图的时候会根据相机路径来生成相应的图。具体操作:

点击render,然后Add Keyframe添加相机路径,可以添加具体输入的图片,也可以添加一些选定视角的frame。如图是我选择的路径,这个步骤详细可以看nerfstudio官方视频

选定后,然后点击下面的Generate Command可以在colmap的文件夹中看到生成的camera的json文件。如图所示:

3、参数说明

#可以通过这个命令查看nerfacto训练参数,一般其他参数都使用默认的就可以了
ns-train nerfacto -h
#也可以使用其他方法来渲染,如下命令可以查看。

ns-trian -h
#其他方法也没有尝试,感兴趣的可以尝试一下。

三、可视化过程

1、可以通过viewer查看生成的结果

ns-viewer --load-config {outputs/.../config.yml}
#--load-config PATH
#Path 是生成的config.yml
#例子
ns-viewer --load-config train/colmap/nerfacto/2024-04-22_162813/config.yml 
 
#可以通过以下命令查看帮助
ns-viewer -h

可以查看渲染的结果,如图所示:

也可以在右边进行操作,之前要是没有选择camera_path,也可以在这里选择。Export可以导出生成的点云或者mesh的命令。下面会继续介绍。

四、导出点云

 export命令查看帮助

ns-export -h

1、pointcloud

命令查看帮助

ns-export pointcloud -h
#必须要的参数
--load-config PATH  config.yaml文件
--output-dir PATH  输出路径
#例子
ns-export pointcloud --load-config outputs/fern/nerfacto/2024-04-18_100522/config.yml --output-dir exports/pcd/ --num-points 1000000 --remove-outliers True --normal-method open3d --use_bounding_box False --save-world-frame False --obb_center 0.0000000000 0.0000000000 0.0000000000 --obb_rotation 0.0000000000 0.0000000000 0.0000000000 --obb_scale 1.0000000000 1.0000000000 1.0000000000

2、poisson:

#查看帮助
ns-export poission -h
#例子
ns-export poisson --load-config train/colmap/nerfacto/2024-04-22_162813/config.yml --output-dir exports/mesh/ --t
arget-num-faces 50000 --num-pixels-per-side 2048 --num-points 1000000 --remove-outliers True --normal-method open3d --use_bounding_box False --obb_center 0.0000000000 0.000
0000000 0.0000000000 --obb_rotation 0.0000000000 0.0000000000 0.0000000000 --obb_scale 1.0000000000 1.0000000000 1.0000000000

3、 cameras:

生成训练后的图片的位姿参数(R,T)

#查看帮助
ns-export cameras -h

#例子
ns-export cameras --load-config train/colmap/nerfacto/2024-04-22_162813/config.yml  --output-dir exports/camjson

可以到具体路径去查看

五、渲染出depth和rgb图

render命令查看帮助

ns-render -h

1、render camera:

查看帮助:

ns-render camera-path -h

深度图例子:

ns-render camera-path --load-config train/colmap/nerfacto/2024-04-22_162813/config.yml --output-path rgbanddepth/
 --rendered-output-names depth --depth-near-plane 0.5 --depth-far-plane 5.0 --output-format images --colormap-options.colormap gray --camera-path-filename colmap/camera
_paths/2024-04-22-16-28-30.json 

对上面参数说明:

 --rendered-output-names设置渲染的是深度图还是rgb图,可选depth ,rgb
--depth-near-plane近平面
--depth-far-plane远平面
--output-format

输出的格式,可选image,video                        

--colormap-options.colormap深度图格式 可选gray
--camera-path-filenamecamera_path,在之前训练的时候提到的camera_path

设置--rendered-output-names的depth和rgb,生成相应的深度图和rgb图。

关于深度图的计算公式:

(1)深度值的范围:首先确定深度值的实际范围,例如,由depth-near-planedepth-far-plane参数指定。提供的例子中,这些值分别是0.5和5.0。

(2)归一化:将计算得到的每个深度值归一化到0-1的范围。这通过以下公式完成: 

(3)缩放:将归一化的深度值缩放到0-255的范围,以便可以将其用作图像中的像素强度值: 

(4)四舍五入:通常,pixel_value会四舍五入到最近的整数,以确保它在0-255的整数值范围内。

(5)颜色映射:在某些情况下,可能还会应用颜色映射函数,将单通道的灰度图像转换为具有不同颜色的深度图,以便于可视化不同的深度层次。

rgb图和深度图训练的结果:

PS:如果想知道相机内参,可以在nerfstudio.cameras.camera_paths.py中修改代码,如图,即可打印渲染后的内参。

2、render interpolate

ns-render interpolate  --load-config train/colmap/nerfacto/2024-04-22_162813/config.yml  --output-path renders/out_trian_depth --output-format images   --colormap-options.colormap gray --rendered-output-names depth --depth-near-plane 0.5 --depth-far-plane 5.0

参数的内容和上面一样,这里不再赘述,这里不用加camera_path

3、render spiral

 这个可能不是很好,官方文档中是这么说的Render a spiral trajectory (often not great).

六、总结

琢磨这个有一段时间了,希望这些对你有帮助,如果你觉得写的不错,点个赞吧。

对很多了解的还不太深刻,如果有任何见解,欢迎评论讨论。谢谢大家。

官网文档写的很详细,大家可以去看一下。

  • 19
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
nerfstudio是一个简化创建、训练和可视化NeRF的端到端过程的API。你可以从nerfstudio的GitHub仓库中获取源代码,地址为https://github.com/nerfstudio-project/nerfstudio。该库通过模块化每个组件来支持可解释的NeRF实现,并集成了多个NeRF扩展的实现,持续更新,带有界面,使用Apache-2.0许可证。\[1\] 如果你想使用nerfstudio,你可以按照以下步骤进行配置和使用: 1. 首先,从https://data.nerf.studio/nerfstudio/下载person测试集,并解压缩。 2. 将解压后的测试集拷贝到nerfstudio的data/nerfstudio目录下。如果该目录不存在,你需要自己创建它。\[2\] 3. 在Windows上配置nerfstudio,你需要安装vs2019和cuda 11.6。 4. 使用conda创建一个名为"nerfstudio"的虚拟环境,并激活该环境。你可以使用以下命令来完成这一步骤: ``` conda create --name nerfstudio -y python=3.8 conda activate nerfstudio python -m pip install --upgrade pip ``` 这将创建一个名为"nerfstudio"的虚拟环境,并安装必要的Python依赖。\[3\] 完成上述步骤后,你就可以开始使用nerfstudio来创建、训练和可视化NeRF模型了。希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [nerfstudio介绍及在windows上的配置、使用](https://blog.csdn.net/fengbingchun/article/details/130307992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值