本文主要是介绍马普所Nerf新作《TensoRF》阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链接:
- Arxiv链接:https://arxiv.org/pdf/2203.09517.pdf
- 主页链接:https://apchenstu.github.io/TensoRF/
- 代码链接:https://github.com/apchenstu/TensoRF
视频:
TensoRF: Tensorial Radiance Fields
作者是上科大虞老师学生陈安沛,现在德国马普所AG组做博士后,非常优秀的一篇nerf文章。
创新点:
本文提出了一种nerf重建与表达的新范式,核心思想是将单个4D神经辐射场利用张量分解技术,使用多个紧凑的因子化的低秩张量组件来重建,即下图:
左边是场景,右边是用了一些低秩张量组件来描述左边场景的外观(RGB)与几何变化( σ \sigma σ),XYZ每个维度都存在一组matrix和vector,体积密度( σ \sigma σ)和颜色(RGB)可以通过计算matrix与vector的外积(outer product)得到,这么做的好处是极大的提升了重建效率(训练时间)与效果(PSNR),降低了存储成本(模型存储大小),如下图:
方法:
- 分解方式:
首先,本文提出了两种分解方式(如下图):
- CP分解:将场景张量T分解为多个向量外积的和, τ = ∑ r = 1 R V r 1 ∘ V r 2 ∘ V r 3 \newline \tau=\sum_{r=1}^{R}V_r^1\circ V_r^2\circ V_r^3 τ=∑r=1RVr1∘Vr2∘Vr3, τ ∈ R I × J × K \tau\in\R^{I\times J\times K} τ∈RI×J×K
- VM分解:将场景张量T分解为多个向量-矩阵外积的和, τ = ∑ r = 1 R 1 V r 1 ∘ M r 2 , 3 + ∑ r = 1 R 2 V r 2 ∘ M r 1 , 3 + ∑ r = 1 R 3 V r 3 ∘ M r 1 , 2 \newline \tau=\sum_{r=1}^{R_1}V_r^1\circ M_r^{2, 3} + \sum_{r=1}^{R_2}V_r^2\circ M_r^{1,3}+\sum_{r=1}^{R_3}V_r^3\circ M_r^{1,2} τ=∑r=1R1Vr1∘Mr2,3+∑r=1R2Vr2∘Mr1,3+∑r=1R3Vr3∘Mr1,2, 其中 M r 2 , 3 ∈ R J × K M_r^{2,3}\in \R^{J\times K} Mr2,3∈RJ×K, M r 1 , 3 ∈ R I × K M_r^{1,3}\in \R^{I\times K} Mr1,3∈RI×K, M r 1 , 2 ∈ R I × J M_r^{1,2}\in \R^{I\times J} Mr1,2∈RI×J
- 训练框架:
- 首先输入是
实验指标:
总结
这篇工作还有个好处,就是不像同期工作Plenoxels和Instant-ngp需要定制化的cuda kernel,代码完全基于标准的pytorch编写,省去了很多编译以及部署时的潜在麻烦。
这篇关于马普所Nerf新作《TensoRF》阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!