干货! CVPR:基于VDB的高效神经辐射渲染场

news2024/11/30 8:51:01

点击蓝字

a25df66a66af9907013e800e2cfa2eb2.jpeg

关注我们

AI TIME欢迎每一位AI爱好者的加入!

作者介绍

严 涵

上海交通大学2019级人工智能专业本科生,研究兴趣主要是与NeRF相关的三维重建算法。

bb22257b4db53529b1ac39f3dcfcd3a2.png

报告题目

基于VDB高效神经辐射渲染场

内容简介

01

NeRF

NeRF的提出起初主要是为了解决新视⻆生成的任务,根据一些在不同视⻆下拍出的照片,希望能够获得未⻅过的视⻆下的图像。NeRF提出用隐函数来建模场景,即MLP,输入一个空间点的坐标和视⻆方向,可以输出这个点的密度和对应的颜色,通过体渲染技术对一条射线上的颜色进行加权积分,得到对应的像素值,从而建立3D到2D的关系,实现仅通过2D图像便可以监督3D场景的生成。使用MLP来连续的建模场景,相比于传统的点云或者体素等方法,渲染的分辨率不受限,并且存储占用小。

6336b265aa8907741be6d6e7268bde20.png

02

Limitation

但是基于MLP的方法也存在一些局限性,比如会导致NeRF的训练和渲染速度较慢。主要的原因在于渲染一个像素值对应了一条射线,同时对应于要渲染射线上的上百个采样点,即要访问神经网络上百次。这种昂贵的时间成本导致了NeRF的应用受到限制,所以很多工作都开始探索NeRF加速的方法。一类方法利用了场景的稀疏性,比如在真实世界的场景中很大一部分都是空气,而位于空气中的采样点实际上不需要进行神经网络访问。于是,研究者们将有意义的场景信息预先存储在稀疏的数据结构中,比如下图工作中采用了八叉树,只将有意义的点的数据保存在树的叶子节点上,从而实现高效的存储和渲染,但是这种方法往往需要先训练一个NeRF,再将NeRF转化为这些稀疏数据结构,因此训练效率不够理想。

bbf176887b3f42ff98701eac7b01356d.png

为了加速训练,人们采用3D网格来保存信息,比如DVGO,直接在Dense Grid上学习场景信息,这种方式可以将耗时的神经网络访问变为快速的内存访问,从而实现快速的训练和渲染。但是,Dense Grid的缺点是空间占用太大,并且随分辨率呈立方级的增⻓,因此很难将其应用于移动设备中。

1df03dd66dead6762376ec176b392a16.png

由于算力资源等限制,目前,对于在移动设备端运行NeRF的问题仍然没有很好的解决方法。MobileNeRF通过将NeRF表示为一组有纹理的多边形,使得可以直接应用于传统的渲染管道,从而实现在移动设备端的实时渲染。但是,它的训练过程仍然很慢,并且由于是假设为mesh的表征,无法处理透明物体。

bb9bed062adac311de4300bfe2b47e26.png

03

Pipline

所以,我们就提出了基于VDB的高效数据表征,通过设计一个训练策略,直接在VDB数据结构上学习场景信息,不仅可以加速训练和渲染,而且由于其具有稀疏性的良好性能,存储占用不大。此外,因为VDB是在影视界经过验证的成熟数据结构,拥有丰富的生态,能够在手机端高效运行。

90d820dc22f8244d6755dddc4900f2a1.png

04

VDB

我们采用VDB数据结构主要是因为它具有两个优势,它既有Dense Grid的灵活性,又有稀疏数据的存储高效性。对于使用者来说,它可以完全被看作一个Dense Grid,输入任意的坐标,它可以快速地返回对应值甚至邻居值。

7d459ffeebc6aa463e9cd6fd17c234cf.png

