今天读一篇CVPR2023 Highlight的文章,文章提出了一种在没有相机位姿先验的情况下训练 NeRF 的方法。
项目地址:点击前往
本论文提出 NoPe-NeRF:一种在没有相机位姿先验的情况下训练 NeRF 的方法。该方法结合了从单目深度估计网络生成的深度图,通过训练过程中优化其尺度和偏移,使其成为多视角一致的几何先验。引入的两个新颖的损失函数——点云 Chamfer 距离损失与基于深度的表面渲染损失——有效约束了图像之间的相对位姿,从而提高了新视角合成的质量和相机姿态估计的准确性。
NeRF 在生成高质量新视角图像方面表现卓越,但通常依赖于 SfM(如 COLMAP)提供的精确相机姿态,限制了其实用性和可微分性。
现有无姿态NeRF方法如NeRFmm、BARF和SC-NeRF尝试联合优化姿态与NeRF,但在面对大尺度相机运动时失败。两大原因是:
本方法借助单目深度图解决以上问题,通过矫正尺度与偏移获得多视角一致的几何约束,进一步增强姿态估计和 NeRF 优化效果。
传统方法使用像素插值或多视图重建生成新视角图像。NeRF 引入后,成为生成高质量图像的主流表示。
一些方法尝试联合优化姿态和NeRF表示,如BARF(用coarse-to-fine编码)、SC-NeRF(考虑镜头畸变)等,但仅适用于前向视角场景,对大范围相机运动支持差。
我们将单目深度图引入到姿态-NeRF联合优化中,以提升对复杂相机轨迹的处理能力。
目标:输入一段图像序列(带内参)以及单目深度估计的图,同时优化出相机姿态与 NeRF。
将每个位置和视角映射为颜色和密度值。利用体积渲染技术,将 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
使用 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估计来恢复一系列多视角一致的深度图。
为了防止姿态优化过程中每帧单独漂移,引入两个关键的相邻帧约束。
首先将每帧的 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
将点云投影到相邻帧图像,计算相应像素点的颜色一致性损失:
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∗⟩
解析意义:
将所有损失项联合优化,得到完整目标函数:
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
最终优化参数包括:
优化目标为:
Θ ∗ , Π ∗ , Ψ ∗ = arg min Θ , Π , Ψ L ( I , D ) \Theta^*, \Pi^*, \Psi^* = \arg\min_{\Theta, \Pi, \Psi} \mathcal{L}(I, D) Θ∗,Π∗,Ψ∗=argΘ,Π,ΨminL(I,D)
数据集:
对比方法:BARF、NeRFmm、SC-NeRF
结果表明 NoPe-NeRF 在视角合成与姿态估计两方面都显著优于这些方法,尤其是在复杂相机轨迹下稳定性更高。
NoPe-NeRF 在姿态估计精度上接近 COLMAP,且在一些场景中生成更清晰的新视角图像。两阶段训练方式(先估姿态再固定优化 NeRF)效果最好。
验证各部分对最终表现的影响:
本方法依赖于深度估计的准确性,且受到尺度/偏移不一致或图像扭曲的影响。
NoPe-NeRF 提供了一种无需姿态先验即可训练 NeRF 的有效方案。通过融合单目深度图和多项损失约束,大幅提高了复杂轨迹场景中的重建与姿态估计能力,为 NeRF 在实际应用中摆脱 SfM 预处理迈出了关键一步。