【无标题】Instant NGP(使用哈希编码的多分辨率的即时神经图形原语)

news2024/11/17 11:35:01

论文基本信息
作者:THOMAS MÜLLER,NVIDIA,瑞士ALEX EV ANS,NVIDIA,英国CHRISTOPH SCHIED,美国NVIDIA ALEXANDER KELLER,德国
关键词:
Image Synthesis, Neural Networks, En-
codings, Hashing, GPUs, Parallel Computation, Function Approximation
发表时间:2022

摘要

Abstract: 由完全连接的神经网络参数化的神经图形基元的训练和评估成本可能很高。我们通过多功能降低成本新的输入编码允许在不牺牲质量的情况下使用更小的网络,从而显着减少浮点数和内存访问操作:通过可训练特征向量的多分辨率哈希表增强小型神经网络,其值通过随机梯度下降优化。多分辨率结构允许网络消除散列冲突的歧义,使一个简单的在现代 GPU 上并行化的架构是微不足道的。我们利用这个通过使用完全融合的 CUDA 内核实现整个系统来实现并行性,重点是最大限度地减少浪费的带宽和计算操作。我们实现了几个数量级的综合加速,使在几秒钟内训练高质量的神经图形原语,1920×1080分辨率下几十毫秒渲染。
SIGGRAPH 2022

在这里插入图片描述

Instant-NGP 源码阅读 参考的是一个torch的实现方式
原始仓库为:https://github.com/yashbhalgat/HashNeRF-pytorch
论文使用的仓库为:https://github.com/xunull/read-HashNeRF-pytorch

可以在训练很短的时间内就将图像表现得很清晰
NGP
特点
训练速度快
使用cuda编程
核心
使用多分辨哈希编码

内容记录

核心思想
这篇文章提出了一种对输入做哈希encoding的方式,来让很小的网络也能学到很高的质量。
之所以小网络就可以学到很好结果是因为,它把很多可学习的特征存在了多个不同分辨率的哈希表里,让那些feature来承担了很大部分的学习负担。

一些编码方式:
在这里插入图片描述

参数化编码

思路
对于神经网络,它们把数据信息存储在了网络权重中,但信息完全存在网络中会导致计算很慢,网络表达能力也会受到的限制。
于是考虑把latent feature用结构化的方式存储,比如存在3d grid上,这样表达能力不会受到网络权重数量的限制,每次bp的参数也只和3d grid对应的cell还有小网络相关,训练时间大大缩短。
但是,3d grid这种结构化数据其实是很浪费的,因为只有表面信息是有意义的,绝大多数cell是空的。用acorn那样的树形数据结构可以减少内存以及需要训练的数据量,但是训练过程中动态维护树的结构,带来比较大的开销。
所以它就提出了一种多层次的hash encoding方式,来解决像acorn这样的树形结构存在的弊端。它其实就是提出了用多分辨率的哈希表这个数据结构来存feature。

具体操作
在这里插入图片描述在这里插入图片描述(1)分层
先把现在的定义域划分成不同resolution的L层,比如下图中的红色和蓝色线就划分了不同resolution的格点。
在这里插入图片描述

这里的蓝线划分的格点就是L0,红色的是紧跟着下一层的L1

在这里插入图片描述

确定好最精细和最粗糙的grid划分的resolution之后,中间层的resolution通过等比级数计算得到。

这里的b是通过Nmax(最精细resolution)和Nmin(最粗糙resolution)算出来的一个系数。然后l是指第多少层。
(2)哈希
然后把不同层的grid全都映射到这个层对应的一个哈希表里。
在这里插入图片描述

比如这里的蓝色格点的0417/粉色格点的2036都映射到了哈希表的对应位置
最理想的情况当然是最精细的resolution下,每个格点也能有一个在哈希表上对应的位置来存它的feature,但是这会很费空间。所以这篇文章设定了哈希表最大的一个T。现在蓝色和红色情况下,格点数小于T,所以每一个grid都有一个对应的哈希槽来存它的feature。但如果grid数大于这个T,那通过哈希函数的映射后,很多格点会对应到哈希表上同一个位置。这里为了节省时间/空间,它不对hash collision做任何处理,如果算出来哈希值一样,那就用同一个feature来刻画这些格点。
(3)线性插值
每个点都是由周围格点的线性插值来得到自己的feature。

