当前位置:   article > 正文

详解NeRF(神经辐射场)算法原理与相关数学推导_基于神经辐射场和体绘制渲染任意角度图像的原理

基于神经辐射场和体绘制渲染任意角度图像的原理

论文链接:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

一、任务

  渲染出同一场景不同视角下的的图像。

二、方法

  根据同一场景的若干张不同视角的图片,重构出这个场景的3D表示,在推理的时候就可以根据输入的视角,合成该视角下的图像。
在这里插入图片描述

三、输入和输出

  输入:同一场景的若干张不同视角的照片
  输出:该场景在新视角下的图像

四、思路

  多视角生成有很多方法,例如使用图形学中的方法,根据已有的图片,推理出场景中光源位置、强度,场景中物体的几何属性,物体材质的特性(反射率,折射率)等,整个建模难度会变得很大。
在这里插入图片描述

  NeRF没有这么做,而是采用了体渲染的建模方法。

五、体渲染

  体渲染属于整个渲染技术的分支,它的目的主要是为了解决云、烟、果冻这类非刚性物体的渲染建模,可以简单理解为是为了处理密度较小的非固体的渲染。当然进一步推广到固体的渲染也说的通,而 NeRF 也是这样做的。
  为了建模这种非刚性物体的渲染,体渲染把气体等物质抽象成一团飘忽不定的粒子群。光线在穿过这类物体时,其实就是光子在跟粒子发生碰撞的过程。
在这里插入图片描述

  核心思想:把物体看作一团可以自发光的粒子,这些粒子具有颜色C,密度σ两个属性。使用现有的照片对体空间内粒子的密度和颜色进行预测,保存这些信息。在渲染其他视角时,使用这些信息(粒子的密度,颜色)进行推理,就能得到新视角下该场景的照片。
  因此NeRF要解决的问题就两个:
  1. 如何通过现有的照片得到空间中密度与颜色的分布。
  2. 如何利用这些数据,得到任意角度的照片。

六、照片上像素点的颜色如何形成?

  先解决问题2,如何在已知空间中粒子密度与每个粒子颜色的情况下,计算从某个角度看过去的颜色?
  从某一点看过去,这一点的颜色应该由达到这一点的光线上累积的颜色决定,如下图:(想象每条光线是由一个个小球组成的,最终这些小球都打到像素上形成该点在这个视角下的颜色)
在这里插入图片描述

  用数学语言描述就是:
在这里插入图片描述

  其中,σ(s)表示s处的密度;C(s)表示s处的颜色值;沿着视线的方向,前面的粒子密度大的话可能会阻挡后面的粒子对最终颜色的贡献,因此,积分时需乘以T(s),T(s)表示透明度,或者当前粒子的可见程度,T(s)是σ(s)的一个表达式。

七、如何利用现有照片预测空间中每一处的密度与颜色的分布?

  NeRF中构建了一个神经网络F(θ),输入为当前照片中,每个像素点看过来的角度,以及射线上采样点的坐标;输出为采样点上的颜色与密度。利用上面的公式,通过预测的颜色C’,使用MSE(C’-C)作为损失进行训练。
在这里插入图片描述

  这里要注意一点,一个采样点的密度只跟空间坐标有关,但它的颜色是与观察角度有关的,因为要考虑到高光和阴影的情况。一个物体从不同的角度看过去,高光点与阴影是有变化的。

八、神经网络

  整个网络的输入有两个,一个是粒子在三维空间内的坐标(3维),另一个是视角(3维,单位向量),输出为RGB值与密度值(4维)。

