1摘要
文中提出了一种新的学习框架PixelNeRF,针对的是原本NeRF的不足。即现有的构建神经辐射场的方法往往需要大量的已知观察视角的图片作为输入并且需要花费大量的训练时间。PixelNeRF为了克服这些不足,允许网络跨多个场景被训练以学习先前的场景(获取场景先验知识),使其能够以前馈的方式从稀疏(sparse)的视图集(如一个)执行新的视图合成。利用NERF的体绘制方法,文中的模型可以在没有显式3D监督的情况下直接从图像训练。
论文进行了大量实验,实验结果表明,在所有情况下,PixelNeRF在新颖的视图合成和单幅图像3D重建方面的表现都优于当前最先进的基线方法。
以下是对其效果的展示:
2论文创新点
与NeRF不使用任何图像特征不同,PixelNeRF将与每个像素对齐的空间图像特征作为输入,先利用卷积网络获得图像的底特征,将提取到的底特征加入到NeRF网络的输入中,以学习到场景的先验知识,这个过程可以由如下公式表示:
F
(
x
,
d
,
f
)
=
(
σ
,
c
)
F(x,d,f) = (σ,c)
F(x,d,f)=(σ,c)
优化之后的模型可以有效学习场景的先验知识,从而在一次训练之后,对于未知场景,仅通过少量输入即可得到新视点的图片。
3框架结构
整体的模型由两部分构成,第一部分是全卷积的图像编码器,用于将图像按像素编码为沿像素对准的特征网络,第二部分则是一个NeRF网络,用于读入空间坐标信息和对应的编码特征,输出颜色和密度值。文中将任务分成了两块,第一部分是单张图像的PixelNeRF,第二部分则是合并多视图的PixelNeRF。
3.1 单张图像的PixelNeRF
对于沿观察方向
d
d
d的目标相机光线的查询点
x
x
x,通过投影和内插法从特征体
W
W
W中提取出对应的图像特征。然后将该特征与空间坐标(包含
x
x
x和
d
d
d)一起传递到NeRF网络
f
f
f中,利用输出的颜色值和体密度进行体渲染,并将结果与目标像素值进行比较,计算渲染损失(Rendering Loss)。这个过程可以由以下公式表示:
f
(
γ
(
x
)
,
d
;
W
(
π
(
x
)
)
)
=
(
σ
,
c
)
f(γ(x),d;W(π(x)))=(σ,c)
f(γ(x),d;W(π(x)))=(σ,c)
3.2合并多视图的PixelNeRF
多视角的图像可以提供更多场景的附加信息并且可以解决单个场景中出现的3D几何模糊的问题。
将输入的第
i
i
i张图像视作
I
(
i
)
I^{(i)}
I(i)并将它对应的相机变换设置为
P
(
i
)
=
[
R
(
i
)
,
t
(
i
)
]
P^{(i)}=[R^{(i)}, t^{(i)}]
P(i)=[R(i),t(i)],对于一个新的视角上的相机光线,可以将光线路径上要查询的点坐标
x
x
x和对应的视角方向
d
d
d转换到一致的相机坐标系下,转换的公式如下
x
(
i
)
=
P
(
i
)
x
,
d
(
i
)
=
R
(
i
)
d
x^{(i)}=P^{(i)}x,d^{(i)}=R^{(i)}d
x(i)=P(i)x,d(i)=R(i)d之后将变换后的空间信息(
x
x
x和
d
d
d)和对应的特征信息提交到NeRF网络
f
1
f_1
f1中获得中级特征向量,公式如下:
V
(
i
)
=
f
1
(
γ
(
x
(
i
)
,
d
(
i
)
;
W
(
i
)
(
π
(
x
(
i
)
)
)
)
)
V^{(i)}=f_1(γ(x^{(i)},d^{(i)};W^{(i)}(π(x^{(i)}))))
V(i)=f1(γ(x(i),d(i);W(i)(π(x(i)))))
最后再用一个averagepooling操作
ψ
ψ
ψ来将所有的向量聚合并输入到NeRF网络
f
2
f_2
f2中,得到最后的体密度和颜色,公式如下:
(
σ
,
c
)
=
f
2
(
ψ
(
V
(
1
)
,
.
.
.
,
V
(
n
)
)
)
(σ,c)=f_2(ψ(V^{(1)},...,V^{(n)}))
(σ,c)=f2(ψ(V(1),...,V(n)))
4实验结果