【三维重建】【深度学习】NeuS总览

【三维重建】【深度学习】NeuS总览NeuS 是一种新的神经表面重建方法 利用有符号距离函数 SDF 和创新的体绘制技术 从 2D 图像中实现精确的 3D 重建 尤其适用于复杂结构和自遮挡的场景

大家好,欢迎来到IT知识分享网。

【三维重建】【深度学习】NeuS总览



前言

博主将各功能模块的代码在不同的博文中进行了详细的解析,点击【win10下参考教程】,博文的目录链接放在前言部分。


参数设置

在 exp_runner.py的main函数下,定义了运行neus所需要的参数。

parser = argparse.ArgumentParser() # 选择读取的配置文件 parser.add_argument('--conf', type=str, default='./confs/base.conf') # 选择代码运行的模式(训练、精化或者渲染) parser.add_argument('--mode', type=str, default='train') # 设置marching_cubes的阈值 parser.add_argument('--mcube_threshold', type=float, default=0.0) # 是否在已有的最新模型基础上进行下一步操作 parser.add_argument('--is_continue', default=False, action="store_true") # 设置gpu的序号 parser.add_argument('--gpu', type=int, default=0) # 设置要处理数据的文件名(相对路径) parser.add_argument('--case', type=str, default='') args = parser.parse_args() 

数据管理(Dataset)

在models/dataset.py文件内定义的一个数据管理类,用于加载图像数据集以及其对应的mask数据集和相机投影矩阵等,并能够根据NeuS具体的任务需求产生射线rays,用于后续进行采样。

  • gen_random_rays_at: 网格面 ( H , W ) \left( {H,W} \right) (H,W)上任意选择 b b b个网格 ( u i , v j ) \left( {
    {u_i},{v_j}} \right)
    (ui,vj)
    ,并根据相机内参、外参等计算出对应的 b b b个射线ray在世界坐标系下的向量 ( x i , y i , z i ) \left( {
    {x_i},{y_i},{z_i}} \right)
    (xi,yi,zi)
    这个过程发生在训练过程中。
    【三维重建】【深度学习】NeuS总览

网格面 ( H , W ) \left( {H,W} \right) (H,W)和图像数据集的分辨率 ( H , W ) \left( {H,W} \right) (H,W)大小一致,上述图中蓝色小网格是代表被随机抽中的网格并产生射线ray。

  • gen_rays_at: 网格面 ( H , W ) \left( {H,W} \right) (H,W)上所有网格 ( u i , v j ) \left( {
    {u_i},{v_j}} \right)
    (ui,vj)
    ,根据相机内参、外参等计算出对应的射线ray在世界坐标系下的向量 ( x i , y i , z i ) \left( {
    {x_i},{y_i},{z_i}} \right)
    (xi,yi,zi)
    这个过程发生在训练阶段的周期性测试中。
    【三维重建】【深度学习】NeuS总览

目的是简单测试下渲染效果,用某个相机位姿对应的原始图片与neus在该相机位姿下渲染的图片做对比。

  • gen_rays_between: 通过俩个相机 i d x 0 idx0 idx0 i d x 1 idx1 idx1的位姿生成介于俩相机之间的相机 i d x r idxr idxr的新位姿,网格面 ( H , W ) \left( {H,W} \right) (H,W)上所有网格 ( u i , v j ) \left( {
    {u_i},{v_j}} \right)
    (ui,vj)
    ,根据相机 i d x r idxr idxr内参、外参等计算出对应的射线ray在世界坐标系下的向量 ( x i , y i , z i ) \left( {
    {x_i},{y_i},{z_i}} \right)
    (xi,yi,zi)
    这个过程发生在应用阶段。
    【三维重建】【深度学习】NeuS总览

idx0和idx1是真实的相机位姿,idxr并不真实存在,而是计算而来的。其实这个目的是为了检验neus在新的相机位姿下的效果,个人觉得新的相机位姿也可以人工设定,并不一定是采用这种方式。

NeuS网络

  • NeRF: 训练物体以外背景的颜色在这里插入图片描述
  • SDFNetwork: 训练目标物体的sdf值【三维重建】【深度学习】NeuS总览
  • RenderingNetwork: 训练目标物体的RGB值
    在这里插入图片描述
    详细网络结构解析博主会在后续的博文中进行说明。


总结

尽可能简单、详细的介绍NeuS工程的总体预览。后续会根据自己学到的知识结合个人理解讲解NeuS的原理和代码。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117105.html

(0)
上一篇 2025-11-23 19:00
下一篇 2025-11-23 19:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信