Neuralangelo代码重点部分

前言

又是一篇新文章,最近完全没有动力搞下去,不知道是因为要放假了还是想退学,anyway,有了一点点新的idea想基于这篇文章验证一下

Code

文件neuralangelo-main/projects/neuralangelo/utils/modules.py有求导部分

eps = self.normal_eps / np.sqrt(3)
k1 = torch.tensor([1, -1, -1], dtype=x.dtype, device=x.device)  # [3]
k2 = torch.tensor([-1, -1, 1], dtype=x.dtype, device=x.device)  # [3]
k3 = torch.tensor([-1, 1, -1], dtype=x.dtype, device=x.device)  # [3]
k4 = torch.tensor([1, 1, 1], dtype=x.dtype, device=x.device)  # [3]
sdf1 = self.sdf(x + k1 * eps)  # [...,1]
sdf2 = self.sdf(x + k2 * eps)  # [...,1]
sdf3 = self.sdf(x + k3 * eps)  # [...,1]
sdf4 = self.sdf(x + k4 * eps)  # [...,1]
gradient = (k1*sdf1 + k2*sdf2 + k3*sdf3 + k4*sdf4) / (4.0 * eps)
if training:
    hessian_xx = ((sdf1 + sdf2 + sdf3 + sdf4) / 2.0 - 2 * sdf) / eps ** 2   # [N,1]
    hessian = torch.cat([hessian_xx, hessian_xx, hessian_xx], dim=-1) / 3.0

这里我更关心eps的值,同样是这个文件,可以看到每种网格分辨率下的eps,网格分辨率

for lv in range(0, num_levels):
    size = np.floor(r_min * self.growth_rate ** lv).astype(int) + 1
    self.resolutions.append(size)
# resolution 16
[33, 43, 56, 74, 98, 128, 169, 223, 295, 389, 512, 676, 892, 1177, 15532048]
# epsilon
[0.0303, 0.02326, 0.01786, 0.01351, 0.0102, 0.00781, 0.00592, 0.00448, 0.00339, 0.00257, 0.00195, 0.00148, 0.00112, 0.00085, 0.000640.00049]
[   0,      1,      2,        3,       4,      5,        6,       7,      8,       9,       10]

# fd 此时已经接近level14的epsilon
setp = 0.001
# dfd 
step_x =  0.0031~0.0036--->0.0082~0.0077		# level 9 但是会随着距离产生变化,物体相机距离越大,setp_x越大,但即使再大,也是在这个范围内,那么过大的epsilon会产生问题吗?
step_z = 0.0098	--> 0.0011  # 随迭代次数减小		# level 5 会随迭代此时减小

关于mlp解码器部分在neuralangelo-main/projects/neuralangelo/utils/mlp.py有关于SDF MLP的部分:
超参——
在这里插入图片描述

expmeriment

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值