当前位置:   article > 正文

【2023.7.19】安装dreamfusion代码和环境_dmtet

dmtet

总结:首先pytorch语法还存在不熟悉的问题,计划先1-2天补齐。目前dream-fusion代码结构主要分为如下几个部分:NeRF、Ray marching、Stable diffusion、Classifier-guidance、SDS-Loss、CLIP-measurement、Dmtet。预估各自需要2-3天的时间将代码和算法对应。

1.DMtet

隐式表达训练合适的SDF描述模型,显式表达用网格直接描述。结合了隐式表示和显式表示的优点,DMtet构建了可变形的四面体网格和一个可微的行进四面体层。可变形的四面体网格用于编码一个离散化的SDF。可微的行进四面体层将隐式表示转化为显式表示。前者使得模型能够被整体地优化。后者使得模型能够利用reconstruction loss, adversial loss生成模型的显式表达。

2.Ray marching & Ray casting & Ray tracing

Ray casting:当光线第一次击打到物体表面,光线就停止。不包含反射和折射。

ray tracing:符合物理世界中光线被反射、折射的性质。光线从相机出发到场景,在多个物体间弹射后,再停止。

path tracing:是一种避免ray tracing中部分光线重复传播的优化方法。使用蒙特卡洛方法,使每个光子随机选择,而不是不断地分割光线。

ray marching:使用sdf事先判断安全距离加速ray tracing的优化方法。

3.linux 常用 语句

Pwd: print working directory

Mkdir foldername: create new folder

Ls: print folder content

Cd foldername: go to next level

Ctrl+c: terminate the command

nvidia-smi -l check gpu usage

4.backprobagation

1)假设每个结点只有一个子节点

首先注意一共有至少三层函数:

_images/backprop_3_equations.png

 

_images/simple_nn_diagram_zo_zh_defined.png

由于函数的链式法则原理,每层的梯度必然含有与上一层梯度公共的部分。

即例如C'(W1)=C'(Z1)Z1'(W1);与C‘(W0)=C'(Z1)Z1'(W0)两者共有C'(Z1)。

唯一的差别只在于Z1'(W1)=H0;Z1'(W0)=Z1'(H0)H0'(W0)=W1*R'(X) X.

_images/simple_nn_diagram_zo_zh_defined.png

 

_images/memoization.png

 所以可以构造dynamic computation graph这种东西来储存每个结点的梯度、值等用于更新。在正向传播过程时,计算图被构建,计算结点值。计算vector-Jacobian products。逆向过程时,由输出层到输入层的梯度逐渐被更新。

2)多节点情况时

 3)DCG属性

Data:结点的tensor值(tensor是一种能够有效利用GPU资源,数值计算功能类似numpy的类型)

requires_grad:如果结点该属性为真,则记录历史操作、记录后向传播图。

grad:梯度,如果requires_grad==False,则值为None.即使值为真,在其他结点a调用a.backward()时,grad值才会被更新,被更新为\frac{\partial a}{\partial b}

is_leaf:结点为叶节点的情况如下:requires_grad==True;结点是由其他结点调用.detach()才生成;

 

------------------

1.signed distance function (SDF):仅用一个函数定义三维空间中的边和顶点,函数返回当前点到模型的最近点的距离。如果距离为负,则表示当前点位于模型内部。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/299284
推荐阅读
相关标签
  

闽ICP备14008679号