8.1 位置编码

  直接在神经网络中输入坐标与角度信息只有6维数据,训练效果并不好,其原因是输入的信息粒度太粗,可能无法提取到一些比较细微的差别。比如对于同一点,不同角度看过去,这个角度值的变化可能并不大,但是看到的颜色差别很大。
  为了提取到高频信息,需要对输入进行增强。NeRF采用了位置编码的方法,将3维空间位置坐标使用正弦余弦进行编码,增强后输入变为
   ( x , y , z ) = ( x , y , z , s i n ( 2 0 , x ) , s i n ( 2 0 , y ) , s i n ( 2 0 , z ) , c o s ( 2 0 , x ) , c o s ( 2 0 , y ) , c o s ( 2 0 , z ) , s i n ( 2 1 , x ) , s i n ( 2 1 , y ) , s i n ( 2 1 , z ) , c o s ( 2 1 , x ) , c o s ( 2 1 , y ) , c o s ( 2 1 , z ) . . . s i n ( 2 n − 1 , x ) , s i n ( 2 n − 1 , y ) , s i n ( 2 n − 1 , z ) , c o s ( 2 n − 1 , x ) , c o s ( 2 n − 1 , y ) , c o s ( 2 n − 1 , z ) (x,y,z)=(x,y,z,sin(2^0,x),sin(2^0,y),sin(2^0,z),cos(2^0,x),\\cos(2^0,y),cos(2^0,z),sin(2^1,x),sin(2^1,y),sin(2^1,z),cos(2^1,x),\\cos(2^1,y),cos(2^1,z)...sin(2^{n-1},x),sin(2^{n-1},y),sin(2^{n-1},z),\\cos(2^{n-1},x),cos(2^{n-1},y),cos(2^{n-1},z) (x,y,z)=(x,y,z,sin(20,x),sin(20,y),sin(20,z),cos(20,x),cos(20,y),cos(20,z),sin(21,x),sin(21,y),sin(21,z),cos(21,x),cos(21,y),cos(21,z)...sin(2n1,x),sin(2n1,y),sin(2n1,z),cos(2n1,x),cos(2n1,y),cos(2n1,z)
  即输入维度会变为3+n×3×2=6n+3
  在论文中,坐标输入的n=10,最终输入的是63维;
       角度输入的n=4,最终输入是27维。

8.2 网络架构

在这里插入图片描述

  网络架构基本全是全连接层,但这是对密度σ的计算,在计算RGB时,还需要输入观察方向,然后在经过一层128的线性层,输出颜色RGB。

九、相关数学公式推导

  从概率的角度对上述积分公式进行推导:设σ(s)是在s点处,光子撞击粒子(光线被阻碍)的概率密度;C(s)是在s点处粒子发出的颜色;T(s)是在s点之前,光线都没有被阻碍的概率。
T ( S + d s ) = T ( S ) ( 1 − σ ( s ) d s )      [ P ( B ∣ A ) = P ( A ) ⋅ P ( A B ) ] T(S+ds)=T(S)(1-\sigma(s)ds)\ \ \ \ [P(B|A) = P(A) \cdot P(AB)] T(S+ds)=T(S)(1σ(s)ds)    [P(BA)=P(A)P(AB)]

   T ( S + d s ) − T ( S ) = − T ( S ) σ ( s ) d s T(S+ds)-T(S)=-T(S)\sigma(s)ds T(S+ds)T(S)=T(S)σ(s)ds

   d T ( S ) T ( S ) = − σ ( s ) d s \frac{dT(S)}{T(S)} = -\sigma(s)ds T(S)dT(S)=σ(s)ds

   T ( S ) = e − ∫ 0 S σ ( t ) d t T(S)=e^{-\int_0^S\sigma(t)dt} T(S)=e0Sσ(t)dt

   C ^ ( t ) = ∫ 0 ∞ T ( s ) σ ( s ) C ( s ) d s \widehat{C}(t)=\int_0^\infin T(s)\sigma(s)C(s)ds C (t)=0T(s)σ(s)C(s)ds

   其中   T ( S ) = e − ∫ 0 S σ ( t ) d t 其中\ \ T(S)=e^{-\int_0^S\sigma(t)dt} 其中  T(S)=e0Sσ(t)dt

  将整条光路 [0, s] 划分为N个相等间距的区间 [ T n − > T n + 1 T_n->T_n+1 Tn>Tn+1], n = 0 , 1 , . . . N n=0,1,...N n=0,1,...N, 区间的长度为 δ n \delta n δn,假设每个区间内的密度与颜色值一样(常量),为 σ n \sigma _n σn C n C_n Cn,将每个区间的贡献光强进行累积,可以得到光线的颜色。

   C ^ = ∑ n = 1 N I ( T n − > T n + 1 ) \widehat{C}=\sum\limits_{n=1}^{N}I(T_n->T_n+1) C =n=1NI(Tn>Tn+1)

   I ( T n − > T n + 1 ) = ∫ t n t n + 1 σ ( n ) C n T ( t ) d t I(T_n->T_n+1)=\int_{t_n}^{t_{n+1}}\sigma(n)C_nT(t)dt I(Tn>Tn+1)=tntn+1σ(n)CnT(t)dt

           = σ ( n ) C n ∫ t n t n + 1 T ( t ) d t =\sigma(n)C_n\int_{t_n}^{t_{n+1}}T(t)dt =σ(n)Cntntn+1T(t)dt

           = σ ( n ) C n ∫ t n t n + 1 T ( 0 − > t n ) T ( t n − > t ) d t =\sigma(n)C_n\int_{t_n}^{t_{n+1}}T(0->t_n)T(t_n->t)dt =σ(n)Cntntn+1T(0>tn)T(tn>t)dt

           = σ ( n ) C n T ( 0 − > t n ) ∫ t n t n + 1 T ( t n − > t ) d t =\sigma(n)C_nT(0->t_n)\int_{t_n}^{t_{n+1}}T(t_n->t)dt =σ(n)CnT(0>tn)tntn+1T(tn>t)dt

           = σ ( n ) C n T ( 0 − > t n ) ∫ t n t n + 1 e − ∫ t n t σ n d s d t =\sigma(n)C_nT(0->t_n)\int_{t_n}^{t_{n+1}}e^{-\int_{t_n}^t\sigma_nds}dt =σ(n)CnT(0>tn)tntn+1etntσndsdt

           = σ ( n ) C n T ( 0 − > t n ) ∫ t n t n + 1 e − σ n ( t − t n ) d t =\sigma(n)C_nT(0->t_n)\int_{t_n}^{t_{n+1}}e^{-\sigma_n(t-t_n)}dt =σ(n)CnT(0>tn)tntn+1eσn(ttn)dt

           = σ ( n ) C n T ( 0 − > t n ) − 1 σ n e − σ n ( t − t n ) ∣ t n t n + 1 =\sigma(n)C_nT(0->t_n)-\frac{1}{\sigma_n}e^{-\sigma_n(t-t_n)}|_{t_n}^{t_{n+1}} =σ(n)CnT(0>tn)σn1eσn(ttn)tntn+1

           = σ ( n ) C n T ( 0 − > t n ) ( 1 − e − σ n δ n ) =\sigma(n)C_nT(0->t_n)(1-e^{-\sigma_n\delta_n}) =σ(n)CnT(0>tn)(1eσnδn)

           = σ ( n ) C n T ( 0 − > t n ) ( 1 − e − σ n δ n ) =\sigma(n)C_nT(0->t_n)(1-e^{-\sigma_n\delta_n}) =σ(n)CnT(0>tn)(1eσnδn)

因为:
   T ( 0 − > t n ) = e − ∫ 0 t n σ ( t ) d t = e ∑ i = 0 n σ i δ i T(0->t_n)=e^{-\int_0^{t_n}\sigma(t)dt}=e^{\sum_{i=0}^{n}\sigma_i\delta_i} T(0>tn)=e0tnσ(t)dt=ei=0nσiδi

令:
   α n = 1 − e − σ n δ n \alpha_n=1-e^{-\sigma_n\delta_n} αn=1eσnδn

有:
   I ( T n − > T n + 1 ) = C n α n ( 1 − α 0 ) ( 1 − α 1 ) . . . . . . ( 1 − α n − 1 ) I(T_n->T_{n+1})=C_n\alpha_n(1-\alpha_0)(1-\alpha_1)......(1-\alpha_{n-1}) I(Tn>Tn+1)=Cnαn(1α0)(1α1)......(1αn1)
          C ^ = C 0 α 0 + C 1 α 1 ( 1 − α 0 ) + C 2 α 2 ( 1 − α 0 ) ( 1 − α 1 ) + . . . + C n α n ( 1 − α 0 ) ( 1 − α 1 ) . . . ( 1 − α n − 1 ) ) \widehat{C}=C_0\alpha_0+C_1\alpha_1(1-\alpha_0)+C_2\alpha_2(1-\alpha_0)(1-\alpha_1)+...+C_n\alpha_n(1-\alpha_0)(1-\alpha_1)...(1-\alpha_{n-1})) C =C0α0+C1α1(1α0)+C2α2(1α0)(1α1)+...+Cnαn(1α0)(1α1)...(1αn1))

  其中, α n \alpha_n αn也可以看做是第 n n n点的不透明度,当前面粒子的不透明度都很小时,后面的粒子才能被看见。

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

闽ICP备14008679号