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 效果