而对于开发者来说,它实际上是一个4层的B+树,简单来说,有两个概念,一个是值,一个是状态。值就相当于我们所需要的数据,它只存储在叶子结点上,比如下图中的棕色部分;状态类似于Mask,反映这个结点的值是否是感兴趣的,在一定程度上反映了稀疏性。因为它是固定的四层树,所以对叶子结点的访问很快,此外,为了支持快速的邻居访问,它设计了缓存机制,即图中的accessor,它的容量和树的深度相同,它会缓存单次搜索中所有被访问的节点,并且在下一次访问时,会先自底向上地检查其中的节点,对于邻居节点的访问,往往在第一次检查时便命中,于是节省了从根节点重新搜索的时间。这个特性也意味着它非常适合执行三线性插值和ray marching等算法。

b135f6a8530f00c8db5843755a167dc7.png

05

PlenVDB

基于上述优势,我们以DVGO作为baseline,将它的Dense Grid改为VDB。总体来讲,即用两个VDB分别存储密度和颜色,通过coarse-to-fine的训练策略来学习精细的场景信息。

c0315f98983ec527bc0dc86c87e9601c.png

具体来说,一方面,我们设计了三类VDB,分别储存数据,梯度和优化器参数,来支持直接在VDB上优化场景,得益于VDB在随机访问和三线性插值上的优势,可以实现训练过程的加速。

5196bb7ac8269cb4d27fe30e2116b703.png

另一方面,基于Cuda编程,我们将DVGO的渲染方法改为两次ray marching算法,第一次访问存储密度的VDB,来筛选出包含场景信息的有效点,第二次访问存储颜色的VDB,获得对应的颜色特征向量,最后通过轻量的MLP得到最终的像素值,以此来加速渲染。

597f139454f3c5abbff59b3e4f13c8c1.png

此外,我们进一步压缩,将两个VDB合并,用一个VDB存储索引值来指向对应的密度和颜色,从而减少拓扑上的冗余,以实现高效的存储。

3b3cdc196a4949fb426b95d2b1c0c395.png

06

Result

在实验部分,我们首先做了不同数据结构的对比,分别是PlenOctrees的八叉树、Plenoxels的近似于Dense Grid的表示方式,和我们的基于VDB的表示。虚线反映了对邻居节点访问时的搜索路径,由于accessor的存在,VDB可以免于从根结点重新搜索的冗余。对于不同分辨率的场景,我们用ray marching的方式在一条射线上通过三线性插值来访问800个点并计算耗时。为了公平起⻅,我们首先训练好一个Plenoxels的模型,然后将他转化为octree和VDB的形式。实验结果显示,VDB在时间和存储效率上都进行了平衡。

d167bd6c6917ecf39b4667856c2968eb.png

下图是本文方法和其他方法在训练速度上的对比,可以看出我们的方法相比Nerf有很大提升,仍然在第一梯队。

474eb3c0f974c67eb956b84fc522b118.png

下图反映了我们的方法与不同模型在训练时间、渲染速度、模型大小和渲染质量上的对比。相比baseline DVGO来说都有一定程度上的提升。值得说明的是,PlenOctrees和Plenoxels采用的是球谐系数的方式,从而无需MLP,因此在渲染速度上能够达到很快。但是在渲染质量和模型大小上不如我们所提方法渲染出来的模型。此外,如果用我们的模型来存储球谐系数,也能达到如此高的渲染速度。

a86b0302cb9746ea11b3bf1af8c3db84.png

下表是消融实验的结果,可以看出通过将两个VDB合并为一个的方式可以进一步减小存储占用以及加快渲染速度。经过可视化的结果显示,与DVGO相比,渲染速度和内存占用都有4-5倍的提升。

cc15553f7ad8a1a46ec1b72db37d4eba.png

07

Conclusion

1.我们提出了PlenVDB,它建立在VDB的基础上,是一种层级的稀疏体数据结构;

2. 实验结果表明,我们的模型在训练速度,渲染速度和存储开销上达到了较好的平衡效果;

3. 我们提出了一种直接从输入图像中学习VDB数据的训练策略,这使得训练的速率加快;

4. 训练好的VDB模型可以导出为NanoVDB格式用于传统的图形渲染管线。

08

Reference

[1] Ben Mildenhall, Pratul P Srinivasan, Matthew Tancik, Jonathan T Barron, Ravi Ramamoorthi, and Ren Ng. Nerf: Representing scenes as neural radiance fields for view synthesis. In Proc. ECCV, 2020.

