赞
踩
稀疏体素网格,每个体素(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的信息,返回渲染的2D图片的信息。Plenoxels认为这才是NeRF 能work的原因,而不是神经网络。在NeRF中,神经网络输出了射线上的每点的颜色c = (r, g, b)和密度(σ)。然后利用该方程进行体积渲染。
上图体积渲染方程中的T(t)代表从tn到t的累计透明度,是一种光线从tn到t不撞到其他粒子的概率。
sigma——透明度,取值范围根据文献2似乎是0-100%。不过这里的透明度应该和2D里面的不太一样。在NeRF中,sigma被直接叫作volume density,指这一点体素颜色的密度。
通过对渲染图片和真实图片(标签),得到mse和正则化损失,以体素的不透明度和球谐系数为优化目标。由于mse和正则化损失对优化目标是解析可导,因此可以方便的用SGD等办法优化。
在Plenoxels中,最终问题归结到一个传统的优化问题,优化的参数都是有明确的物理含义的。
神经网络的参数则具有一定的不可解释性,并且速度也更慢。
在Plenoxels的源码实现中,对loss采用了cuda编程,这方面可以学习一下。另外,在windows上pip install .很长时间不反应,应该需要安装nijia。
希望各位批评指正,我不是搞计算机的,是搞力学问题的。我希望能把人工智能应用在力学问题的解决上。
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。