英伟达将训练 NeRF 模型从 5 小时缩至 5 秒。
你曾想过在 5 秒内训练完成狐狸的 NeRF 模型吗?现在英伟达做到了!
令人不可思议的是,就如谷歌科学家 Jon Barron 在推特上表示的:18 个月前,训练 NeRF 还需要 5 小时;2 个月前,训练 NeRF 最快也需要 5 分钟;就在近日,英伟达的最新技术——基于多分辨率哈希编码的即时神经图形基元,将这一过程缩减到只有 5 秒!!??
NeRF 是在 2020 年由来自加州大学伯克利分校、谷歌、加州大学圣地亚哥分校的研究者提出,其能够将 2D 图像转 3D 模型,可以利用少数几张静态图像生成多视角的逼真 3D 图像。之后又出现了改进版模型 NeRF-W(NeRF in the Wild),可以适应充满光线变化以及遮挡的户外环境。
然而,NeRF 的效果是非常消耗算力的:例如每帧图要渲染 30 秒,模型用单个 GPU 要训练一天。因此,后续的研究都在算力成本方面进行了改进,尤其是渲染方面。
现在,英伟达训练 NeRF,最快只需 5 秒(例如训练狐狸的 NeRF 模型)!实现的关键在于一种多分辨率哈希编码技术,英伟达在论文《 Instant Neural Graphics Primitives with a Multiresolution Hash Encoding》进行了详细解读。
论文地址:https://nvlabs.github.io/instant-ngp/assets/mueller2022instant.pdf
项目地址:https://github.com/NVlabs/instant-ngp
项目主页:https://nvlabs.github.io/instant-ngp/
英伟达在 4 个代表性任务中对多分辨率哈希编码技术进行验证,它们分别是
神经辐射场(NeRF)、十亿(Gigapixel)像素图像近似、神经符号距离函数(SDF)和神经辐射缓存(NRC)
。每个场景都使用了 tiny-cuda-nn 框架训练和渲染具有多分辨率哈希输入编码的 MLP。
首先是 NeRF 场景。大型的、自然的 360 度场景(左)以及具有许多遮蔽和镜面反射表面的复杂场景(右)都得到了很好的支持。实时渲染这两种场景模型,并在 5 分钟内通过随意捕获的数据进行训练:左边的一个来自 iPhone 视频,右边的一个来自 34 张照片。
接着是十亿(Gigapixel)像素图像近似。结果显示,多分辨率哈希编码实现了几个数量级的综合加速,能够在几秒钟内训练高质量的神经图形基元,并在数十毫秒内以 1920x1080 的分辨率进行渲染:如果你眨眼可能会错过它!
然后是神经符号距离函数(SDF)。如下动图展示了各种 SDF 数据集的实时训练进度,训练数据是使用 NVIDIA OptiX 光线追踪框架从真值网格动态生成的。
最后是神经辐射缓存(NRC)的直接可视化,其中网络预测每个像素路径的首个非镜面反射顶点的出射辐射,并根据实时路径跟踪器生成的光线进行在线训练。图左为使用 Müller 等人在 2021 论文《Real-time Neural Radiance Caching for Path Tracing》中的三角波编码的效果,图右为本文多分辨率哈希编码技术的效果,允许网络学习更清晰细节,如阴影区域。
效果如此惊艳,特斯拉 AI 高级总监 Andrej Karpathy 也对这项研究感叹道:「令人印象深刻的架构组合和手工制作的元执行。我仍然不相信这项研究进展的这么好、这么快。」
更多的网友认为不可思议,可以预见下一步是在设备上运行,然后在设备上训练!
从 5 小时缩至 5 秒,英伟达在技术上做了哪些突破?
计算机图形基元基本上是由数学函数表征的,这些数学函数对外观(appearance)进行参数化处理。数学表征的质量和性能特征对视觉保真度至关重要,因此英伟达希望在捕获高频、局部细节的同时保持快速紧凑的表征。多层感知机(MLP)表征的函数可以用作神经图形基元,并已经被证明可以满足需求,比如形状表征和辐射场。
上述方法的一个重要共性是将神经网络输入映射到更高维空间的编码过程,这是从紧凑模型中提取高近似精度的关键。在这些编码中,最成功的是那些可训练、特定于任务的数据结构,它们承担了很大一部分学习任务。有了这些数据结构,便可以使用更小、更高效的多层感知机。但是,这类数据结构依赖于启发式和结构改变(如剪枝、分割或合并),从而导致训练过程复杂化、方法局限于特定任务、甚至限制 GPU 性能。
针对这些问题,英伟达提出一种多分辨率哈希编码(multiresolution hash encoding),这是一种自适应、高效且独立于任务的技术。该技术仅包含两个值,分别是参数量 T 和预期最佳分辨率 N_max。
英伟达的神经网络不仅有可训练的权重参数 Φ,还有可训练的编码参数 θ。这些被排列成 L 个级别(level),每个级别包含多达 T 个 F 维 的特征向量。这些超参数的典型值如下表 1 所示:
多分辨率哈希编码的显著特征在于独立于任务的自适应性和高效性。
首先来看自适应性。英伟达将一串网格映射到相应的固定大小的特征向量阵列。低分辨率下,网格点与阵列条目呈现 1:1 映射;高分辨率下,阵列被当作哈希表,并使用空间哈希函数进行索引,其中多个网格点为每个阵列条目提供别名。这类哈希碰撞导致碰撞训练梯度平均化,意味着与损失函数最相关的最大梯度将占据支配地位。因此,哈希表自动地优先考虑那些具有最重要精细尺度细节的稀疏区域。与以往工作不同的是,训练过程中数据结构在任何点都不需要结构更新。
然后是高效性。英伟达的哈希表查找是
,不需要控制流。
这可以很好地映射到现代 GPU 上,避免了执行分歧和树遍历中固有的指针雕镂(pointer-chasing)。
所有分辨率下的哈希表都可以并行地查询。
如上图所示,每个级别(其中两个分别显示为红色和蓝色)都是独立的,并在概念上将特征向量存储在网格顶点处,其中最低和最高分辨率之间的几何级数 [N_min, N_max] 表示为:
英伟达在下面 4 个代表性任务中验证了多分辨率哈希编码:
十亿(Gigapixel)像素图像:MLP 学习从 2D 坐标到高分辨率图像的 RGB 颜色的映射;
神经符号距离函数(Neural signed distance function, SDF):MLP 学习从 3D 坐标到表面距离的映射;
神经辐射缓存(Neural radiance caching, NRC):MLP 从 Monte Carlo 路径跟踪器中学习给定场景的 5D 光场;
神经辐射场(NeRF):MLP 从图像观察和相应的透视变换中学习给定场景的 3D 密度和 5D 光场。
结果表明,在经过几秒钟的训练后,英伟达的多分辨率哈希编码在各类任务实现了 SOTA 效果,如下图 1 所示:
下图 6 中,英伟达使用多分辨率哈希编码近似一张分辨率为 20,000 × 23,466(469M RGB 像素)的 RGB 图像。
下图 7 展示了四个场景中,神经符号距离函数(SDF)训练 11000 步后的效果:
图 8 展示了神经辐射缓存(Neural radiance caching, NRC)应用的流程:
下图 12 为模块化合成器和大型自然 360 度场景的 NeRF 渲染效果。图左在使用一张 RTX 3090 的情况下,仅需 5 秒即累积了 128 个 1080p 分辨率的样本;图右使用同一张 GPU,以每秒 10 帧的速度运行交互式进程(动效图见文章开头)。
使用Python快速构建基于NVIDIA RIVA的智能问答机器人
NVIDIA Riva 是一个使用 GPU 加速,能用于快速部署高性能会话式 AI 服务的 SDK,可用于快速开发语音 AI 的应用程序。Riva 的设计旨在轻松、快速地访问会话 AI 功能,开箱即用,通过一些简单的命令和 API 操作就可以快速构建高级别的对话式 AI 服务。
2022年1月26日19:30-21:00,最新一期线上分享主要介绍:
对话式 AI 与 NVIDIA Riva 简介
利用NVIDIA Riva构建语音识别模块
利用NVIDIA Riva构建智能问答模块
利用NVIDIA Riva构建语音合成模块
© THE END
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com