赞
踩
main.py: 根据部分命令行输入,补充其他参数。如使用的nerf类型,包括太极模块加速的nerf、instant ngp的multigrid ,还是一般的nerf。是训练模式还是测试模型,根据不同的需要将不同的dataloader作为参数传入Trainer类中。如果是训练模型,则需要选择guidance、优化器、学习率。guidance是使用四种(stable diffusion or deepfloyd or clip or zero123)中的哪些。优化器是使用adan\adam。学习率是固定还是变化。
nerf\utlis.py:主要定义Trainer类,train_step函数、train函数、test函数。train_step函数中定义loss的计算方式。loss分为三类已知视角loss、未知视角loss、正则化loss。已知视角的loss用颜色、mask、法线、相对深度分别计算。新视角loss用guidance模型计算,可选guidance模型是否用perpneg处理负样本问题。正则化损失主要根据是否选择用dmtet渲染构建。train函数中保存checkpoint\调用tensorboard\以epoch调用train_step。test函数主要是生成视频。
nerf\provider.py:主要构建dataloader,定义NeRFDataset类
nerf\render.py:定义NeRFRender类,run函数渲染场景,计算深度图、颜色,调用raymarching方法。run函数有四种写法,cuda版本、太极模块、dmtet,以及基础版本。
nerf\network.py:定义NeRFRender子类NeRFNetwork,NeRFNetwork实例会在nerf\utlis.py被调用render方法,得到场景sigma、颜色、法线一类。背景会被encoding,之后再送入网络得到rgb,最后和图像其他内容一起alpha blending。encoder通过在encoding文件中定义FreqEncoder_torch调用shencoder、frequency encoder、gridencoder等对应的编码器。
ldm:如果使用zero123作为guidance,则会被调用。
optimizer.py:主要定义Adan优化器
3)Perp-Neg
通过提高几何性质的分数来解决负prompt的问题的算法
4)zero-123
5)dmtet
deep learning 4、5、7、8
1.rgba and rgbs
rgb+alpha,rgb+sync.为什么需要两者
1.EMA exponentially decaying moving average
由于样本需要分批次送入模型,需要防止模型在某个patch中过拟合、进入局部最优
2.gradient clipping: 如果梯度超过某个区间,则强制设置梯度值为某个最大值或最小值
3.validation set:为了学习超参数
1.pytorch dataloader collate_fn collate function
默认:将mini-batches 的样本合并为tensor
用户可以自定义collate_fn获得custom batching,如在非第一维度的向量叠加样本,设计自定义数据类型。
2.pytorch自定义梯度更新方法
对torch.autograd.Function的子类调用apply函数:创建自定义autograd.Function的函数.
ctx:context onject, 用于储存反向传播计算的信息。
3. python @staticmethod
定义静态方法。静态方法不需要实例化,只需要function参数,与对象状态无关。
4.vscode
1)fuzzy searching
f.d,f.*d
Use regular expressions - Visual Studio (Windows) | Microsoft Learn
2)折叠代码
要操作光标所在文件
中的所有代码块:
Ctrl+K+0
Ctrl+K+J
仅仅操作光标所处代码块
内的代码:
Ctrl+Shift+[
Ctrl+Shift+]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。