见(3)linear interpolation
(4)网络学习
然后它把这个点和它对应的所有层的feature全都concat起来喂给网络去学习。见上图的(4)操作。
几个着重强调的问题
这篇文章又着重强调了几个issue。

  1. performance & quanlity
    它很快,占用的空间很小,但是它对应的质量是否也很好?如果我们想要提高质量要怎么做。
    关于这个算法,有F(每个feature的维度),L(multiresolution的层数),T(每层哈希表的最大entry个数)这几个参数,关于这些参数怎么选,这篇文章做了大量实验(见下表)后推荐了F=2,L=16的参数设定。T可以根据对目标精度的要求再定,T越高参数所占空间越大,但是对应的能表达的精度也会越高。

最重要的是这个hash-enconding这个类

模型得输入输出
NeRFSmall(
(sigma_net): ModuleList(
(0): Linear(in_features=32, out_features=64, bias=False)
(1): Linear(in_features=64, out_features=16, bias=False)
)
(color_net): ModuleList(
(0): Linear(in_features=31, out_features=64, bias=False)
(1): Linear(in_features=64, out_features=64, bias=False)
(2): Linear(in_features=64, out_features=3, bias=False)
)
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[230606] 听力TPO66汇总·最终篇|L3-WATM Wether Animals have a Theory Mind|19:30-21:30

[230605] 听力TPO66汇总下篇|L2-Fish Movement|13:00~14:0015:20~17:00 http://t.csdn.cn/jxqyr [230604] 听力TPO66汇总上篇| C1 L1 C2|10:20~12:00 http://t.csdn.cn/zyEGw 极度缺少相关背景知识

蓝精灵协会 | 23 年 6 月通讯

您好,Smurf 朋友们,欢迎阅读我们的新版时事通讯。它旨在分享来自社区及其项目的最新更新。我们希望您会喜欢它! 水晶特卖:折扣从 6 月 19 日开始 根据社区的投票,我们延长了水晶薄荷的持续时间,并减少了折扣…

这所天津的热门院校,保护一志愿,曾连续两年专业课题目完全相同,平均140分!

一、学校及专业介绍 天津工业大学(Tiangong University),简称“天工大”,位于天津市,是教育部与天津市共建高校、国家国防科技工业局和天津市共建的天津市重点建设高校、国家“双一流”建设高校、天津市高水平特色大学…

Python 常用内置函数与匿名函数的应用

目录 一、前言二、常用内置函数2.1 max()2.2 enumerate()2.3 map()3.4 reduce()2.5 filter()2.6 sorted() 一、前言 我们知道,Python 函数总体可分为两类,一类是标准函数,一类是匿名函数。其中标准函数中又可细分为内置标准函数、自定义标准…

支付宝一面:如何基于Redis实现分布式锁?

复习八股文的时候,分布式锁大家应该不陌生,像很多阿里、美团的面试官就很喜欢问这个问题。 前几天一位读者面试阿里的时候,就被问到了这个问题。当时,面试官追问的比较深,一些细节他回答的不是很好。不过,…

遭遇疑似网络攻击时服务器异常情况排查方法

一、适用场景 该方法主要用于发生网信安全异常情况时的异常设备信息提取和登机排查指导,主要包括主机类设备,linux和windows操作系统为主。 二、处理原则 网络安全应急工作坚持统一指挥、分工负责、及时预警、分级响应、密切协同、快速处置、确保恢复、…

Android Studio设置不自动运行到run标签

点击run成功后会自动切换到run标签,很烦人 设置: Edit Configuration app下的Miscellaneous 下,取消勾选 Activate tool window

提升项目经理能力,有什么方法?

一,项目管理是职场的基础能力 他思考了一会,和我说:项目经理这个职业,同事专业性强,薪酬稳定,福利优越。只要有几年的项目管理经验,也能生存无忧。 但是,如果你不满足于只做一个普…

计网笔记--数据链路层

1--数据链路层三个问题 ① 封装成帧 ② 差错控制 差错检测:奇偶校验和循环冗余校验 ③ 可靠传输 2--三种可靠传输协议 ① 停止-等待协议(SW) 接收成功,发送ACK确认信号,接收失败,发送NAK否认信号&#xf…

Elasticsearch:ignore_malformed,映射异常的解药

我们知道在文档摄入到 Elasticsearch 时,如果文档的字段在 mapping 中已经有定义,而当前的文档的字段的类型和之前的类型是不一样的情况下,那么我们该如何处理呢?通常由如下的几种方法: 使用 coerce 属性。在这种情况…

python微信公众号推送消息

目录 准备数据 接口 代码 微信公众号开发文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html 准备数据 1、微信公众号注册:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login 2、注册成功后可生…

基于TCP/UDP的Socket编程

---- socket概述: socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写…

springboot启动流程 (3) 自动装配

在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能。 本文将详细分析该注解的工作流程。 EnableAutoConfiguration注解 启用SpringBoot自动装配功能,尝试猜测和配置可能需要的组件Bean。 自动装配类通常是根据类路径和定义的Bean来应…

005 Settings可以直接通过AndroidStudio安装并调试(二)——Settings 打release包遇到的问题

一.背景 Settings迁移到AndroidStudio中直接打release包是有各种问题的,打不出来包,这里我们详细来描述下Settings打包出现的问题及解决方案。 二.Type com.android.settingslib.widget.BuildConfig is defined multiple times 首先遇到的拦路虎,也是最繁琐的包名冲突,之…

为什么配电室总出故障?这一点你做对了吗

配电室是供电系统中非常关键的组成部分,负责对电能进行分配和控制。然而,传统的配电室监控方式存在一些局限性,如人工巡检的局限性、监测数据获取困难、安全隐患无法及时发现等。 因此,为了提高配电室的管理水平、确保供电系统的安…

剑指offer03.数组中重复的数字

看到这道题的第一眼想到的是先给它排序,然后双指针从左往右遍历,写了一个冒泡排序,但是我想到了应该会超时,因为冒泡时间复杂度是n的平方,输入大小时10000,肯定会超时,然后右又看了一下题目看到…

SpringCloud Alibaba入门之用户子模块开发

在上一章的基础上进行子模块的开发SpringCloud Alibaba入门之创建多模块工程_qinxun2008081的博客-CSDN博客 一、引入SpringBoot 我们在父项目统一管理引入的jar包的版本。我们采用父项目中以depencyMangement方式引入spring-boot,子项目依赖parent父配置即可。 &…

YGG 公会发展计划(GAP)第三季总结

2023年5月6日,Yield Guild Games(YGG)结束了其代币分配系统——公会发展计划(GAP)的第三季,向社区成员提供了更多奖励,以表彰他们对公会和参与游戏的宝贵贡献。 第三季对 GAP 进行了一些升级&am…

uniapp和springboot微信小程序开发实战:前端架构之微信小程序开发表单提交功能

文章目录 前言前端代码后端代码controller层service层总结前言 基本上很多项目都有类似于意见反馈、留言等形式的表单提交功能,今天给大家介绍的是使用uniapp和vue组件实现的表单提交功能。其效果如下: 前端代码 <template><view class="body"><…

Jmeter接口测试-MD5加密-请求验签

目录 前言&#xff1a; 第一部分&#xff1a;先准备好Jmeter 第二部分&#xff1a;编写MD5加密-请求验签的脚本 第三部分&#xff1a;执行脚本 前言&#xff1a; JMeter是一款常用的接口测试工具&#xff0c;对于需要进行加密验证的接口&#xff0c;我们可以使用MD5加密算…