Instant-NGP论文笔记
2022年英伟达的论文: Instant Neural Graphics Primitives with a Multiresolution Hash Encoding
论文地址:Instant-NGP
论文讲解视频:B站视频
介绍
使用哈希编码的多分辨率的即时神经图形原语
使用全连接神经网络的 神经图形原语 训练和评估是非常耗时的
设计了一个新的通用性的输入编码,它可以使用小型的网络同时又不会降低质量
小型的网络可以显著的减少浮点数的计算和内存访问
多分辨率的结构可以使网络自己处理哈希碰撞的问题
NGP使用了完全的cuda编程,更小的带宽浪费和更少的计算
1920x1080分辨率的图像可以在10ms完成渲染
计算图形原语由数学公式定义的,带有参数形式的外观表示
数学表示的质量和性能特征对于视觉保真度至关重要:我们希望表示在捕获高频、局部细节的同时保持快速和紧凑。
将神经网络输入映射到高维空间的编码,这是从紧凑模型中提取高近似质量的关键
多分辨率编码的方式是可自适应和高效的,独立于任务的
作者在四种类型的任务上进行了验证
- 百万像素图像:高分辨率图像的渲染
- SDF
- NRC
- NeRF
将输入编码到高维空间的几种方式
1. 频率编码
香草NeRF使用的三角函数的方法,这种称为频率编码
这种编码方式,就是使用线性变换,将低频转换成高频
2. 参数编码
参数编码是除了权重和偏置之外,增加一种辅助类型的数据结果,如网格或者树
可以根据输入向量,在这些结构上(网格或者树),使用插值的方式获取值
这种安排用更大的内存占用换取更小的计算成本:对于通过网络向后传播的每个梯度,完全连接的MLP网络中的每个权重都必须更新,对于可训练的输入编码参数(“特征向量”),只有非常小的数量受到影响
例如,网格类型中的一个点位的值,其计算使用三线性插值的方式,只需要计算周围八个点的数据
通过这种方式,尽管参数编码的参数总数比固定的输入编码要高得多,但在训练期间进行更新所需的FLOPs和内存访问的数量并没有显著增加
通过减少MLP的大小,训练速度可以得到提升,并且不会降低质量
3. 稀疏参数编码
密集型Grid中的可训练参数比神经网络中的权重使用更多的内存
密集型网格有两种类型的浪费:
- 在空间中的空白部分,也会进行分配,也会进行特征计算,但是它们是无用的
- 参数的数量是N的三次方,但是有用的物体表面的数据是N的2次方,这个N可以认为是分辨率
- 密集型网格会容易学习的过度平滑
多分辨率哈希编码
多分辨率哈希编码是这篇论文中的核心内容
假设这个表示神经网络: m ( y ; Φ ) m(\mathrm{y} ; \Phi) m(y;Φ),这个表示输入编码: y = enc ( x ; θ ) \mathbf{y}=\operatorname{enc}(\mathbf{x} ; \theta) y=enc(x;θ)
那么这个论文的内容就是在研究这里的输入编码部分
在保证相同的质量的情况下,达到更好的训练速度,同时不会增加开销

上图是NGP的简易过程
- 第一步是将坐标点(xyz的真实值)转换为hash表中的index
- 途中蓝色粉色表示了不同的Level下的计算,不同的Level,网格的分辨率不同(上图中粉色网格小,粉色的分辨率就比蓝色的大)
- 第二步是在不同层级的hash table中找到目标值周围的八个点位的值,然后进行三线性插值
- 第三步就是将所有的Level的结果拼接,到这里就算完成了encoding
- 第四步就是送入神经网络即可
NGP中不仅网络权重要进行训练,编码参数也要进行训练
参数编码,设计成L层,每层有 T个特征向量,每个向量的维度是F

每层所代表的分辨率,是最粗糙的分辨率和最精细的分辨之间的 插值
N l : = ⌊ N

最低0.47元/天 解锁文章
6847





