NeRF神经辐射场学习笔记(六)— NeRF++论文要点解读
声明
本人书写本系列博客目的是为了记录我学习三维重建领域相关知识的过程和心得,不涉及任何商业意图,欢迎互相交流,批评指正。
论文概述
NeRF++属于是对NeRF的更深理解和延伸,该文章首先讨论了几何-辐射模糊性(shape-radiance ambiguity)这一现象,并且分析了NeRF对于避免该现象的成功之处;接下来,NeRF++提出了一种参数化方法——反球面参数化(inverted sphere parameterization)来应对360度大规模无界3D场景的渲染,并取得了良好的效果。
几何-辐射模糊性(shape-radiance ambiguity)
几何-辐射模糊性(shape-radiance ambiguity)指的是一种现象:即在缺少正则化处理的情况下,本应该出现结果退化(degenerate solution,不同的shape在训练时都可以得到良好的表现,但是在测试时效果会明显退化)的情况。但是NeRF却避免了这种情况的发生,所以文章分析了NeRF在处理几何-辐射模糊性的成功之处。
首先,文章进行了一种符合输入图像的有效NeRF重建,将NeRF的不透明度场(opacity field)固定在单位球面上为1,在其他地方为0。然后,对于每个训练图像中的每个像素,我们将穿过该像素的光线与球面相交,并定义交点处(以及沿光线方向)的辐射度值为该像素的颜色。而下图则很好地展示了这种模糊现象(左边两图是训练数据的结果,右边两图是预测数据的结果):
NeRF对这种现象的成功避免,文章给出了解释:NeRF特殊的MLP网络结构不对称地处理着位置信息
x
\pmb{x}
xx和方向信息
d
\pmb{d}
dd,
d
\pmb{d}
dd被注入到靠近MLP末端的网络中,这意味着在渲染场景时涉及的MLP参数和非线性激活更少。并且相比于
x
\pmb{x}
xx的位置编码,
d
\pmb{d}
dd的傅里叶特征(位置编码函数中的L)仅由较低频分量组成,即对于一个固定的
x
\pmb{x}
xx,辐射度
c
(
x
,
d
)
\pmb{c}(\pmb{x}, \pmb{d})
cc(xx,dd)对
d
\pmb{d}
dd有有限的表示性。
反球面参数化(inverted sphere parameterization)
文章针对360度的无界场景的渲染情况给出了一种反球面参数化的解决方法,即把场景空间划分为两部分——一个内部单位球体(an inner unit sphere)和一个外部反向球体(an outer volume represented by an inverted sphere covering the complement of the inner volume),其中内球体包含前景(foreground)和所有摄像机,外球体包含场景内的其余部分。这两部分是用不同的NeRF独立建模的,内球体的NeRF与传统的NeRF一致,对于外球体的NeRF,我们应用了反球面参数化的解决方法。
一个处在外球体的3D点
(
x
,
y
,
z
)
,
r
=
x
2
+
y
2
+
z
2
>
1
(x,y,z), r=\sqrt{x^2+y^2+z^2}>1
(x,y,z),r=x2+y2+z2>1可以参数化为一个四元参数(quadruple)——
(
x
′
,
y
′
,
z
′
,
1
/
r
)
,
x
′
2
+
y
′
2
+
z
′
2
=
1
(x', y', z', 1/r), x'^2+y'^2+z'^2=1
(x′,y′,z′,1/r),x′2+y′2+z′2=1,其中
(
x
′
,
y
′
,
z
′
)
(x', y', z')
(x′,y′,z′)是与
(
x
,
y
,
z
)
(x,y,z)
(x,y,z)相同方向的单位向量,表示球面上的某一方向,
0
<
1
/
r
<
1
0<1/r<1
0<1/r<1是沿着这个方向的反向半径,指定外球体中的点
r
⋅
(
x
′
,
y
′
,
z
′
)
r·(x',y',z')
r⋅(x′,y′,z′)。不同于欧式空间中物体与原点的距离是无限的,重新参数化的四元组中的所有数都是有界的,即
x
′
,
y
′
,
z
′
∈
[
−
1
,
1
]
,
1
/
r
∈
[
0
,
1
]
x',y',z'\in[-1,1],1/r\in[0,1]
x′,y′,z′∈[−1,1],1/r∈[0,1]。这不仅提高了数值稳定性,而且体现了远距离场景分辨率较低的事实。故可以直接对这个4D有界体素(只有3个自由度)进行光线投射来渲染场景颜色。同时对于光线
r
=
o
+
t
d
\pmb{r}=\pmb{o}+t\pmb{d}
rr=oo+tdd被球体分为了两种表示形式,内球体
t
∈
(
0
,
t
′
)
t\in(0,t')
t∈(0,t′)、外球体
t
∈
(
t
′
,
∞
)
t\in(t',\infty)
t∈(t′,∞)。接着重写颜色公式:
C
(
r
)
=
∫
t
=
0
t
′
σ
(
o
+
t
d
)
⋅
c
(
o
+
t
d
,
d
)
⋅
e
−
∫
s
=
0
t
σ
(
o
+
s
d
)
d
s
d
t
⏟
(
i
)
+
e
−
∫
s
=
0
t
′
σ
(
o
+
s
d
)
d
s
⏟
(
i
i
)
⋅
∫
t
=
t
′
∞
σ
(
o
+
t
d
)
⋅
c
(
o
+
t
d
,
d
)
⋅
e
−
∫
s
=
t
′
t
σ
(
o
+
s
d
)
d
s
d
t
⏟
(
i
i
i
)
\pmb{C}(\pmb{r})=\begin{matrix} \underbrace{\int^{t'}_{t=0}\sigma(\pmb{o}+t\pmb{d})·\pmb{c}(\pmb{o}+t\pmb{d},\pmb{d})·e^{-\int^t_{s=0}\sigma(\pmb{o}+s\pmb{d})ds}dt} \\(i) \end{matrix}\\ +\begin{matrix} \underbrace{e^{-\int^{t'}_{s=0}\sigma(\pmb{o}+s\pmb{d})ds}} \\(ii) \end{matrix}·\begin{matrix} \underbrace{\int^{\infty}_{t=t'}\sigma(\pmb{o}+t\pmb{d})·\pmb{c}(\pmb{o}+t\pmb{d},\pmb{d})·e^{-\int^t_{s=t'}\sigma(\pmb{o}+s\pmb{d})ds}dt} \\(iii) \end{matrix}
CC(rr)=
∫t=0t′σ(oo+tdd)⋅cc(oo+tdd,dd)⋅e−∫s=0tσ(oo+sdd)dsdt(i)+
e−∫s=0t′σ(oo+sdd)ds(ii)⋅
∫t=t′∞σ(oo+tdd)⋅cc(oo+tdd,dd)⋅e−∫s=t′tσ(oo+sdd)dsdt(iii)(i)项和(ii)项在欧式空间中计算——用符号
σ
i
n
(
o
+
t
d
)
\sigma_{in}(\pmb{o}+t\pmb{d})
σin(oo+tdd),
c
i
n
(
o
+
t
d
,
d
)
\pmb{c}_{in}(\pmb{o}+t\pmb{d},\pmb{d})
ccin(oo+tdd,dd),(iii)项用
1
r
\frac{1}{r}
r1当做集成变量(integration variable)在反球面空间中计算——用符号
σ
o
u
t
(
x
′
,
y
′
,
z
′
,
1
/
r
)
\sigma_{out}(x',y',z',1/r)
σout(x′,y′,z′,1/r),
c
o
u
t
(
x
′
,
y
′
,
z
′
,
1
/
r
,
d
)
\pmb{c}_{out}(x',y',z',1/r,\pmb{d})
ccout(x′,y′,z′,1/r,dd)。
为了计算(iii)项,需要先预测在任意
1
/
r
1/r
1/r的
σ
o
u
t
\sigma_{out}
σout,
c
o
u
t
\pmb{c}_{out}
ccout;换句话说就是需要计算指定
1
/
r
1/r
1/r对应的
(
x
′
,
y
′
,
z
′
)
(x',y',z')
(x′,y′,z′)当做输入来得到
σ
o
u
t
\sigma_{out}
σout,
c
o
u
t
\pmb{c}_{out}
ccout。如下图所示,设光线在
a
\pmb{a}
aa点与单位球面相交,与光线对齐的弦的中点为
b
\pmb{b}
bb点。点
a
=
o
+
t
a
d
\pmb{a}=\pmb{o}+t_a\pmb{d}
aa=oo+tadd可以通过计算
∣
o
+
t
a
d
∣
=
1
|\pmb{o}+t_a\pmb{d}|=1
∣oo+tadd∣=1得到,同时点
b
=
o
+
t
b
d
\pmb{b}=\pmb{o}+t_b\pmb{d}
bb=oo+tbdd可以通过计算
d
T
(
o
+
t
b
d
)
=
0
\pmb{d}^T(\pmb{o}+t_b\pmb{d})=0
ddT(oo+tbdd)=0得到。接着为了得到给定
1
/
r
1/r
1/r对应的
(
x
′
,
y
′
,
z
′
)
(x',y',z')
(x′,y′,z′),可以将向量
a
\pmb{a}
aa沿着向量
b
×
d
\pmb{b}\times\pmb{d}
bb×dd旋转角度
w
=
a
r
c
s
i
n
∣
b
∣
−
a
r
c
s
i
n
(
∣
b
∣
⋅
1
r
)
w=arcsin|\pmb{b}|-arcsin(|\pmb{b}|·\frac{1}{r})
w=arcsin∣bb∣−arcsin(∣bb∣⋅r1)。一旦可以从任意
1
/
r
1/r
1/r上预测
σ
o
u
t
\sigma_{out}
σout,
c
o
u
t
\pmb{c}_{out}
ccout后,就可以从区间
[
0
,
1
]
[0,1]
[0,1]中取样有限个点来计算(iii)项。
参考文献和资料
[1]NERF++: ANALYZING AND IMPROVING NEURAL RADIANCE FIELDS分析和改进神经辐射场
[2]NeRF++论文部分解读 为何NeRF如此强大?
[3]NeRF++原文