不可思议!英伟达新技术训练NeRF模型最快只需5秒,单张RTX 3090实时渲染,已开源...-程序员宅基地

技术标签: 机器学习  计算机视觉  深度学习  人工智能  神经网络  

关注并星标

从此不迷路

计算机视觉研究院

747eb6c62b0aab116746180652ba6402.gif

c2d9ba595c7396d6e434279893fe31a2.gif

6af7f920c4b6be7b20038bb0d711256a.png

公众号IDComputerVisionGzq

学习群扫码在主页获取加入方式

计算机视觉研究院专栏

作者:Edison_G


英伟达将训练 NeRF 模型从 5 小时缩至 5 秒。


转自《机器之心》

你曾想过在 5 秒内训练完成狐狸的 NeRF 模型吗?现在英伟达做到了!

68ef26f2bac73a19bb2d36dc9a5965ea.gif

令人不可思议的是,就如谷歌科学家 Jon Barron 在推特上表示的:18 个月前,训练 NeRF 还需要 5 小时;2 个月前,训练 NeRF 最快也需要 5 分钟;就在近日,英伟达的最新技术——基于多分辨率哈希编码的即时神经图形基元,将这一过程缩减到只有 5 秒!!??

3323ee56817924771a21b3c043faa9a1.png

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》进行了详细解读。

d7619ae060a4e6d589afb63ef8324ecd.png

  • 论文地址: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 张照片。


500856ec0f87314ee2352d078814ebb1.gif

接着是十亿(Gigapixel)像素图像近似。结果显示,多分辨率哈希编码实现了几个数量级的综合加速,能够在几秒钟内训练高质量的神经图形基元,并在数十毫秒内以 1920x1080 的分辨率进行渲染:如果你眨眼可能会错过它!

f5e5756f9df04dc82c6d3a648190f670.gif

然后是神经符号距离函数(SDF)。如下动图展示了各种 SDF 数据集的实时训练进度,训练数据是使用 NVIDIA OptiX 光线追踪框架从真值网格动态生成的。

a72a3fb6fc58ce6da0c600d3b8cab9d4.gif

最后是神经辐射缓存(NRC)的直接可视化,其中网络预测每个像素路径的首个非镜面反射顶点的出射辐射,并根据实时路径跟踪器生成的光线进行在线训练。图左为使用 Müller 等人在 2021 论文《Real-time Neural Radiance Caching for Path Tracing》中的三角波编码的效果,图右为本文多分辨率哈希编码技术的效果,允许网络学习更清晰细节,如阴影区域。

4584bcfed375b6758c9909043da5c0cb.gif

‍效果如此惊艳,特斯拉 AI 高级总监 Andrej Karpathy 也对这项研究感叹道:「令人印象深刻的架构组合和手工制作的元执行。我仍然不相信这项研究进展的这么好、这么快。」

0a443f740437db9913784640094a654c.png

更多的网友认为不可思议,可以预见下一步是在设备上运行,然后在设备上训练!

0d37a28e32f0680cea2d67648a8d50bb.png

从 5 小时缩至 5 秒,英伟达在技术上做了哪些突破?

计算机图形基元基本上是由数学函数表征的,这些数学函数对外观(appearance)进行参数化处理。数学表征的质量和性能特征对视觉保真度至关重要,因此英伟达希望在捕获高频、局部细节的同时保持快速紧凑的表征。多层感知机(MLP)表征的函数可以用作神经图形基元,并已经被证明可以满足需求,比如形状表征和辐射场。

上述方法的一个重要共性是将神经网络输入映射到更高维空间的编码过程,这是从紧凑模型中提取高近似精度的关键。在这些编码中,最成功的是那些可训练、特定于任务的数据结构,它们承担了很大一部分学习任务。有了这些数据结构,便可以使用更小、更高效的多层感知机。但是,这类数据结构依赖于启发式和结构改变(如剪枝、分割或合并),从而导致训练过程复杂化、方法局限于特定任务、甚至限制 GPU 性能。

针对这些问题,英伟达提出一种多分辨率哈希编码(multiresolution hash encoding),这是一种自适应、高效且独立于任务的技术。该技术仅包含两个值,分别是参数量 T 和预期最佳分辨率 N_max。

英伟达的神经网络不仅有可训练的权重参数 Φ,还有可训练的编码参数 θ。这些被排列成 L 个级别(level),每个级别包含多达 T 个 F 维 的特征向量。这些超参数的典型值如下表 1 所示:

0837e228ef49aa401bd28d14ae38fd3e.png

多分辨率哈希编码的显著特征在于独立于任务的自适应性和高效性。

首先来看自适应性。英伟达将一串网格映射到相应的固定大小的特征向量阵列。低分辨率下,网格点与阵列条目呈现 1:1 映射;高分辨率下,阵列被当作哈希表,并使用空间哈希函数进行索引,其中多个网格点为每个阵列条目提供别名。这类哈希碰撞导致碰撞训练梯度平均化,意味着与损失函数最相关的最大梯度将占据支配地位。因此,哈希表自动地优先考虑那些具有最重要精细尺度细节的稀疏区域。与以往工作不同的是,训练过程中数据结构在任何点都不需要结构更新。

然后是高效性。英伟达的哈希表查找是579e781823d0aa8690b103b51b8c1c59.png,不需要控制流。这可以很好地映射到现代 GPU 上,避免了执行分歧和树遍历中固有的指针雕镂(pointer-chasing)。所有分辨率下的哈希表都可以并行地查询。

下图 3 展示了多分辨率哈希编码中的执行步骤:

a692afd7822aa118c9ca7b8e89cc22c3.png

2D 多分辨率哈希编码示意图。

如上图所示,每个级别(其中两个分别显示为红色和蓝色)都是独立的,并在概念上将特征向量存储在网格顶点处,其中最低和最高分辨率之间的几何级数 [N_min, N_max] 表示为:

0a0e19466bcdc73475da36bfacd64191.png

实验效果

英伟达在下面 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 所示:

0b25f7deaac15eb13f93781d19045287.png

下图 6 中,英伟达使用多分辨率哈希编码近似一张分辨率为 20,000 × 23,466(469M RGB 像素)的 RGB 图像。

8b86ff58bca0cb455b5fa5e0412cd09c.png

下图 7 展示了四个场景中,神经符号距离函数(SDF)训练 11000 步后的效果:

08b2426a3b231840047921b88247a511.png

图 8 展示了神经辐射缓存(Neural radiance caching, NRC)应用的流程:

78870508141eee35796f3704a9695cde.png

下图 12 为模块化合成器和大型自然 360 度场景的 NeRF 渲染效果。图左在使用一张 RTX 3090 的情况下,仅需 5 秒即累积了 128 个 1080p 分辨率的样本;图右使用同一张 GPU,以每秒 10 帧的速度运行交互式进程(动效图见文章开头)。

2e64ba0db03323e62459b99dc465b0ef.png

 THE END 

转载请联系本公众号获得授权

e6f7ce935cbadfecd8c9ecb226c761bb.gif

计算机视觉研究院学习群等你加入!

计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

0540df355da07caccb5a6fc7e7fd4d3e.png

扫码关注

计算机视觉研究院

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gzq0723/article/details/122794932

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签