本文主要是介绍3D 生成重建005-NeRF席卷3D的表达形式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
3D生成重建005-NeRF席卷3D的表达形式
文章目录
- 0 论文工作
- 1 论文方法
- 1.1 体渲染
- 1.2 离散积分
- 1.3位置编码
- 1.4分层采样
- 1.5 影响
- 2 效果
0 论文工作
NeRF(神经辐射场技术)最早2020年提出用于新视图合成任务,并在这个领域取得了优秀的效果。如下图所示,受到体渲染的启发,论文通过已知的一组相机参数对物体进行图像采集,然后通过这组图像去训练一个MLP,MLP训练好之后能合成新视图的图像,且合成质量很高。
参考
NeRF: Representing Scenes as Neural Radiance Fields for View Synthes
1 论文方法
虽然我们的输入是图像,但是实际上nerf的基本原理是在射线的层次进行。下图是相机成像的简化原理,主要包括相机光心(小孔),物体,图像平面和虚平面。nerf的相关原理都是在光心,虚平面和3d物体之间展开。
通过若干已知相机参数对一个物体进行多角度的图像采集后,得到物体环绕一周的密集视图。借助相机将图像拆分成若干条射线进行训练。如下图,以相机中心O通过虚平面想某一像素位置发出的光线为例。训练一个MLP,输入空间点的位置(x,y,z)和相机信息 ( θ 和 ϕ ) (\theta 和\phi) (θ和ϕ)去预测他的密度和颜色 ( σ , R G B ) (\sigma,RGB) (σ,RGB),通过积分的形式用光线上点的 ( σ , R G B ) (\sigma,RGB) (σ,RGB)预预测虚平面上该位置的RGB,然后通过对比损失去优化MLP。简化成 F θ ( X , d ) = ( c , σ ) F_{\theta}(X,d)=(c,\sigma) Fθ(X,d)=(c,σ)输入体空间中任意一点的位置和光线的方向,去预测他的颜色c和密度 σ \sigma σ。
1.1 体渲染
其中 σ x \sigma_{x} σx表示光线在位置为x的例子处终止的概率,也可以叫密度或者不透明度。光线r的颜色表示为 C r C_r Cr,光线表示为 r ( t ) = O + t d r(t)=O+td r(t)=O+td,O表示相机光心,t表示步长,d表示光线的方向,用 t n 和 t f t_n和t_f tn和tf表示体渲染的边界。那么这条光线的颜色可以表示为 C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d ) ) d t C(r)=\int_{t_n}^{t_f}T(t)\sigma(r(t))c(r(t),d))dt C(r)=∫tntfT(t)σ(r(t))c(r(t),d))dt
上面的公式主要包含了3项其中 σ ( r ( t ) , c ( r ( t ) , d ) \sigma(r(t),c(r(t),d) σ(r(t),c(r(t),d)分别表示位置t处的密度和颜色, T ( t ) = e x p ( − ∫ t n t σ ( r ( s ) ) d s ) T(t)=exp(-\int_{t_n}^t\sigma(r(s))ds) T(t)=exp(−∫tntσ(r(s))ds)表示前面所有点的累计投射率,即光线穿过前面的所有点的概率。
整体的表达就是,光线的颜色等于每一点处累积透射率和终止率和颜色的积分。
显然当点x是连续的时候,这个积分的计算是很困难的,因此下面使用离散积分的情况。
1.2 离散积分
现在把 [ t n , t f ] [t_n,t_f] [tn,tf]N等分那么ti表示一个区间内的点 t i t_i ti~ u [ t n + i − 1 N ( t f − t n ) , t n + i N ( t f − t n ) ] u[t_n+\frac{i-1}{N}(t_f-t_n),t_n+\frac{i}{N}(t_f-t_n)] u[tn+Ni−1(tf−tn),tn+Ni(tf−tn)]
那么体渲染的积分方程变为 C ( r ) ^ = ∑ i = 1 N T i ( 1 − e x p ( − σ i δ i ) ) c i 其中 T i = e x p ( − ∑ j = 1 i − 1 σ j δ j ) \hat{C(r)}=\sum_{i=1}^{N}T_i(1-exp(-\sigma_i\delta_i))c_i 其中T_i=exp(-\sum_{j=1}^{i-1}\sigma_j\delta_j) C(r)^=i=1∑NTi(1−exp(−σiδi))ci其中Ti=exp(−j=1∑i−1σjδj)
上面 的式子中 δ i = t i + 1 − t i \delta_i=t_{i+1}-t_i δi=ti+1−ti表示间距。 1 − e x p ( − σ i δ i ) 1-exp(-\sigma_i\delta_i) 1−exp(−σiδi)等价于原来的 σ \sigma σ。
整体上相当于把积分变成每个bin区间的和了。
1.3位置编码
因为MLP在预测xyz这种位置相关的问题时表示高频信息的能力较差,因此通过位置表明的形式将输入转换为高频信息。
γ ( p ) = ( s i n ( 2 0 π p ) , c o s ( 2 0 π p ) . . . s i n ( 2 L − 1 π p ) , c o s ( 2 L − 1 π p ) ) \gamma(p)=(sin(2^0\pi p),cos(2^0\pi p)...sin(2^{L-1}\pi p),cos(2^{L-1}\pi p)) γ(p)=(sin(20πp),cos(20πp)...sin(2L−1πp),cos(2L−1πp))
对于x来说L=10,对于d来说L=4
1.4分层采样
因为遮挡和空白区域也会产生大量计算,论文使用Hierarchical volume sampling,采用由粗到细的策略,根据粗网络的结果,在细网络中很具重要程度进行采样。改写的公式为
C ( r ) ^ = ∑ i = 1 N c w i c i , 其中 w i = T i ( 1 − e x p ( − σ i δ i ) ) \hat{C(r)}=\sum_{i=1}^{N_c}w_ic_i,其中w_i=T_i(1-exp(-\sigma_i\delta_i)) C(r)^=i=1∑Ncwici,其中wi=Ti(1−exp(−σiδi))
重要程度用 w ^ = w i ∑ j = 1 N c w j \hat w=\frac{w_i}{\sum_{j=1}^{N_c}w_j} w^=∑j=1Ncwjwi表示。
1.5 影响
后续研究者对nerf的渲染速度训练速度和质量进行优化,使得nerf逐渐成为一种很重要的3d表达形式。
2 效果
这篇关于3D 生成重建005-NeRF席卷3D的表达形式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!