1. 位置编码:Positional encoding 2. 分层体积采样:Hierarchical volume sampling 总体流程 背景 游戏行业中最常见的就是将几何图形进行三角面建模,对三角面进行光栅化,光照、阴影等则是根据物体材质进行手动调整。而NeRF采用的是体渲染,渲染效果提高的同时还有着光照信息。游戏场景中使用体渲染的例子有UE5.3推出的烟雾、...
nerf位置编码公式NeRF的位置编码公式是将每个点的位置信息转化为一个向量,并将该向量传递给神经网络。具体来说,位置编码可以使用映射函数将输入向量的单个分量映射到2L维,其中NeRF对坐标3维取L=10,而视角方向2维取L=4,则启用Positional Encoding的模型需要将MLP的输入维度从5改为(3×10×2+2×4×2)=76 。
这图直观地展示了在输入中增加信息的重要性: 图a纯Nerf很糊,DNN很大 图b给输入加上了不可学习的三角函数位置编码(同初代Transformer位置编码),变清晰了一点 图c就是NSVF的体素+可学习编码方案,但是没有多尺度体素也没有体素裁剪,可以看到质量差不多的情况下,DNN显著变小,但是要存很大的编码数据, 128^3 个体...
位置编码(positional encoding),注意这里的PE和transformer里面的PE不一样。 层体素渲染,上面已经提过了。 下面重点说一下位置编码。 为什么要引入位置编码:传统的MLP网络不善于学习高频数据信息,但是基于颜色的纹理信息都是高频的,如果直接使用MLP学习,会导致学得纹理的表面相当模糊。因此引入了位置编码,让MLP同时学习高...
NeRF 利用傅里叶级数来编码输入位置和视线方向。 傅里叶级数是一种分析数学工具,可以将任何周期性函数表示为正弦和余弦的和。 通过对空间和方向进行傅里叶编码,NeRF 增加了神经网络对几何和光照变化的感知能力。 具体来说,对于一个给定的 3D 点位置 和方向 ,它们都可以被分解为其对应的频域表示。这个频域表示就是...
众所周知,Transformer架构中的位置编码可以提供序列中标记的离散位置,作为整个架构的输入。而NeRF使用位置编码是将连续的输入坐标映射到更高的维度空间,使MLP更容易逼近更高频率的函数。 从图中可以观察到,去除位置编码会大大降低模型表示高频几何和纹理的能力,最终导致外观过度平滑。
首先是主干模型的搭建。模型输入:空间三维坐标在位置编码后的高维向量;模型输出:相应三维坐标点处的 的预测值。模型的具体架构参考原理部分。 这里需要注意模型权重的初始化,它对训练时收敛的快慢影响很大。这里,采用权重和偏置都在(-\sqrt{k},\sqrt{k})(−k,k)内均匀分布,其中k=1/\text{in-channels...
1)定义了NeRF网络结构,包含位置编码和多层全连接网络,输入是位置和视角,输出是颜色和密度。 2)实现了位置编码函数,通过正弦和余弦变换引入高频信息。 3)实现了体积渲染函数,在光线上采样点,查询NeRF网络预测颜色和密度,然后通过加权平均实现整体渲染。 4)定义了渲染损失函数,计算预测颜色和真实颜色的均方误差。