[2] Alex Yu, Ruilong Li, Matthew Tancik, Hao Li, Ren Ng, and Angjoo Kanazawa. PlenOctrees for real-time rendering of neural radiance fields. In ICCV, 2021.

[3] Cheng Sun, Min Sun, and Hwann-Tzong Chen. Direct voxel grid optimization: Super-fast convergence for radiance fields reconstruction. In CVPR, 2022.

[4] Zhiqin Chen, Thomas Funkhouser, Peter Hedman, Andrea Tagliasacchi. MobileNeRF: Exploiting the Polygon Rasterization Pipeline for Efficient Neural Field Rendering on Mobile Architectures. In arXiv:2208.00277.

[5] Ken Museth. 2021. NanoVDB: A GPU-Friendly and Portable VDB Data Structure For Real-Time Rendering And Simulation. In ACM SIGGRAPH 2021 Talks.

[6] Ken Museth. Vdb: High-resolution sparse volumes with dynamic topology. ACM Trans. Graph., 2013.

[7] Sara Fridovich-Keil and Alex Yu, Matthew Tancik, Qinhong Chen, Benjamin Recht, and Angjoo Kanazawa. Plenoxels: Radiance fields without neural networks. In CVPR, 2022.

整理:陈研

审核:严涵

点击“阅读原文”跳转到20:38可以查看回放哦!

往期精彩文章推荐

0e085949e83d099faedfcf854f0a59f9.jpeg

记得关注我们呀!每天都有新知识!

 关于AI TIME 

AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。

迄今为止,AI TIME已经邀请了1000多位海内外讲者,举办了逾550场活动,超600万人次观看。

6df036a9bca523a3a7afac6f8753c0e2.png

我知道你

在看

~

cd3fa9feaac4b3a40a84f0805fe4dcf6.gif

点击 阅读原文 查看回放!

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

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

相关文章

shell脚本常用的命令

管理文件内容的使用 一、sort命令二、uniq命令三、tr命令四、cut命令五、split命令六、paste命令七、eval命令 一、sort命令 sort命令是以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序,比较原则是从首字符向后,依次按ASCII码…

尚硅谷Vue配套资源

1.gitee地址: https://gitee.com/coderPatrickStar/Vue/tree/master/%E5%B0%9A%E7%A1%85%E8%B0%B7Vue%E9%85%8D%E5%A5%97%E8%B5%84%E6%BA%90 2.

Linux常用命令——id命令

在线Linux命令查询工具 id 显示用户的ID以及所属群组的ID 补充说明 id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需…

编译一个开源软件遇到的问题总结

一、开源软件Supra 需要编译一个开源的软件Supra,它需要的前置条件是: 1、cmake ≥ 3.4 2、gcc ≥ 4.8 or min. Visual Studio 2015 (Compiler needs to be supported by CUDA! For that, see the CUDA installation instructions.) 3、QT ≥ 5.5 4、TB…

infuluxdb时序数据库介绍

时序数据库(influxdb) InfluxDB是一个开源的、高性能的时序型数据库,在时序型数据库DB-Engines Ranking上排名第一。 下载地址:https://dl.influxdata.com/influxdb/releases/influxdb2-2.3.0-windows-amd64.zip 启动: CMD到解压…

游戏服务器被攻击怎么办

游戏服务器的安全是每个游戏开发者和管理员必须关注的问题。然而,尽管有各种防御措施,游戏服务器仍然可能受到攻击。小编将为您介绍游戏服务器被攻击的原因,并提供一些解决方案。 游戏服务器被攻击的原因 1. DDoS 攻击 DDoS 攻击是最常见的攻…

【SSA-LSTM】基于SSA-LSTM预测研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

CRM软件标准版和定制版有什么分别

CRM系统能够帮助企业管理客户互动,跟踪客户数据,实现业务流程自动化。很多企业不太了解,标准CRM软件和定制CRM软件的区别是什么,该如何选择?下面我们来说说定制CRM的优势。 什么是标准CRM软件? 标准CRM软…

计算机组成原理---第七章 外围设备习题详解版

