今天读一篇CVPR2023 Highlight的文章,文章提出了一种在没有相机位姿先验的情况下训练 NeRF 的方法。
项目地址:点击前往
Abstract
本论文提出NoPe-NeRF:一种在没有相机位姿先验的情况下训练NeRF的方法。该方法结合了从单目深度估计网络生成的深度图,通过训练过程中优化其尺度和偏移,使其成为多视角一致的几何先验。引入的两个新颖的损失函数——点云Chamfer距离损失与基于深度的表面渲染损失——有效约束了图像之间的相对位姿,从而提高了新视角合成的质量和相机姿态估计的准确性。
1. Introduction
NeRF在生成高质量新视角图像方面表现卓越,但通常依赖于SfM提供的精确相机姿态,限制了其实用性和可微分性。
现有无姿态NeRF方法如NeRFmm、BARF和SC-NeRF尝试联合优化姿态与NeRF,但在面对大尺度相机运动时失败。两大原因是:
- 缺乏对相邻帧之间相对位姿的约束。
- NeRF的形状-辐射模糊(shape-radiance ambiguity)与相机姿态的联合优化使训练不稳定。
本方法借助单目深度图解决以上问题,通过矫正尺度与偏移获得多视角一致的几何约束,进一步增强姿态估计和NeRF优化效果。
2. Related Work
Novel View Synthesis(NVS)
传统方法使用像素插值或多视图重建生成新视角图像。NeRF引入后,成为生成高质量图像的主流表示。
Pose-Free NeRF
一些方法尝试联合优化姿态和NeRF表示,如BARF(用coarse-to-fine编码)、SC-NeRF(考虑镜头畸变)等,但仅适用于前向视角场景,对大范围相机运动支持差。
我们将单目深度图引入到Pose-NeRF联合优化中,以提升对复杂相机轨迹的处理能力。
3. Method
目标:输入一段图像序列(带内参)以及单目深度估计的图,同时优化出相机姿态与 NeRF。
3.1 NeRF表达
将每个位置和视角映射为颜色和密度值。利用体积渲染技术,将 NeRF 输出集成为图像,并以像素级重建误差作为优化目标。
3.2 Pose与NeRF联合优化
NeRF与姿态联合优化的核心在于:相机射线
r
r
r依赖于相机外参(位姿)
Π
\Pi
Π。因此,联合优化问题如下:
Θ
∗
,
Π
∗
=
arg
min
Θ
,
Π
L
rgb
(
I
^
,
Π
∣
I
)
\Theta^*, \Pi^* = \arg\min_{\Theta, \Pi} \mathcal{L}_{\text{rgb}}(\hat{I}, \Pi \mid I)
Θ∗,Π∗=argΘ,ΠminLrgb(I^,Π∣I)
一般来说相机参数包含内参、pose和lens distortions,但在这里我们只估算pose。所以, ( Π = { T i } ) (\Pi = \{T_i\} ) (Π={Ti}),每帧图像 I i I_{i} Ii的pose ( T i = [ R i ∣ t i ] ) ( T_i = [R_i | t_i] ) (Ti=[Ri∣ti]),包含旋转 R i ∈ S O ( 3 ) R_i \in SO(3) Ri∈SO(3)和平移 t i ∈ R 3 t_i \in \mathbb{R}^3 ti∈R3
3.3 单目深度图去畸变
使用DPT网络生成单目深度图,但其尺度与偏移不一致,不能直接用于多视角几何。引入每帧的 scale(α)和 shift(β)参数,通过NeRF渲染深度图与之对齐,从而将其转换为多视角一致的深度图 D i ∗ = α i D i + β i D_i^* = α_i D_i + β_i Di∗=αiDi+βi。
优化目标为深度一致性损失:
L
depth
=
∑
i
N
∥
D
i
∗
−
D
^
i
∥
L_{\text{depth}} = \sum_{i}^{N} \| D_i^* - \hat{D}_i \|
Ldepth=i∑N∥Di∗−D^i∥
其中 D ^ i \hat{D}_i D^i是NeRF渲染出来的深度图。
值得注意的是,在这里,两个D其实都从中受益了:mono-depth为NeRF的训练提供了强的geometry prior,减少了shape-radiance ambiguity;NeRF提供了多视角一致性,所以我们可以为相对pose估计来恢复一系列多视角一致的深度图。
3.4 相对位姿约束
为了防止姿态优化过程中每帧单独漂移,引入两个关键的相邻帧约束。
a) Point Cloud Loss (Chamfer Distance)
首先将每帧的undistorted深度图
D
i
∗
D_i^*
Di∗回投为三维点云
P
i
∗
P_i^*
Pi∗,再对相邻帧的点云做配准损失:
L
pc
=
∑
(
i
,
j
)
L
cd
(
P
j
∗
,
T
j
i
P
i
∗
)
\mathcal{L}_{\text{pc}} = \sum_{(i,j)} \mathcal{L}_{\text{cd}}(P_j^*, T_{ji} P_i^*)
Lpc=(i,j)∑Lcd(Pj∗,TjiPi∗)
其中
T
j
i
=
T
j
T
i
−
1
T_{ji} = T_j T_i^{-1}
Tji=TjTi−1表示从点云
i
i
i到
j
j
j的变换矩阵,Chamfer距离定义为:
L
cd
(
P
,
Q
)
=
∑
p
∈
P
min
q
∈
Q
∥
p
−
q
∥
2
+
∑
q
∈
Q
min
p
∈
P
∥
p
−
q
∥
2
\mathcal{L}_{\text{cd}}(P, Q) = \sum_{p \in P} \min_{q \in Q} \|p - q\|_2 + \sum_{q \in Q} \min_{p \in P} \|p - q\|_2
Lcd(P,Q)=p∈P∑q∈Qmin∥p−q∥2+q∈Q∑p∈Pmin∥p−q∥2
b) Surface-based Photometric Loss
将点云投影到相邻帧图像,计算相应像素点的颜色一致性损失:
L
rgb-s
=
∑
(
i
,
j
)
∥
I
i
⟨
K
i
P
i
∗
⟩
−
I
j
⟨
K
j
T
j
T
i
−
1
P
i
∗
⟩
∥
\mathcal{L}_{\text{rgb-s}} = \sum_{(i,j)} \left\| I_i\langle K_i P_i^* \rangle - I_j\langle K_j T_j T_i^{-1} P_i^* \rangle \right\|
Lrgb-s=(i,j)∑
Ii⟨KiPi∗⟩−Ij⟨KjTjTi−1Pi∗⟩
- K i K_i Ki:内参矩阵
- ⟨ ⋅ ⟩ \langle \cdot \rangle ⟨⋅⟩:双线性采样操作(从图像中采样颜色)
解析意义:
- L pc \mathcal{L}_{\text{pc}} Lpc 提供几何约束;
- L rgb-s \mathcal{L}_{\text{rgb-s}} Lrgb-s提供纹理一致性监督;
- 两者一起减少姿态估计中的漂移和不一致问题。
3.5 总体训练目标
将所有损失项联合优化,得到完整目标函数:
L
=
L
rgb
+
λ
1
L
depth
+
λ
2
L
pc
+
λ
3
L
rgb-s
\mathcal{L} = \mathcal{L}_{\text{rgb}} + \lambda_1 \mathcal{L}_{\text{depth}} + \lambda_2 \mathcal{L}_{\text{pc}} + \lambda_3 \mathcal{L}_{\text{rgb-s}}
L=Lrgb+λ1Ldepth+λ2Lpc+λ3Lrgb-s
最终优化参数包括:
- Θ \Theta Θ:NeRF网络参数
- Π \Pi Π:相机pose
- Ψ = { ( α i , β i ) } \Psi = \{(\alpha_i, \beta_i)\} Ψ={(αi,βi)}:深度图失真参数
优化目标为:
Θ
∗
,
Π
∗
,
Ψ
∗
=
arg
min
Θ
,
Π
,
Ψ
L
(
I
,
D
)
\Theta^*, \Pi^*, \Psi^* = \arg\min_{\Theta, \Pi, \Psi} \mathcal{L}(I, D)
Θ∗,Π∗,Ψ∗=argΘ,Π,ΨminL(I,D)
4. Experiments
4.1 实验设置
数据集:
- ScanNet(室内):4个序列
- Tanks and Temples(室内 + 室外):8个序列
- 评估指标:图像合成质量(PSNR、SSIM、LPIPS)、姿态准确性(ATE、RPEr、RPEt)、深度图误差(Abs Rel、RMSE等)
4.2 与无姿态方法比较
对比方法:BARF、NeRFmm、SC-NeRF
结果表明NoPe-NeRF在视角合成与姿态估计两方面都显著优于这些方法,尤其是在复杂相机轨迹下稳定性更高。
4.3 与 COLMAP+NeRF 比较
NoPe-NeRF在姿态估计精度上接近COLMAP,且在一些场景中生成更清晰的新视角图像。两阶段训练方式(先估姿态再固定优化NeRF)效果最好。
4.4 消融实验
验证各部分对最终表现的影响:
- 去除α, β会显著降低姿态精度;
- 去除inter-frame损失(点云或表面光度)都会带来pose退化;
- 不使用深度一致性损失也会增加漂移。
4.5 局限性
本方法依赖于深度估计的准确性,且受到尺度/偏移不一致或图像扭曲的影响。
5. Conclusion
NoPe-NeRF提供了一种无需姿态先验即可训练NeRF的有效方案。通过融合单目深度图和多项损失约束,大幅提高了复杂轨迹场景中的重建与姿态估计能力,为NeRF在实际应用中摆脱SfM预处理迈出了关键一步。