《Global illumination with radiance regression functions》

news2024/11/28 14:36:48

在这里插入图片描述总结一下最近看的这篇结合神经网络的全局光照论文 这是一篇2013年TOG的论文。

介绍

论文的主要思想是利用了神经网络的非线性特性去拟合全局光照中的间接光照部分,采用了基础的2层MLP去训练,最终能实现一些点光源、glossy材质的光照渲染。为了更好的理解、其输入输出表示如下。

首先是原文的介绍: 4个三维向量:着色点位置 x p x_p xp,间接光照对应视角方向 v v v,点光源位置 l l l,点表面法线 n n n,再加上BRDF附带的albedo等参数 n p n_p np
在这里插入图片描述

我们在拥有了能预测间接光照的模型后,就可以在实时渲染中计算完直接光照后进行叠加即可。
在这里插入图片描述
可以看出最主要的就是如何去训练出这个ML模型。接下去进一步讨论,

训练神经网络

首先是模型的训练损失计算

在这里插入图片描述然后对整个训练模型训练过程的神经网络进行表示
在这里插入图片描述
之后通过最小化 E ( w ) E(w) E(w)进行训练

作者指出,在理论上一层的隐藏层神经网络可以拟合连续的方程,而由于间接光照s+包含了较多峰谷,两层能更好的拟合少量的这样节点,所以理论上都是可以实现,只是会增加神经网络参数或层数,太大的话不好训练。

渲染

渲染阶段主要通过将每个像素的相应值传入神经网络计算间接光照再和计算的直接光照相加。

其中 a ( x p ) a(x_p) a(xp) n ( x p ) n(x_p) n(xp)可以从渲染管线中获得(g-buffer),然后为了神经网络更好的训练减少不必要的参数。这两个加上的参数,作者认为很有用所以也做了消融实验
在这里插入图片描述
a是ground truth, b是两个都加,c只有albedo,d都没加, 看到b 和a十分的效果十分的接近。

考虑场景复杂性

另外考虑到场景的复杂性,用kd-tree对数据点降维然后进行了划分,让尽可能相似的点在一起,然后训练一个共用的RRF神经网络。其中为了防止不同RRF之间的非连续性还将对应的box扩大了10%
在这里插入图片描述
考虑到划分轴选择的问题,最佳分裂轴是在 ν 的子节点上产生最小训练和预测误差的轴,暴力或者随机的遍历所有轴选取即可。

实验表现

在这里插入图片描述
其中RRF的效果能达到30-60多帧的效果,在当年某些场景还算可以。但当场景几何复杂了,就像Plant一样,RRF的难学习到其中的共性,自然就慢。

跟训练集的大小也有关系,训练集越大效果越好
在这里插入图片描述
可以对glossy的材质进行渲染,就像下面的墙面
在这里插入图片描述

总的来说,当年选用的两层简单的MLP效果还是有很大的局限,场景一大稍微一复杂就无法有效拟合了,并且推理的时间也相当的慢,光照如果变化的剧烈也一样,另外场景也是不能变动的,动了预测的肯定就不准了,毕竟是用训练数据训练的网络。

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

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

相关文章

【POI的如何做大文件的写入】

🔓POI如何做大文件的写入 🏆文件和POI之间的区别是什么?🏆POI对于当今的社会发展有何重要性?🏆POI大文件的写入🎖️使用XSSF写入文件🎖️使用SXSSFWorkbook写入文件🎖️对…

《ThreadLocal使用与学习总结:2023-12-15》由浅入深全面解析ThreadLocal