(一)课本例题 (二)课后习题 1.计算机的外围设备是指除了CPU和内存以外的其它设备。 2.打印机根据印字方式可以分为击打式和非击打式两大类,在击打式类打印机中,只有针型打印型打印机才能打印汉字。 3.一…

Protein Cell:基于R语言的微生物组数据挖掘最佳流程(大众评审截止14号晚6点)...

Protein & Cell综述:基于R语言的微生物组数据挖掘的最佳流程 近日,中国农业科学院刘永鑫组联合南京农业大学袁军组在国际期刊 Protein & Cell (IF 15.3) 发表了题为”“The best practice for microbiome analysis using R”的综述论文&#xf…

辉哥带你学hive第一讲 hive基本介绍以及环境搭建

文章目录 1.Hive介绍1.1 hive 基本情况1.2 Hive架构原理1.3 Hive 安装1.4 元数据配置1.5 hive 服务部署1.6Hive常用交互命令1.6.1 Hive参数配置方式1.Hive介绍 1.1 hive 基本情况 hive基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表。 Hive是一个Hadoop客…

【扰动识别】S变换电能质量扰动识别(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

黎曼积分的概念

黎曼积分的概念 引入 设 f f f是闭区间 [ a , b ] [a,b] [a,b]上的非负连续函数, D D D是坐标系中由直线 x a xa xa, x b xb xb, x x x轴和曲线 y f ( x ) yf(x) yf(x)围成的图形。求 D D D的面积 S S S。 我们可以在 [ a , b ] [a,b] …

蓝桥杯模块学习2——LED灯

第一章 硬件部分 1.1 为什么要了解硬件部分? 比赛的时候会给出原理图,如果我们能够深入的理解硬件,就可以从中推导出代码应该怎样写,而不用死记硬背 1.2 电路的组成部分 1.2.1 74HC573锁存器 原理图: ​​​​​​​…

Claude的奇妙之旅:一起探索人工智能的无限可能

是一款由Anthropic公司开发的人工智能应用,可以在Slack中使用。可以理解和生成自然语言,帮助用户完成各种任务,如写小说、编写代码、解释概念等。的特点是: - 是免费的,不需要申请或下载,只需要在Slack中添…

网络安全合规-OKR和KPI

首先我们还是要区分OKR和KPI的关系区别: 我们可以从几个方面来看两者的差别: 第一,从核心驱动上区分 KPI 以考核为核心驱动;OKR 以成果为核心驱动。 KPI :就是把工作“量化成数据”,当成个人的考核标准&…

若依框架讲解后端利用DefaultKaptcha生成验证码及校验

pom文件中引入DefaultKaptcha的依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency>Kaptcha 是一个可高度配置的实用验证码生成工具&#xff0c;…

个人 [Raft项目] 记一次内存泄漏排查

1 .发现过程 笔者在一步一步写Raft协议, 在可以跑了一天后,发现Leader节点的内存使用量缓慢上涨, 且手动执行GC后也没达到预期水平线 Leader节点内存情况 在对Java有深入了解的读者其实是可以理解内存使用量的产生 笔者的测试用例是: 启动四个节点,查看一天后的内存攀升, Le…

大专生,本科生,正在成为求职市场最尴尬的存在-我反对此言论,因为高成本,低科技,低利润产业将是中国未来五十年的主要特点

有很多视觉人机器视觉粉丝咨询我,我大专生可以学机器视觉开发吗? 我这里回答下:可以,你要自信点,下三年苦功夫,去学习,去专研,去找一个好点公司平台或者好点的培训机构。 学历不是评价一个人的唯一标准,但是它一直是社会对个人综合素质和知识储备的一种重要衡量标准…

卡尔曼滤波器-公式简单推导 | 原理分析 | 将卡尔曼滤波器在MatLab中简单实现

目录 1.状态转移2.协方差矩阵3.噪声协方差矩阵的传递4.观测矩阵5.状态更新6.噪声协方差矩阵的更新7.在MatLab中实现卡尔曼滤波器1.状态转移 卡尔曼滤波器又称为最佳线性滤波器。优点有实现简单、纯时域滤波器、不需要进行频域变换等。 假设有一辆汽车在路上行驶,用位置和速度…