论文地址:https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2103.13415
源码地址:https://github.com/google/mipnerf
背景知识:图像下采样过程会产生锯齿现象,从信号处理的角度分析:用低频率(低分辨率)的信号来表示(采样)高频率(高分辨率)的信号时,会产生信号的混叠现象。图形学上常用的抗锯齿方法有以下两种:
- 提高采样率,如SSAA/MSAA方法:
SSAA (超采样抗锯齿) 和 MSAA (多重采样抗锯齿) 都是图形学中的抗锯齿方法,用于减少边缘的锯齿状现象。SSAA 是在一个像素内采样多个点,然后对每个点进行着色,最后对所有点的颜色进行平均,得到最终的像素颜色。MSAA 是在一个像素内采样多个点,但只对每个像素进行一次着色,然后根据每个点是否被三角形覆盖来决定是否使用该像素的颜色。SSAA 的优点是效果好,缺点是计算量大,占用内存多。MSAA 的优点是计算量小,占用内存少,缺点是效果不如 SSAA 好。 - 去除高频分量,使用低通滤波器对边缘进行模糊化。
概述
基于神经辐射场的渲染过程中,每个像素仅对应一条渲染射线导致当训练与测试图像尺度不同会引起渲染场景出现模糊与锯齿现象。 增加采样光线(增加采样频率)可以缓解锯齿与模糊现象但同时伴随计算量的剧增,为此Mip-NeRF的将沿射线的渲染过程改进为渲染圆锥体的过程。
模型架构
如图1所示,Mip-NeRF将一个像素点视为一个圆,沿着光心与像素点所在的圆在3维空间中构建一个视锥体,将原始NeRF沿着一条视线进行积分改进为在圆台内的积分过程。视锥体表示为:
F
(
x
,
o
,
d
,
r
˙
,
t
0
,
t
1
)
=
1
{
(
t
0
<
d
T
(
x
−
o
)
∥
d
∥
2
2
<
t
1
)
∧
(
d
T
(
x
−
o
)
∥
d
∥
2
∥
x
−
o
∥
2
>
1
1
+
(
r
˙
/
∥
d
∥
2
)
2
)
}
(1)
\begin{array}{c} \mathrm{F}\left(\mathbf{x}, \mathbf{o}, \mathbf{d}, \dot{r}, t_{0}, t_{1}\right)=\mathbb{1}\left\{\left(t_{0}<\frac{\mathbf{d}^{\mathrm{T}}(\mathbf{x}-\mathbf{o})}{\|\mathbf{d}\|_{2}^{2}}<t_{1}\right)\right. \left.\wedge\left(\frac{\mathbf{d}^{\mathrm{T}}(\mathbf{x}-\mathbf{o})}{\|\mathbf{d}\|_{2}\|\mathbf{x}-\mathbf{o}\|_{2}}>\frac{1}{\sqrt{1+\left(\dot{r} /\|\mathbf{d}\|_{2}\right)^{2}}}\right)\right\} \end{array}\tag{1}
F(x,o,d,r˙,t0,t1)=1{(t0<∥d∥22dT(x−o)<t1)∧(∥d∥2∥x−o∥2dT(x−o)>1+(r˙/∥d∥2)21)}(1)
其中
x
\mathbf{x}
x 为空间点的位置,
o
\mathbf{o}
o 为光心,
d
\mathbf{d}
d 为视线方向,
r
˙
\dot{r}
r˙ 为像素点在像素平面内所代表的圆的半径,
t
0
t_{0}
t0 表示最近采样点,
t
1
t_{1}
t1表示最远采样点。上式表示空间点
x
\mathbf{x}
x 在圆台内时,
F
\mathrm{F}
F 为 1,否则为0;其中
t
0
<
d
T
(
x
−
o
)
∥
d
∥
2
2
<
t
1
t_{0}<\frac{\mathbf{d}^{\mathrm{T}}(\mathbf{x}-\mathbf{o})}{\|\mathbf{d}\|_{2}^{2}}<t_{1}
t0<∥d∥22dT(x−o)<t1 为深度方向的约束,
d
T
(
x
−
o
)
∥
d
∥
2
2
\frac{\mathbf{d}^{\mathrm{T}}(\mathbf{x}-\mathbf{o})}{\|\mathbf{d}\|_{2}^{2}}
∥d∥22dT(x−o) 为
o
x
\mathbf{ox}
ox 在方向
d
\mathbf{d}
d 上的投影模长。其中
d
T
(
x
−
o
)
∥
d
∥
2
∥
x
−
o
∥
2
\frac{\mathbf{d}^{\mathrm{T}}(\mathbf{x}-\mathbf{o})}{\|\mathbf{d}\|_{2}\|\mathbf{x}-\mathbf{o}\|_{2}}
∥d∥2∥x−o∥2dT(x−o) 为
o
x
\mathbf{ox}
ox 与
d
\mathbf{d}
d 夹角的余弦值,
1
1
+
(
r
˙
/
∥
d
∥
2
)
2
\frac{1}{\sqrt{1+\left(\dot{r} /\|\mathbf{d}\|_{2}\right)^{2}}}
1+(r˙/∥d∥2)21 为视锥体夹角的余弦值,表示点在视锥体内侧。
相对应的圆锥体的期望位置编码表示为:
γ
∗
(
o
,
d
,
r
˙
,
t
0
,
t
1
)
=
∫
γ
(
x
)
F
(
x
,
o
,
d
,
r
˙
,
t
0
,
t
1
)
d
x
∫
F
(
x
,
o
,
d
,
r
˙
,
t
0
,
t
1
)
d
x
(2)
\gamma^{*}\left(\mathbf{o}, \mathbf{d}, \dot{r}, t_{0}, t_{1}\right)=\frac{\int \gamma(\mathbf{x}) \mathrm{F}\left(\mathbf{x}, \mathbf{o}, \mathbf{d}, \dot{r}, t_{0}, t_{1}\right) d \mathbf{x}}{\int \mathrm{F}\left(\mathbf{x}, \mathbf{o}, \mathbf{d}, \dot{r}, t_{0}, t_{1}\right) d \mathbf{x}}\tag{2}
γ∗(o,d,r˙,t0,t1)=∫F(x,o,d,r˙,t0,t1)dx∫γ(x)F(x,o,d,r˙,t0,t1)dx(2)
但对于圆台内的点
x
\mathbf{x}
x 的概率密度函数
γ
\gamma
γ 不可知,Mip-NeRF使用视锥体的中点与半长度构建高斯分布来近似圆锥体,使用高斯分布来近似计算圆台的位置编码的期望值,称之为 IPE(Integrated Positional Encoding),则:
μ
t
=
t
μ
+
2
t
μ
t
δ
2
3
t
μ
2
+
t
δ
2
,
σ
t
2
=
t
δ
2
3
−
4
t
δ
4
(
12
t
μ
2
−
t
δ
2
)
15
(
3
t
μ
2
+
t
δ
2
)
2
,
σ
r
2
=
r
˙
2
(
t
μ
2
4
+
5
t
δ
2
12
−
4
t
δ
4
15
(
3
t
μ
2
+
t
δ
2
)
)
.
(3)
\begin{array}{c} \mu_{t}=t_{\mu}+\frac{2 t_{\mu} t_{\delta}^{2}}{3 t_{\mu}^{2}+t_{\delta}^{2}}, \quad \sigma_{t}^{2}=\frac{t_{\delta}^{2}}{3}-\frac{4 t_{\delta}^{4}\left(12 t_{\mu}^{2}-t_{\delta}^{2}\right)}{15\left(3 t_{\mu}^{2}+t_{\delta}^{2}\right)^{2}} , \quad \sigma_{r}^{2}=\dot{r}^{2}\left(\frac{t_{\mu}^{2}}{4}+\frac{5 t_{\delta}^{2}}{12}-\frac{4 t_{\delta}^{4}}{15\left(3 t_{\mu}^{2}+t_{\delta}^{2}\right)}\right) . \end{array}\tag{3}
μt=tμ+3tμ2+tδ22tμtδ2,σt2=3tδ2−15(3tμ2+tδ2)24tδ4(12tμ2−tδ2),σr2=r˙2(4tμ2+125tδ2−15(3tμ2+tδ2)4tδ4).(3)
其中
μ
t
\mu_{t}
μt 为沿着射线的平均距离,
σ
t
2
\sigma_{t}^{2}
σt2 为沿着射线的方差,
σ
r
2
\sigma_{r}^{2}
σr2 为垂直与射线方向的方差。将其从圆锥台坐标系转换到世界坐标系中,该多变量高斯分布表达为:
μ
=
o
+
μ
t
d
,
Σ
=
σ
t
2
(
d
d
T
)
+
σ
r
2
(
I
−
d
d
T
∥
d
∥
2
2
)
(4)
\boldsymbol{\mu}=\mathbf{o}+\mu_{t} \mathbf{d}, \quad \boldsymbol{\Sigma}=\sigma_{t}^{2}\left(\mathbf{d d}^{\mathrm{T}}\right)+\sigma_{r}^{2}\left(\mathbf{I}-\frac{\mathbf{d d}^{\mathrm{T}}}{\|\mathbf{d}\|_{2}^{2}}\right)\tag{4}
μ=o+μtd,Σ=σt2(ddT)+σr2(I−∥d∥22ddT)(4)
将位置编码写成矩阵形式如下:
P
=
[
1
0
0
2
0
0
2
L
−
1
0
0
0
1
0
0
2
0
⋯
0
2
L
−
1
0
0
0
1
0
0
2
0
0
2
L
−
1
]
T
,
γ
(
x
)
=
[
sin
(
P
x
)
cos
(
P
x
)
]
.
(5)
\mathbf{P}=\left[\begin{array}{llllllllll} 1 & 0 & 0 & 2 & 0 & 0 & & 2^{L-1} & 0 & 0 \\ 0 & 1 & 0 & 0 & 2 & 0 & \cdots & 0 & 2^{L-1} & 0 \\ 0 & 0 & 1 & 0 & 0 & 2 & & 0 & 0 & 2^{L-1} \end{array}\right]^{\mathrm{T}}, \gamma(\mathbf{x})=\left[\begin{array}{l} \sin (\mathbf{P x}) \\ \cos (\mathbf{P x}) \end{array}\right] .\tag{5}
P=
100010001200020002⋯2L−10002L−10002L−1
T,γ(x)=[sin(Px)cos(Px)].(5)
由于高斯函数的优良性质,
x
\mathbf{x}
x 的位置编码也服从高斯分布,且其期望与方差为:
μ
γ
=
P
μ
,
Σ
γ
=
P
Σ
P
T
\mu_{\gamma}=\mathbf{P} \mu, \Sigma_{\gamma}=\mathbf{P} \Sigma \mathbf{P}^{T}
μγ=Pμ,Σγ=PΣPT,
sin
(
x
)
、
cos
(
x
)
\sin(\mathbf{x})、\cos(\mathbf{x})
sin(x)、cos(x) 均服从高斯分布:
E
x
∼
N
(
μ
,
σ
2
)
[
sin
(
x
)
]
=
sin
(
μ
)
exp
(
−
(
1
/
2
)
σ
2
)
E
x
∼
N
(
μ
,
σ
2
)
[
cos
(
x
)
]
=
cos
(
μ
)
exp
(
−
(
1
/
2
)
σ
2
)
(6)
\begin{aligned} \mathrm{E}_{x \sim \mathcal{N}\left(\mu, \sigma^{2}\right)}[\sin (x)] & =\sin (\mu) \exp \left(-(1 / 2) \sigma^{2}\right) \\ \mathrm{E}_{x \sim \mathcal{N}\left(\mu, \sigma^{2}\right)}[\cos (x)] & =\cos (\mu) \exp \left(-(1 / 2) \sigma^{2}\right) \end{aligned}\tag{6}
Ex∼N(μ,σ2)[sin(x)]Ex∼N(μ,σ2)[cos(x)]=sin(μ)exp(−(1/2)σ2)=cos(μ)exp(−(1/2)σ2)(6)
则基于高斯分布的圆台服从的分布为:
γ
(
μ
,
Σ
)
=
E
x
∼
N
(
μ
γ
,
Σ
γ
)
[
γ
(
x
)
]
=
[
sin
(
μ
γ
)
∘
exp
(
−
(
1
/
2
)
diag
(
Σ
γ
)
)
cos
(
μ
γ
)
∘
exp
(
−
(
1
/
2
)
diag
(
Σ
γ
)
)
]
,
(7)
\begin{aligned} \gamma(\boldsymbol{\mu}, \boldsymbol{\Sigma}) & =\mathrm{E}_{\mathbf{x} \sim \mathcal{N}\left(\boldsymbol{\mu}_{\gamma}, \boldsymbol{\Sigma}_{\gamma}\right)}[\gamma(\mathbf{x})] \\ & =\left[\begin{array}{l} \sin \left(\boldsymbol{\mu}_{\gamma}\right) \circ \exp \left(-(1 / 2) \operatorname{diag}\left(\boldsymbol{\Sigma}_{\gamma}\right)\right) \\ \cos \left(\boldsymbol{\mu}_{\gamma}\right) \circ \exp \left(-(1 / 2) \operatorname{diag}\left(\boldsymbol{\Sigma}_{\gamma}\right)\right) \end{array}\right], \end{aligned}\tag{7}
γ(μ,Σ)=Ex∼N(μγ,Σγ)[γ(x)]=[sin(μγ)∘exp(−(1/2)diag(Σγ))cos(μγ)∘exp(−(1/2)diag(Σγ))],(7)
其中
∘
\circ
∘ 为按元素相乘,为了减少计算量,使用
Σ
\boldsymbol{\Sigma}
Σ 的对角线元素来计算替代
Σ
γ
\boldsymbol{\Sigma}_\gamma
Σγ 的对角线元素,即:
diag
(
Σ
γ
)
=
[
diag
(
Σ
)
,
4
diag
(
Σ
)
,
…
,
4
L
−
1
diag
(
Σ
)
]
T
(8)
\operatorname{diag}\left(\boldsymbol{\Sigma}_{\gamma}\right)=\left[\operatorname{diag}(\boldsymbol{\Sigma}), 4 \operatorname{diag}(\boldsymbol{\Sigma}), \ldots, 4^{L-1} \operatorname{diag}(\boldsymbol{\Sigma})\right]^{\mathrm{T}}\tag{8}
diag(Σγ)=[diag(Σ),4diag(Σ),…,4L−1diag(Σ)]T(8)
其中
Σ
\boldsymbol{\Sigma}
Σ 对角线上的元素只取决于3D空间点的协方差:
diag
(
Σ
)
=
σ
t
2
(
d
∘
d
)
+
σ
r
2
(
1
−
d
∘
d
∥
d
∥
2
2
)
(9)
\operatorname{diag}(\boldsymbol{\Sigma})=\sigma_{t}^{2}(\mathbf{d} \circ \mathbf{d})+\sigma_{r}^{2}\left(\mathbf{1}-\frac{\mathbf{d} \circ \mathbf{d}}{\|\mathbf{d}\|_{2}^{2}}\right)\tag{9}
diag(Σ)=σt2(d∘d)+σr2(1−∥d∥22d∘d)(9)
图4中,左图为原始的位置编码,右图为IPE,x轴上方为不同频率下的编码信息(越往上信息变化更快)表示高频信息,越靠近x轴(信号变化越慢)表示低频信息。