MVSNeRF:多视图立体视觉的快速推广辐射场重建(2021年)
- 摘要
- 1 引言
- 2 相关工作
- 3 MVSNeRF实现方法
- 3.1 构建代价体
- 3.2 辐射场的重建
- 3.3 体渲染和端到端训练
- 3.4 优化神经编码体
Anpei Chen and Zexiang Xu and Fuqiang Zhao et al. MVSNeRF: Fast Generalizable Radiance Field Reconstruction from Multi-View Stereo[J]. arXiv:2103.15595v2, 2021. https://doi.org/10.48550/arXiv.2103.15595
source code
摘要
在2021年,作者提出了MVSNeRF,一种新的神经渲染方法,在视图合成中可以有效地重建神经辐射场。与之前对神经辐射场的研究不同,我们考虑了对密集捕获的图像进行每场景优化,我们提出了一种通用的深度神经网络,它可以通过快速网络推理,仅从附近的三个输入视图中重建辐射场。我们的方法利用平面扫描代价体(广泛应用于多视图立体视觉)进行几何感知场景推理,并将其与基于物理的体积渲染相结合,用于神经辐射场重建。我们在DTU数据集中的真实物体上训练我们的网络,并在三个不同的数据集上进行测试,以评估其有效性和通用性。我们的方法可以泛化跨场景(甚至是室内场景,完全不同于我们物体的训练场景),并仅使用三个输入图像生成真实的视图合成结果,显著优于同时发布的可推广的辐射场重建论文。此外,如果捕获密集的图像,我们估计的辐射场表示可以很容易地进行微调;这导致每个场景可以快速的重建,具有更高的渲染质量和更少的优化时间。
1 引言
新视角合成是计算机视觉和图形学中一个长期存在的问题。近年来,神经渲染方法显著地推进了这一领域的进展。神经辐射场( Neural Radiance Fields,NeRF)及其后续的工作已经可以产生逼真的新视图合成结果。然而,这些先前工作的一个显著缺点是它们需要一个很长的每一个场景的优化过程来获得高质量的辐射场,这相当昂贵并高度限制了实用性。
我们的目标是让神经场景重建和渲染更加实用。我们提出了MVSNeRF,一种新的方法,可以很好地推广到仅从几个(只有三个)非结构化的多视图输入图像中跨场景重建一个辐射场的任务。由于具有很强的通用性,我们避免了繁琐的每个场景优化,并可以通过快速的网络推理直接在新的视角上回归真实的图像。如果在短时间内(5-15 min)进一步优化更多图像,我们重建的辐射场甚至可以在数小时的优化下优于NeRFs(见图1)。
我们利用了最近在基于学习的多视点立体视觉(MVS)上的成功。对于三维重建任务,这项工作可以通过对代价体使用用三维卷积来训练可推广的神经网络。我们通过将附近的输入视图(由2DCNN推断)的二维图像特征变换到参考视图的结果中的扫描平面上,在输入参考视图上构建一个代价体。与其它MVS方法只对代价体进行深度推断不同,我们的网络对场景几何和外观进行推理,并输出一个神经辐射场(见图2),从而实现视图合成。
具体来说,利用3D CNN,我们重建(从代价体)一个神经场景编码体,该体积由每个体素的神经特征组成,编码关于局部场景几何和外观的信息。然后,我们利用多层感知器(MLP),利用编码体内的三次插值神经特征,解码任意连续位置的体积密度和辐射。本质上,编码体是辐射场的局部神经表示;一旦估计,这个体积可以直接使用(去掉3D CNN),通过可微分射线行进行最终渲染。我们的方法结合了基于学习的MVS和神经渲染。与现有的MVS方法相比,我们实现了可微神经渲染,允许在不需要三维监督的情况下进行训练和推理时间优化,以进一步提高质量。与现有的神经渲染工作相比,我们的MVS架构可以很自然地推理相应的交叉视图,促进泛化到不可见的测试场景,也可以导致更好的神经场景重建和渲染。因此,我们的方法可以显著优于最近的发布的可推广的NeRF工作,它主要考虑二维图像特征,而没有显式的几何感知的三维结构(见表1和图4)。
我们证明,仅使用3张输入图像,我们从DTU数据集训练出来的网络在测试DTU场景时合成逼真的图像,甚至可以在其它分布不同的场景数据集上产生合理的结果。此外,我们估计的三图像辐射场(神经编码体)可以更容易地在新的测试场景上进一步优化,以改进更多被拍摄图像的神经重建,获得了逼真的结果,甚至与每个场景的过拟合NeRF相当,我们的优化时间比NeRF少(见图1)。这些实验表明,当只有少数图像捕获时,我们的技术可以作为一个强有力的重建器,可以重建一个辐射场用于真实的视图合成。或者作为一个强初始化器,当获得密集图像时,可以显著促进每个场景的辐射场优化。我们的方法向现实的神经渲染实际化迈出了重要的一步。
2 相关工作
多视图立体视觉
多视图立体视觉(MVS)是一个经典的计算机视觉问题,旨在利用从多个视点捕获的图像来实现密集的几何重建,并已被各种传统方法广泛探索。最近,深度学习技术被引入来解决MVS问题。MVSNet在参考视图的平面扫描代价体上应用三维CNN进行深度估计,实现了优于经典传统方法的高质量的三维重建。随后的工作将该技术扩展为循环平面扫扫、基于点的致密化、基于置信度的聚合和多代价体,提高了重建质量。我们提出将基于代价体的深度MVS技术与可微分体渲染相结合,使其能够有效地重建神经渲染的辐射场。与使用直接深度监督的MVS方法不同,我们只训练具有图像损失的网络,用于新的视图合成。这确保了网络满足多视图的一致性,同时允许高质量的几何重建。此外,我们的MVSNeRF可以实现与MVSNet相比的精确的深度重建(尽管没有直接的深度监督),这可能会激发未来开发无监督几何重建方法的工作。
视角合成
视图合成已经用各种方法研究了几十年,包括光场,基于图像的渲染,以及其他最近基于深度学习的方法。平面扫描体积也被用于视图合成。通过深度学习,基于MPI的方法在参考视图上构建平面扫描体,而其它方法在新的视角上构建平面扫描;这些先前的工作通常预测离散扫描平面上的颜色,并使用alpha混合或基于学习的权重预测和聚合每个平面的颜色。我们的方法不是直接的预测每个平面颜色,而是将平面扫描中的每个体素神经特征作为场景编码体进行推断,并可以从任意的三维位置回归体渲染属性。这是一个连续的神经辐射场的模型,允许基于物理的体素渲染来实现现实的视图合成。
神经渲染
近年来,各种神经场景表示法被提出来实现视图合成和几何重建任务。特别是,NeRF 结合了MLP与可微分的体积渲染,并实现了逼真的视图合成。有些工作试图提高其在视图合成上的性能;其它相关工作扩展到支持其他神经渲染任务,如动态视图合成,挑战场景,姿态估计,实时渲染,重光照,和剪辑。然而,大多数之前的工作仍然遵循原始的NeRF,并需要对每个场景进行昂贵的优化过程。相反,我们利用深度MVS技术来实现跨场景神经辐射场估计,仅使用少量图像作为输入。我们的方法利用平面扫描三维代价体来实现几何感知场景理解,比同时发布的工作要显著提高辐射场重建的性能。
3 MVSNeRF实现方法
与NeRF通过每个场景的“网络记忆”来重建辐射场不同,我们的MVSNeRF学习了一个用于辐射场重建的通用网络。输入
M
M
M张真实场景拍摄的图片
I
i
(
i
=
1
,
.
.
,
M
)
I_i (i = 1, .., M)
Ii(i=1,..,M)并且知道相机参数
Φ
i
Φi
Φi,我们提出了一种新的网络,它可以重建一个辐射场作为一个神经编码体,并使用它来回归体渲染属性(密度和具有视图依赖的辐射)用于视图合成。一般来说,我们的整个网络可以看作是一个辐射场的函数,表示为:
σ
,
r
=
MVSNeRF
(
x
,
d
;
I
i
,
Φ
i
)
(
1
)
\sigma , r = \text {MVSNeRF}(x,d;I_i,\Phi _i)~~~~(1)
σ,r=MVSNeRF(x,d;Ii,Φi) (1)
其中
x
x
x表示一个3D位置,
d
d
d是视角方向,
σ
σ
σ是
x
x
x处的体积密度,
r
r
r是
x
x
x处的输出辐射(RGB颜色),这取决于视角方向
d
d
d。我们网络的输出体积特性可以直接通过可微分射线在新的目标视角
Φ
t
Φ_t
Φt上合成新的图像
I
t
I_t
It。
在本文中,我们考虑一个稀疏的附近输入视图集来有效地辐射场重建。在实践中,我们使用
M
=
3
M = 3
M=3视图来进行实验,而我们的方法可以处理非结构化视图,并且可以很容易地支持其它数量的输入。我们的MVSNeRF的概述如图2所示。
我们首先在参考视图(我们将视图i = 1称为参考视图)上,将二维神经特征变换到多个扫描平面上。然后,我们利用一个3D CNN来重建神经编码体,并使用一个MLP来回归体渲染属性,表示一个辐射场。我们利用可微的射线行进,使用我们的网络建模的辐射场,在新的视点上回归图像;这使得我们的整个框架使用渲染损失实现了端到端训练。我们的框架实现了从少量图像的辐射场重建。另一方面,当捕获密集图像时,重建的编码体和MLP解码器也可以进行快速独立微调,以进一步提高渲染质量。
3.1 构建代价体
受最近的深度MVS方法的启发,我们在参考视图(i = 1)处构建了一个代价体P,允许对几何感知的场景进行理解。这成功利用二维图像特征从m个输入图像变换到参考视图的结果上的平面扫描体来实现。
提取图像特征
我们使用深度二维CNN T在单个输入视图上提取二维图像特征,从而有效地提取代表局部图像外观的二维神经特征。该子网络由下采样卷积层组成,并将输入图像
I
i
∈
R
H
i
×
W
i
×
3
I_i∈\mathbb{R}^{H_i×W_i×3}
Ii∈RHi×Wi×3转换为2D特征地图
F
i
∈
R
H
i
/
4
×
W
i
/
4
×
C
F_i∈\mathbb{R} ^{H_i/4×W_i/4×C}
Fi∈RHi/4×Wi/4×C,
F
i
=
T
(
I
i
)
(
2
)
F_i = T(I_i)~~~~(2)
Fi=T(Ii) (2)
其中,H和W为图像的高度和宽度,C为所得到的特征通道数。
变换特征图
给定相机的内在和外在参数
Φ
=
[
K
,
R
,
t
]
Φ = [K,R,t]
Φ=[K,R,t],我们考虑了单应性变换:
H
i
(
z
)
=
K
i
⋅
(
R
i
⋅
R
1
T
+
(
t
1
−
t
i
)
⋅
n
1
T
z
)
⋅
K
1
−
1
(
3
)
H_i(z)=K_i·(R_i·R_1^T+ \frac{(t_1-t_i)·n_1^T}{z} )·K_1^{-1}~~~~(3)
Hi(z)=Ki⋅(Ri⋅R1T+z(t1−ti)⋅n1T)⋅K1−1 (3)
其中
H
i
(
z
)
H_i (z)
Hi(z)是在深度z从视图i到参考视图的矩阵变换,K是内参矩阵,R和t是相机的旋转和平移。每个特征图
F
i
F_i
Fi可以通过以下方式变换到参考视图:
F
i
,
z
(
u
,
v
)
=
F
i
(
H
i
(
z
)
[
u
,
v
,
1
]
T
)
(
4
)
F_{i,z}(u,v)=F_i(H_i(z)[u,v,1]^T)~~~(4)
Fi,z(u,v)=Fi(Hi(z)[u,v,1]T) (4)
其中,
F
i
,
z
F_{i,z}
Fi,z为深度z处的扭曲特征图,
(
u
,
v
)
(u,v)
(u,v)表示参考视图中的一个像素位置。在这项工作中,我们使用参考视图上的归一化的坐标(NDC)来参数化
(
u
、
v
、
z
)
(u、v、z)
(u、v、z)。
代价体
代价体P是由D扫描平面上的变换特征图构造出来的。我们利用基于方差的度量来计算代价,这已广泛应用在MVS中。特别是,对于P中以(u、v、z)为中心的每个体素,其代价特征向量的计算方法为:
P
(
u
,
v
,
z
)
=
Var
(
F
i
,
z
(
u
,
v
)
)
(
5
)
P_{(u,v,z)} =\text {Var}(F_{i,z}(u,v))~~~~(5)
P(u,v,z)=Var(Fi,z(u,v)) (5)
其中,Var计算M个视图之间的方差。
此基于方差的代价体编码不同输入视图之间的图像外观变化;这解释了由场景几何图形和与视图相关的阴影效果引起的外观变化。虽然MVS的工作只使用这样的体积来进行几何重建,但我们证明了它也可以用来推断完整的场景外观,并实现真实的神经渲染。
3.2 辐射场的重建
我们提出使用深度神经网络来有效地将所建立的代价体转换为辐射场的重建,以实现现实的视图合成。我们利用3D CNN B从原始二维图像特征代价的代价体P中重建一个神经编码体S;S由编码局部场景几何和外观的每一个体素特征组成。MLP解码器A用于从该编码体回归体渲染属性。
神经编码体
以前的MVS工作通常直接从代价体预测深度概率,而代价体只表示场景几何。我们的目标是实现高质量的渲染,这需要从代价体中推断出更多的外观感知信息。因此,我们训练一个深度三维CNN B将构建的图像特征代价体转换为一个新的C-通道神经特征体积S,其中特征空间由网络自身学习和发现,并进行接下来的体素属性回归。此过程可表示为:
S
=
B
(
P
)
(
6
)
S=B(P)~~~~(6)
S=B(P) (6)
3D CNN B是一个3D UNet降采样和上采样卷积层和跳连接组成,可以有效地推断和传播场景外观信息,获得一个有意义的场景编码体S。注意,这个编码体是以无监督的方式预测并用体渲染在端到端训练后被推断。我们的网络可以学会在每体素神经特征中编码有意义的几何场景和外观;这些特征随后被不断插值并转换为体密度和视图相关的辐射。由于二维特征提取的降采样,场景编码体的分辨率相对较低;仅从这些信息中回归高频外观是具有挑战性的。因此,我们也在接下来的体素回归阶段合并了原始图像像素数据,虽然我们后来发现,这个高频也可以通过快速的每场景微调优化在一个增强的体积中恢复。
回归体属性
给定一个任意的三维位置
x
x
x和一个观察方向d,我们使用MLP A从神经编码体S回归相应的体积密度σ和视图相关的辐射r。如前所述,我们还考虑原始图像
I
i
I_i
Ii的像素颜色
c
=
[
I
(
u
i
,
v
i
)
]
c = [I(u_i,v_i)]
c=[I(ui,vi)]作为附加输入;这里
(
u
i
,
v
i
)
(u_i, v_i)
(ui,vi)是将三维点
x
x
x投影到视图
i
i
i 时的像素位置,c 将所有视图的颜色
I
(
u
i
,
v
i
)
I(u_i,v_i)
I(ui,vi)连接为一个3M-通道向量。MLP表示为:
σ
,
r
=
A
(
x
,
d
,
f
,
c
)
,
f
=
S
(
x
)
(
7
)
\sigma ,r =A(x,d,f,c),~~f=S(x)~~~~ (7)
σ,r=A(x,d,f,c), f=S(x) (7)
其中,f = S (x)是从位置x处的体积S进行三次插值的神经特征。特别地,x在参考视图的NDC空间中参数化,d用在参考视图的坐标上的单位向量表示。利用NDC空间可以有效地对不同数据源间的场景尺度进行归一化,有助于我们的方法具有良好的通用性。此外,受NeRF的启发,我们还在位置x和方向d向量上应用了位置编码,这进一步增强了我们的结果中的高频细节。
辐射场
因此,我们的整个框架建模了一个神经辐射场,从少数(三个)输入图像中回归体积密度和视觉依赖的辐射。此外,一旦场景编码体S被重建,该体与MLP解码器A的结合可以独立使用,无需前置2D和3D CNN。它们可以被看作是辐射场的独立神经表示,输出体积属性,从而支持体渲染。
3.3 体渲染和端到端训练
我们的MVSNeRF重建了一个神经编码体,并在场景中的任意点上回归体密度和与视图相关的辐射。这允许应用可微分的体渲染来回归图像的颜色。
体渲染
基于物理的体积渲染方程可以通过可微分射线行进(如在NeRF[34]中)进行数值计算,用于视图合成。特别地,像素的亮度值(颜色)是通过使光线穿过像素并在射线上采样的阴影点处累积亮度来计算的,由以下方式给出:
c
t
=
∑
k
τ
k
(
1
−
e
x
p
(
−
σ
k
)
)
r
k
,
τ
=
e
x
p
(
−
∑
j
=
1
k
−
1
σ
j
)
(
8
)
\\c_t = \sum_k\tau_k(1-exp(-\sigma _k))r_k,~~~\tau = exp(-\sum_{j=1}^{k-1}\sigma_j)~~~~(8)
ct=k∑τk(1−exp(−σk))rk, τ=exp(−j=1∑k−1σj) (8)
其中
c
t
c_t
ct为最终的像素颜色输出,
τ
\tau
τ为体积透射率。我们的MVSNeRF作为一个辐射场函数,本质上提供了射线行进的体渲染属性
σ
k
σ_k
σk和
r
k
r_k
rk。
端到端训练
这种射线行进渲染是完全可微分的;因此,它允许我们的框架从端到端使用三个输入视图在新的视点上回归最终的像素颜色。我们使用真实像素颜色监督整个框架,使用色损失函数是L2渲染损失:
L
=
∣
∣
c
t
−
c
~
t
∣
∣
2
2
(
9
)
L= ||c_t-\tilde{c} _t||_2^2~~~~(9)
L=∣∣ct−c~t∣∣22 (9)
其中
c
~
t
\tilde{c} _t
c~t是从一个新视点的目标图像
I
t
I_t
It采样的真实像素颜色。我们只利用损失来监督我们的整个系统。由于基于物理的体渲染和端到端训练,渲染监督可以通过每个网络组件传播场景外观和对应信息,并对其进行规范化,实现有意义的最终视图合成。不像以前的NeRF工作,主要专注于每个场景的训练,我们在DTU数据集上的不同场景中训练整个网络。我们的MVSNeRF受益于代价体处理中的几何感知场景推理,并可以有效地学习一个通用函数,可以在新的测试场景上用神经编码体重建辐射场,从而实现高质量的视图合成。
3.4 优化神经编码体
当跨场景进行训练时,我们的MVSNeRF已经可以学习一个强大的泛化函数,仅从三个输入图像重建跨场景的辐射场。然而,由于输入有限和不同场景和数据集之间的高多样性,使用这种通用的解决方案在不同的场景上实现完美的结果是非常具有挑战性的。另一方面,NeRF通过对密集的输入图像进行每个场景优化,减轻了泛化困难,获得了逼真的结果,但代价非常昂贵。相比之下,我们建议微调我们的神经编码体:从少量图像中立即重建,即使在捕获密集图像时也能实现快速的每个场景优化。
附加颜色
如前所述,当发送到MLP解码器(等式7)时,我们的神经编码体与像素颜色相结合。保留这种进行微调的设计仍然有效,但会导致总是依赖于三个输入进行重建。相反,我们通过将每个视图的体素中心的颜色作为编码体的额外通道来实现独立的神经重建;这些颜色作为特征也可以在每个场景的优化中进行训练。这个简单的附加最初在渲染中引入了模糊性,但是在微调过程中很快解决了这个问题。