赞
踩
总结:首先pytorch语法还存在不熟悉的问题,计划先1-2天补齐。目前dream-fusion代码结构主要分为如下几个部分:NeRF、Ray marching、Stable diffusion、Classifier-guidance、SDS-Loss、CLIP-measurement、Dmtet。预估各自需要2-3天的时间将代码和算法对应。
隐式表达训练合适的SDF描述模型,显式表达用网格直接描述。结合了隐式表示和显式表示的优点,DMtet构建了可变形的四面体网格和一个可微的行进四面体层。可变形的四面体网格用于编码一个离散化的SDF。可微的行进四面体层将隐式表示转化为显式表示。前者使得模型能够被整体地优化。后者使得模型能够利用reconstruction loss, adversial loss生成模型的显式表达。
Ray casting:当光线第一次击打到物体表面,光线就停止。不包含反射和折射。
ray tracing:符合物理世界中光线被反射、折射的性质。光线从相机出发到场景,在多个物体间弹射后,再停止。
path tracing:是一种避免ray tracing中部分光线重复传播的优化方法。使用蒙特卡洛方法,使每个光子随机选择,而不是不断地分割光线。
ray marching:使用sdf事先判断安全距离加速ray tracing的优化方法。
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
首先注意一共有至少三层函数:
由于函数的链式法则原理,每层的梯度必然含有与上一层梯度公共的部分。
即例如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.
所以可以构造dynamic computation graph这种东西来储存每个结点的梯度、值等用于更新。在正向传播过程时,计算图被构建,计算结点值。计算vector-Jacobian products。逆向过程时,由输出层到输入层的梯度逐渐被更新。
3)DCG属性
Data:结点的tensor值(tensor是一种能够有效利用GPU资源,数值计算功能类似numpy的类型)
requires_grad:如果结点该属性为真,则记录历史操作、记录后向传播图。
grad:梯度,如果requires_grad==False,则值为None.即使值为真,在其他结点a调用a.backward()时,grad值才会被更新,被更新为
is_leaf:结点为叶节点的情况如下:requires_grad==True;结点是由其他结点调用.detach()才生成;
------------------
1.signed distance function (SDF):仅用一个函数定义三维空间中的边和顶点,函数返回当前点到模型的最近点的距离。如果距离为负,则表示当前点位于模型内部。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。