【2023.07.26-2023.07.28】dreamfusion代码概况

1.代码的整体逻辑

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优化器

2.文章中使用的模型

1)ViT

2) stable diffusion

3)Perp-Neg

通过提高几何性质的分数来解决负prompt的问题的算法

4)zero-123

5)dmtet

------待做部分----

deep learning 4、5、7、8

-------utils.py中trainer部分-----

1.rgba and rgbs

rgb+alpha,rgb+sync.为什么需要两者

------deep learning-------

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+]

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值