由浅入深全面解析ThreadLocal 目录 由浅入深全面解析ThreadLocal简介基本使用ThreadLocal与synchronized的区别ThreadLocal现在的设计(JDK1.8)ThreadLocal核心方法源码分析ThreadLocalMap源码分析弱引用与内存泄露(内存泄漏和弱引用没有直接关…

代码随想录算法训练营第十四天 | 二叉树理论基础、递归遍历 、迭代遍历、统一迭代

今天学习内容:二叉树理论基础、递归遍历 、迭代遍历、统一迭代 讲解:代码随想录 二叉树题目思维导图如下,来自代码随想录。 1.二叉树理论基础 1.1二叉树种类 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 C中map、set、multimap&…

[Verilog] Verilog 操作符与表达式

主页: 元存储博客 文章目录 前言1. 操作符2. 操作数3 表达式总结 前言 1. 操作符 图片来源: https://www.runoob.com/ Verilog语言中使用的操作符包括: 算术操作符:加法()、减法(-)、乘法(*)、除法(/)、取模(%)、自增()、自减(–…

Vue中插槽的使用

目录 一、默认插槽 (1)概念 (2)代码展示 (3)后备内容 二、具名插槽 (1)概念 (2)代码展示 三、作用域插槽 (1)概念 &#xff0…

【经典LeetCode算法题目专栏分类】【第2期】组合与排列问题系列

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 组合总和1 class So…

【计算机组成原理】存储系统基本概念与基本组成

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

FRP内网映射家用服务器至公网访问

兄弟们,服务器到货了,后续与大家分享内容就用它了。我预装的操作系统是Centos8,首先要解决的是远程访问的问题。 【特别注意】下述的端口,记得在阿里云安全组配置中放开端口入规则!! 1. FRP服务器配置 之前我有购买…

UDP多人聊天室

讲解的是TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 UDP通信 主要的方向是一对多通信方式 UDP通信就是一下子可以通信多个对象,这就是UDP对比TCP的优势,UDP它的原理呢 就是…

Spring之容器:IOC(1)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

破译模式:模式识别在计算机视觉中的作用

一、介绍 在当代数字领域,计算机视觉中的模式识别是关键的基石,推动着众多技术进步和应用。本文探讨了计算机视觉中模式识别的本质、方法、应用、挑战和未来趋势。通过使机器能够识别和解释视觉数据中的模式,模式识别不仅推动了计算机视觉领域…

什么是回调函数

需求 A,B两个小组开发一个功能。B小组开发制作油条模块:make_youtiao。A小组需要调用B小组开发的模块,然后执行后续的操作:sell()如下图: 上面的方式A小组必须等待B小组开发的模块make_youtiao执行完成后才能执行sell()。 上图代…

JVM-2-对象

对象创建 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 为对象分配空间…

linux性能优化-cpu使用率

文章目录 1.CPU使用率2.节拍率的概念2.1.查看系统节拍率2.2.用户节拍率2.3.CPU使用率公式 3.怎么查看CPU使用率3.1.top显示系统总体CPU使用情况3.2.pidstat分析每个进程CPU使用情况 4.CPU使用率过高怎么办4.1.perf命令详解 1.CPU使用率 用什么指标来描述系统的CPU性能呢?不是…

SpringData JPA 整合Springboot

1.导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0…

Oracle 透明网关安装

Oracle 11g透明网关连接Sqlserver oracle 透明网关是oracle连接异构数据库提供的一种技术。通过Gateway&#xff0c;可以在Oracle里透明的访问其他不同的数据库&#xff0c;如SQL Server, DB2, Sybase等等&#xff0c;就像远程Oracle数据库一样。配置后的sql查询的处理流程&…

架构设计系列之基础设施能力建设

周末聊两句&#xff1a; 今天将的基础设施能力建设部分&#xff0c;一般的架构书籍中都不存在的部分&#xff0c;这是我在实践过程中的经验和能力总结部分&#xff0c;希望和大家有一个很好的交流自从在 WeChat 中开了订阅号的两周半的时间&#xff0c;非常感谢大家的支持&…

Spring Boot 3 整合 Hutool 验证码实战

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

中通单号查询,中通快递物流查询,对需要的单号进行备注

批量查询中通快递单号的物流信息&#xff0c;对需要的单号进行备注。 所需工具&#xff1a; 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界面左上角的“…

vite原理

一、依赖预构建 1、为什么需要依赖预构建 CommonJS和UMD兼容性 在开发阶段中&#xff0c;vite的开发服务器将所有的代码视为原生ES模块。因此&#xff0c;vite必须先将作为CommonJS或者UMD发布的依赖项转换为ESM。 这是vite的一个特色&#xff0c;也是为什么会相对于webpack比…