当前位置:   article > 正文

从NeRF到Plenoxels学习 透明度 体积渲染方程_球谐函数 nerf

球谐函数 nerf

Plenoxels :Method


稀疏体素网格,每个体素(voxel corner就是voxel,他这里写的容易让人误解成体元的顶点)对每个色彩通道储存一个透明度标量sigma,以及一个球谐函数向量(9个元素)。共三个色彩通道,所以一个体素会需要27个球谐函数向量。
NeRF当中,是没有稀疏网格的概念的。在这里P提出的这个办法和等几何分析里面背景网格法有某些相似的地方
球谐函数,指球坐标拉普拉斯方程角度解——回顾《数理方程》中的分离变量法:
https://zh.wikipedia.org/wiki/%E7%90%83%E8%B0%90%E5%87%BD%E6%95%B0
在这里插入图片描述这就是球谐函数,应该是将函数的值可视化的展示在一个球面上(因为球谐函数只与角度有关,而与r无关,因此所选球的大小不会影响球谐函数在球面上的分布情况)

Plenoxels借助NeRF的地方就在体积渲染方程。这个方程的作用就是进行3D渲染。输入体素信息,输出像素信息。

3D渲染是计算机从3D场景(多边形,材质和光照)中获取原始信息并计算最终结果的过程。输出通常是单个图像或一起渲染和编译的一系列图像。

回到NeRF,了解体积渲染方程

在这里插入图片描述这个方程的核心意思就是输入3D的信息,返回渲染的2D图片的信息。Plenoxels认为这才是NeRF 能work的原因,而不是神经网络。在NeRF中,神经网络输出了射线上的每点的颜色c = (r, g, b)和密度(σ)。然后利用该方程进行体积渲染。

上图体积渲染方程中的T(t)代表从tn到t的累计透明度,是一种光线从tn到t不撞到其他粒子的概率

sigma——透明度,取值范围根据文献2似乎是0-100%。不过这里的透明度应该和2D里面的不太一样。在NeRF中,sigma被直接叫作volume density,指这一点体素颜色的密度。

实际应用的体积渲染方程离散版本

在这里插入图片描述

Plenoxels的损失函数

通过对渲染图片和真实图片(标签),得到mse和正则化损失,以体素的不透明度和球谐系数为优化目标。由于mse和正则化损失对优化目标是解析可导,因此可以方便的用SGD等办法优化。
在Plenoxels中,最终问题归结到一个传统的优化问题,优化的参数都是有明确的物理含义的。
神经网络的参数则具有一定的不可解释性,并且速度也更慢。

源码实现

在Plenoxels的源码实现中,对loss采用了cuda编程,这方面可以学习一下。另外,在windows上pip install .很长时间不反应,应该需要安装nijia。

篇后语

希望各位批评指正,我不是搞计算机的,是搞力学问题的。我希望能把人工智能应用在力学问题的解决上。

本人github

https://github.com/BraveDrXuTF
如果本文对你有帮助,希望各位访问一下我的github,看看里面有咩有什么有用的东西,点个星星,fork,关注吧!我生产的各类代码也会及时放上去的!
参考:
1.https://mp.weixin.qq.com/s/11oDFIc7QiQ8fEDRCTbOzA
2.https://www.jianshu.com/p/757ed62e6a16
3.https://www.zhihu.com/question/303803004/answer/1788714083
4.详细介绍NeRF
https://zhuanlan.zhihu.com/p/360365941

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/126560
推荐阅读
  

闽ICP备14008679号