NeRF神经辐射场论文记录(一)

author:张一极

date:20231215 20:17

论文地址:https://arxiv.org/pdf/2003.08934.pdf

论文使用了一个简单的MLP网络结构,实现了输入是简单的多视角视图的视觉重建,通过稀疏的输入视角,去连续的拟合出了在特定光线条件下的图像变化。

image-20231216123013269

概述:

模型的输入是5D的坐标(x,y,z,θ,ϕ),分别代表了相机沿着某一条射线的坐标值(x,y,z),以及相机姿态观望角参数(θ,ϕ),通过图a和图b之间的F(多层MLP),输出某个坐标点和相机参数下的(RGBσ),其中RGB是这个点的颜色,σ是对应点的透光率,有了这个数据,可以通过连续输出当前视角所有点的颜色和透光率信息,渲染出二维新视角的图像,由于渲染过程可微分,且有groundtruth可以进行差异衡量,所以可以进行训练优化。

细节:

采用8个全连接层去处理相机坐标[x,y,z],输出的是透光率σ,以及一个256维的向量A,把A作为输入,拼接上相机视角参数[θ,ϕ],送到新的一个全联接层输出这个视角下的预计颜色。

神经辐射场将场景表示为,空间中任意一点的体积密度(透光率),以及对应的光线发射角度。

体积密度:光线到达某一点处,碰撞到其他粒子的概率,如果概率为0则透光率为100%,概率为1则透光率为0。

颜色的推导

假设具有远近边界的一个有限集合内,存在边界tn,tf,o为原点,t为距离,d为光线射出视角,则我们可以用rt=o+td,来表达任意一点的光线,我们用Cr来表达这一点的颜色,则Cr推导如下:

C(r)=tntfT(t)σ(r(t))c(r(t),d)dt,whereT(t)=exp(tntσ(r(s))ds)

积分内部的影响因子,分别是:

T(t) :代表的是从tn到t位置对透光率进行概率累积,加负号的原因是理论上而言,距离越长,光传播过程中没有被其他粒子击中的概率就越低,整体趋势成指数型衰减。

σ(x):The volume density σ(x) can be interpreted as the differential probability of a ray terminating at an infinitesimal particle at location x.即透光率(体积密度)。

C(r(t),d)代表的是t位置的颜色

image-20231216132356019

view1转动到view2的视角下,两个像素点的颜色变化情况就是图c的两个点(绿色点对应绿色点,红色点对应红色点),通过采样第一张图的红色点和第二张图的红色点,用模型拟合出两个视角红色点中间未采样部分的颜色变化,用来生成中间视角的颜色。

为了求出颜色具体数值,我们需要对积分进行数值估计,论文中采用分层均匀抽样,抽取的样本为ti,其中tiU[tn+i1N(tftn),tn+iN(tftn)]

为了进一步简化计算,通过求积规则进行积分期望的计算,

C^(r)=i=1NTi(1exp(σiδi))ci,whereTi=exp(j=1i1σjδj)

这样的转变中影响因子其实没变,依旧是:

1.累积散射率:Ti

2.αi=1exp(σiδi:公式中的 1exp(σiδi) 表示的是第 i 个样本的不透明度(alpha值)。这里的 σi 是第 i 个样本的散射系数, δi 是相邻两个样本之间的距离。

为什么会有这样的公式, 需要从光线传输和体积渲染的基本原理说起。在计算机图形学中, 光线传输方程 (Radiance Transfer Equation, RTE) 描述了光线在场景中传播时如何与物质相互作用。在体积渲染中, 我们关心的是光线通过一个体积密度不均匀的介质时的辐射度。

当我们用蒙特卡罗方法进行光线追踪时, 通常会用到这样的策略:光线每前进一步, 都会有一定概率被介质中的粒子散射。这个概率通常由 σiδi 决定, 其中 σi 是散射系数, 描述了介质对光线的散射能力; δi 是光线在介质中的前进距离。

因此, αi=1exp(σiδi) 实际上是在计算光线在前进距离为 δi 时, 被介质中的粒子散射的概率。当 σiδi 趋近于 0 时, αi 接近于 0 , 表示光线几乎不发生散射,也就是不会击中其他粒子; 当 σiδi 增大时, αi 接近于 1 , 表示光线有很大概率被散射,大概率会击中其他粒子而发生变化。

所以简化αi=1exp(σiδi),代入期望计算:

image-20231216133930103

3.Ci,i位置的颜色

最终的期望:

C^(r)=i=1NTiαici,whereTi=exp(j=1i1σjδj)