【论文阅读】Level-S2fM:神经隐式表面水平集上的SfM
- Abstract
- 1. Introduction
- 2. Related Works
- 2.1. Structure from Motion
- 2.2. Neural Implicit Representation for 3D Scene
- 3. Preliminaries
- 3.1. Neural Implicit Surface Rendering
- 3.2. Ray Sampling and Sphere Tracing
- 3.3. Notations in SfM
- 4. The Proposed Level S2fM
- 4.1. Two-view Initialization
- 4.2. New Frame Registration
- 4.3. Points Triangulation and Refinement
- 4.4. Neural Bundle Adjustment on Surfaces
- 5. Experiments
- 5.1. Implementation Details, Datasets, and Metrics
- 5.2. Results on the BlendedMVS Dataset
- 5.3. Results on the DTU Dataset
- 5.4. Results on the ETH3D Dataset
- 5.5. Ablation Study
- 5.6. Limitations of Level-S2fM
- 6. Conclusion
- Supplementary Material
paper code
Abstract
本文提出了一种神经增量运动恢复结构 (SfM) 方法 Level-S 2 fM,该方法通过从已建立的关键点对应关系中学习隐式表面的坐标 MLP 和辐射场,从一组未校准的图像中估计相机位姿和场景几何。由于增量 SfM 管道中不可避免的双视图和少视图配置,这使得用于未知相机姿势的体积神经渲染的坐标 MLP 的优化变得复杂。尽管如此,我们证明,有望通过利用二维对应中传达的强归纳偏差与射线采样方案之间的关系来解决这些挑战。在此基础上,我们以基于神经隐表面的全新视角,重新审视增量 SfM 的流程并更新了关键组件,包括双视图几何初始化、相机姿态配准、3D 点三角测量和光束法平差。通过坐标 MLP 统一小型 MLP 网络中的场景几何形状,我们的 Level-S 2 fM 将隐式表面的零级集视为信息丰富的自上而下正则化,以管理重建的 3D 点,通过查询 SDF 排除匹配中的异常值,并细化NBA(Neural BA)估计的几何形状。我们的 Level-S2fM 不仅在相机姿态估计和场景几何重建方面带来了可喜结果,而且还展示了一种在事先不知道相机外参的情况下进行神经隐式渲染的有效方法。
- 下面直接使用 Level-S2fM 表示Level-S 2 fM。
- 原文中摘要里写的是 strong inductive basis 正文中写的是 strong inductive biases…按正文取强归纳偏差(不知道有没有译对)这个意思了,差点以为我看了盗版论文。另外,由于专业知识和英文水平有限,下面的翻译可能有很多不通顺或者错误的地方,有的地方我看得也很迷惑,建议直接移步原文。
1. Introduction
运动恢复结构 (SfM) 是一个基本的 3D 视觉问题,旨在重建 3D 场景并根据一组未校准的图像估计相机运动。作为一个长期存在的问题,人们已经进行了大量的研究,这些研究大多建立在跨视点的关键点对应关系和多视图几何(MVG)的理论成果上[12],并形成了三种代表性方法[12]: 增量SfM [34]、全局 SfM [4, 46] 和混合 SfM [5]。
在本文中,我们重点关注SfM的增量管道,并且我们将使用SfM来指代增量SfM。给定无序图像集,SfM 系统通过一对具有良好关键点对应关系条件的图像来初始化计算,以生成一组初始特征轨迹,然后逐一增量添加新视图,以根据 2D-3D 点对应关系估计相机姿势,并使用新匹配更新特征轨迹。由于特征轨迹是通过以自下而上的方式对跨视点的假定二维对应进行分组而生成的,因此它们表示的场景整体信息是无效或不准确的。因此,有必要用光束法平差(BA)对于以自上而下的方式联合优化相机姿势和3D点。 BA 的成功表明全局视角对于准确的 3D 重建至关重要,然而,它们的输入特征轨迹是自下而上的,对 3D 场景没有足够的整体约束。为此,我们研究通过提出一种新颖的 Level-S2fM 将自上而下的信息集成到 SfM 系统中。图 1 展示了经典 SfM 系统的代表性案例,该系统生成更多漂浮 3D 场景点,可以通过我们的方法来解决。
图 1. 神经水平集的 SfM 计算。我们学习在神经水平集之上进行几何计算,包括三角测量、PnP 和BA,有利于剔除匹配中的异常值,尤其是在纹理重复的场景中。此外,由于神经水平集的连续表面先验,我们实现了更好的姿势估计精度,并且我们的重建点粘附在图中用颜色绘制的表面上。同时,还有很多由 COLMAP [34] 重建的异常 3d 点,这些点被显示为黑色。
我们的 Level-S2fM 受到最近出现的神经隐式表面的启发,它可以将所有 3D 场景点作为有符号距离函数 (SDF) 的零级集进行管理。由于神经隐式曲面可以通过多层感知器(MLP)进行参数化,因此可以将其视为一种自上而下的 3D 场景信息,对于精确的 3D 重建具有巨大的潜力。然而,由于 3D 场景和相机姿势都需要已知,因此提出了一个具有挑战性的问题:
我们如何仅从一组没有任何 3D 信息的未校准图像中优化神经 SDF(或其他神经场,例如 NeRF)?
最近,上述问题在 BARF [19] 和 NeRF- - [45] 中得到了部分解答,它们放宽了在不知道准确相机姿势的情况下优化神经辐射场 [25] 的要求,但它们只能处理小尺度 face-forwarding 场景的未知姿势。此外,当我们将问题限制在增量 SfM 管道中时,这将更具挑战性,因为我们需要在初始化阶段仅使用两个重叠图像来优化神经场。为此,我们验证神经SDF的优化可以通过初始化阶段的2D匹配来完成,并通过整体层面查询3D点和跟踪2D关键点来促进特征轨迹的优化。
如图 1 所示,我们定义了一个神经网络,将 SDF 参数化为未确定 3D 场景的统一表示,并完成相机位姿交集的 PnP 计算、3D 点三角测量以及参数化 SDF 上的几何细化。在一对重叠图像的初始化阶段,Level-S2fM使用可微球追踪算法[20]来获得关键点对应的3d点,并计算重投影误差来驱动联合优化。对于追踪到的具有较小SDF值和其特征轨迹的2D重投影误差的3d点,将它们添加到动态点集中,并将具有特征轨迹的点集作为水平集的拉格朗日表示。由于位姿估计和场景点重建是顺序估计的,因此估计误差会累积。为此,我们提出了一种 NBA(即神经光束法平差),它通过重投影误差的能量函数从显式的点流中优化隐式表面和相机位姿,这可被视为拉格朗日和欧拉之间的演进(如[24]中讨论的表示)。
在实验中,我们在 BlendedMVS [48]、DTU [15] 和 ETH3D [36] 数据集的各种场景上评估我们的 Level-S2fM。在 BlendedMVS 数据集上,我们提出的 Level-S2fM 明显优于最先进的 COLMAP [34]。在 DTU 和 ETH3D 数据集 [15, 36] 上,我们的方法在相机姿态估计和密集表面重建方面也获得了与 COLMAP 相当的性能。
本文的贡献有两个方面:
- 我们提出了一种新颖的神经 SfM 方法 Level-S2fM,旨在优化隐式表面和辐射场的坐标 MLP 网络并估计相机位姿和场景几何形状。据我们所知,我们的 Level-S2fM 是零水平曲面集上的第一个隐式神经 SfM 解决方案。
- 从神经隐式场学习的角度来看,我们表明神经隐式场的双视图和少视图优化的挑战性问题可以通过利用二维对应中传递的归纳偏差来解决。此外,我们的方法为神经隐式渲染提供了一种有前景的方法,无需已知相机外参。
2. Related Works
2.1. Structure from Motion
SfM的文献很多。由于SfM系统由许多组件组成,因此人们在改进SfM的核心组件方面付出了巨大的努力。特别是,学习技术被引入到各种子问题中,包括图像匹配[7, 33]、特征轨迹挖掘和管理[42]、双视图3D重建[41,47]、相对和绝对相机姿态估计[14] ] 和光束法平差 [3, 40]。这些研究表明学习范式有望提高 3D 重建的质量。然而,据我们所知,SfM 系统中的学习范式尚未完全配备。造成这种情况的一个可能原因是,许多学习方法都是以监督学习方式设计的,这对于分布外的样本仍然存在一些风险。 3D 视觉中的自监督学习方法 [9, 23] 减轻了数据注释的需求,但是,它们尚未在 SfM 的整个流程中得到充分利用。
与上述研究相反,在本文中,我们感兴趣的是在不产生任何外部数据注释的情况下将学习能力集成到 SfM 系统中。从 SfM 系统设计的角度来看,我们验证了二维对应中传递的强归纳偏差对于推动 SfM 的学习和优化是有前景且有意义的。
2.2. Neural Implicit Representation for 3D Scene
最近,神经隐式场 [25,30,31,43,44,49] 的出现极大地推进了许多 3D 视觉问题,例如通过学习从一组已知位姿的 RGB 图像中优化坐标 MLP进行新颖视图合成 [1,25] 和表面重建 [30,31,43,49] ,其中成功的关键是神经网络利用了 3D 的归纳偏差。然而,当相机位姿无效时,很难优化神经隐式场的坐标 MLP。为了解决这个问题,最先进的 SfM 系统 COLMAP [34] 被广泛用于计算相机姿势作为预处理步骤。
为了直接从未知姿势图像中训练神经场,最近,BARF [19] 和 NeRF [45] 探索通过体积渲染联合优化相机姿势和神经场,并在 forward-facing 场景中获得了可喜的结果。 BARF 还可以在一些高度重叠和密集的图像集合场景中工作,并将初始化的姿势作为输入。 RGBD SLAM 系统[2,39,50]也研究了这个问题,然而,他们的工作主要依赖于已知的深度信息,并专注于通过神经隐式场进行相机姿态跟踪。因此,如何在没有任何 3D 信息输入的情况下仅从一组未校准图像中优化隐式神经场仍然是一个具有挑战性和开放性的问题。
在本文中,我们一起研究未知姿态神经场优化和 SfM,并提出一个统一的解决方案,该解决方案可同时学习隐式表面和辐射场以及从一组图像进行相机姿态估计和场景重建。
3. Preliminaries
在本节中,我们将介绍神经隐式表面渲染的预备知识以及 SfM 中的符号,这些都在我们的方法中广泛使用。
3.1. Neural Implicit Surface Rendering
神经隐式表面的体积渲染[49]旨在通过一组已知相机位姿图像的体积渲染来学习有符号距离函数 d Ω : R 3 → R d_Ω:\mathbb{R} ^3→\mathbb{R} dΩ:R3→R,然后提取 ϕ \phi ϕ 的零水平集作为图像的重建表面模型。最先进的方法 VolSDF [49] 通过拉普拉斯分布(1)将 SDF 表示与神经体积渲染集成在一起。
其中 β β β 是 VolSDF [49] 中的一个可学习参数。基于等式 (1),体积渲染方程渲染通等式(2)渲染一条从摄像机位置 o ∈ R 3 o ∈ \mathbb{R} ^3 o∈R3 沿单位方向 v v v 发出的射线 x ( t ) , x ( t ) = o + t v x(t), x(t) = o + tv x(t),x(t)=o+tv 。
其中 L ( x , n , v ) L(x, n, v) L(x,n,v) 是辐射场, n ( t ) n(t) n(t) 是由 n ( t ) = ∇ x d Ω ( x ( t ) ) n(t) = ∇_xd_Ω(x(t)) n(t)=∇xdΩ(x(t)) 定义的点 x ( t ) x(t) x(t) 的法线方向。在体绘制的学习中,两个坐标MLP(多层感知器)网络通过 ϕ ( x ) = ( d ( x ) , z ( x ) ) ∈ R 1 + 156 \phi (x) = (d(x), z(x)) ∈ \mathbb{R} ^{1+156} ϕ(x)=(d(x),z(x))∈R1+156 参数化 SDF 和辐射场 L ψ ( x , n , v , z ) ∈ R 3 L_ψ(x, n, v, z) ∈ \mathbb{R} ^3 Lψ(x,n,v,z)∈R3,并通过颜色损失 L R G B ( φ , ψ , β ) L_{RGB}(φ, ψ, β) LRGB(φ,ψ,β) 和 Eikonal 损失 L e i k ( φ ) = E z ( ∣ ∇ d ( z ) ∥ − 1 ) L_{eik}(φ) = \mathbb{E}z(|∇d(z)∥ − 1) Leik(φ)=Ez(∣∇d(z)∥−1) 训练它们。
在本文中,我们使用方程(1)和(2)作为Level-S2fM的基本工具。为了使 SDF 和辐射场网络的优化更容易,我们将 β β β 设置为一个小常数,并使用多分辨率网格表示来避免由于场景规模未知而导致缓慢收敛和灾难性遗忘的可能性,且原始 VolSDF [49]需要在一定范围内标准化已知的相机位姿。
3.2. Ray Sampling and Sphere Tracing
Iterative Ray Sampling.
在实现中,方程(2)的连续形式近似为
其中 { t i } i = 1 m \{t_i\}^m_{ i=1} {ti}i=1m 是离散样本, 0 = t 1 < t 2 < . . . < t m = M 0 = t_1 < t_2 <... < t_m = M 0=t1<t2<...<tm=M , M M M 是一些大常数。 τ ^ i ≈ τ ( s i ) Δ s \hatτ_i ≈ τ (s_i)Δs τ^i≈τ(si)Δs 是近似 PDF 乘以区间长度。在VolSDF [49]中,根据不透明度近似误差自适应计算 { t i } i = 1 m \{t_i\}^m_{ i=1} {ti}i=1m。详细内容请移至[49]。在我们的方法中,当使用渲染损失和 Eikonal 损失时,我们继续使用这种迭代采样策略。然而,由于采样集 t i {t_i} ti 很大,自我们开始开发这项工作时,就不使用此策略从 Level-S2fM 中的 2D 关键点计算 3D 点,而是使用球体追踪 [10] 作为更快的方法。
Sphere Tracing.
球体追踪是一种根据有符号距离函数渲染深度的几何方法。与迭代射线采样不同,球体追踪旨在以尽可能少的查询沿着射线 x ( t ) x(t) x(t) 击中表面点。为了清楚起见,我们用 s i s_i si 来表示查询点 x(si) 的光线标记。对于查询点 x ( s i ) x(s_i) x(si),下一个光线标记 s i + 1 s_{i+1} si+1 通过 s i + 1 = ϕ ( x ( s i ) ) s_{i+1} = \phi(x(s_i)) si+1=ϕ(x(si)) 计算。在我们的研究中,我们最多采样 N s = 20 N_s = 20 Ns=20 个点,停止标准 ∣ ϕ ( s i ) ∣ < ε |\phi(s_i)| < ε ∣ϕ(si)∣<ε,其中 ε 在我们的实验中设置为 0.002。
Remarks.
尽管迭代射线采样[49]和球体追踪[10]共享沿射线计算表面点的相同目标,但它们在神经隐式表面优化中具有不同的行为。具体来说,由于 VolSDF [49] 的目标是通过 SDF 来近似不透明度,因此它通过渲染损失 L c o l o r L_color Lcolor 来更新 SDF 网络 ϕ ( x ) \phi(x) ϕ(x)。至于球体追踪,它是一种仅考虑 SDF 值进行计算的几何方法。这种差异在某种程度上是微不足道的,但是,我们发现它们的不同焦点在我们的 Level-S2fM 中引入了一个损失函数,以约束两视图初始化和 3D 点三角测量的渲染深度值(或 3D 点)。(We found that their different focuses induce a loss function in our Level-S2fM to constraint the rendered depth values (or 3D points) for two-view initialization and 3D point triangulation.)
3.3. Notations in SfM
Correspondence Search.
给定图像集 I = I i ∣ i = 1... N I \mathcal{I}= {I_i|i = 1...N_I} I=Ii∣i=1...NI用于重建,由 SIFT [22] 计算的图像 I i I_i Ii 的关键点特征表示为 F i = ( x j , f j ) \mathcal{F}_i = {(x_j, f_j)} Fi=(xj,fj),其中 x j ∈ R 2 x_j ∈ \mathbb{R} ^2 xj∈R2 是 2D 坐标, f j ∈ R 128 f_j ∈\mathbb{R} ^{128} fj∈R128 是 x j x_j xj 的特征描述符。基于SIFT特征,我们遵循COLMAP [34]中的模式来建立跨视图的特征对应关系,其中我们首先对所有可能的图像对进行详尽的匹配,然后使用几何验证来过滤掉不重叠的图像对。此后,潜在重叠的图像对表示为 C = ( I a , I b ) ∣ I a , I b ∈ I \mathbb{C} = {(I_a, I_b)|I_a, I_b ∈ \mathcal{I}} C=(Ia,Ib)∣Ia,Ib∈I,并且该对 ( I a , I b ) (I_a, I_b) (Ia,Ib) 中的关键点对应关系表示为集合 M a b = ( x k ) , f k ) , ( x l ′ , f l ′ ) ∣ ( x k , f k ∈ F a , ( x l ′ , f l ′ ) ∈ F b \mathcal{M}_{ab} = {{(x_k) , f_k), (x^′_l, f^′_l )} |(x_k, f_k ∈ \mathcal{F}_a,(x^′_l, f^′_l ) ∈ \mathcal{F}_b} Mab=(xk),fk),(xl′,fl′)∣(xk,fk∈Fa,(xl′,fl′)∈Fb。最后,所有准备好的对应关系被组织为场景图 [34, 37],它将图像存储为图节点,将重叠图像对存储为图边缘。在我们的 Level-S2fM 中,我们使用建立的对应关系来驱动 MLP 的学习,估计相机姿态,并重建稀疏点集对应。
3D Scene Points and Feature Tracks.
由于 SfM 被指定用于根据 2D 对应关系同时估计场景几何形状,因此每个成功重建的 3D 场景点都源自多个 2D 关键点观测。为了便于表示,我们将预期的 3D 点集表示为 X = { X k ∈ R 3 ∣ k = 1 , . . . , N 3 d } \mathcal{X} = \{X_k ∈ \mathbb{R} ^3|k = 1,...,N_{3d}\} X={Xk∈R3∣k=1,...,N3d}。对于每个点 X k ∈ X X_k ∈ \mathcal{X} Xk∈X ,如果它是从 2D 关键点 x j ∈ F i x_j ∈ \mathcal{F}_i xj∈Fi 重建的,我们用元组 ( k , i , j ) (k, i, j) (k,i,j)中表示这样的关系。 T = ( k , i , j ) T = {(k, i, j)} T=(k,i,j) 是特征轨迹的集合。
4. The Proposed Level S2fM
图 2.Level-S2fM 流程。
在本节中,我们将介绍 Level-S2fM 的细节。如图2所示,我们的方法由三个经典组件组成,包括1)双视图几何初始化,2)新帧配准,3)新帧姿态细化,由神经网络参数化的隐式表面和辐射场。接下来,我们将展示如何通过学习具有 2D 对应关系的隐式场来解决 SfM 问题。我们假内参矩阵 K 是已知且固定的。
4.1. Two-view Initialization
接下来,我们将展示如何通过学习具有 2D 对应关系的隐式域来解决 SfM 问题。假定内参矩阵 K K K 是已知且固定的。
我们首先从场景图中选择两个好的视图 I a , I b {I_a, I_b} Ia,Ib 进行初始化并获取它们的 2D 匹配 M a b = ( x k ) , f k ) , ( x l ′ , f l ′ ) ∣ ( x k , f k ∈ F a , ( x l ′ , f l ′ ) ∈ F b \mathcal{M}_{ab} = {{(x_k) , f_k), (x^′_l, f^′_l )} |(x_k, f_k ∈ \mathcal{F}_a,(x^′_l, f^′_l ) ∈ \mathcal{F}_b} Mab=(xk),fk),(xl′,fl′)∣(xk,fk∈Fa,(xl′,fl′)∈Fb。基于 2D 匹配 M a b \mathcal{M}_{ab} Mab,我们利用 5 点算法 [29] 和 RANSAC 来获得位姿 P a , P b ∈ S E ( 3 ) P_a,P_b ∈ SE(3) Pa,Pb∈SE(3)。
利用估计的相机位姿 P a , P b P_a,P_b Pa,Pb,可以直接优化第 2 节中定义的 SDF 网络 ϕ ( x ) \phi(x) ϕ(x) 和第三节定义的辐射场网络 L ψ ( x , n , v , z ) L_ψ(x, n, v, z) Lψ(x,n,v,z)。 通过最小化损失项 L R G B L_{RGB} LRGB 和 L e i k L_{eik} Leik,如 VolSDF [49] 中所做的那样。然而,应该注意的是,以这种方式学习双视图输入的体积表面渲染会因过度拟合而陷入局部最小值。为此,我们建议对图像 I a I_a Ia 和 I b I_b Ib 中的相应射线使用可微球跟踪 [10, 20],这为网络优化提供了强归纳偏差。
具体来说,用图像对 I a , I b {I_a, I_b} Ia,Ib 中的一对特征匹配 ( x k , x l ′ ) (x_k,x^′_l) (xk,xl′) 表示,球体追踪从SDF中获得表面点 X a k = o a + t ^ a d a X^k_a = o_a + \hat t _ad_a Xak=oa+t^ada 和 X b l = o b + t ^ b d b X^l_b = o_b + \hat t _bd_b Xbl=ob+t^bdb,其中 ( o a , d a ) (o_a, d_a) (oa,da) 是 x k x_k xk 的射线, ( o b , d b ) (o_b, d_b) (ob,db) 是 x l x_l xl 的射线。对于 t ^ a \hat t_a t^a 和 t ^ b \hat t_b t^b的计算,请参阅我们的补充材料。理想情况下, X a k X^k_a Xak 和 X b l X^l_b Xbl 应该尽可能接近,因此,我们引入重投影损失:
图 3. 双视图初始化中深度一致性损失 L d c L_{dc} Ldc 的说明性比较。如图所示,当我们删除 L d c 时 L_{dc} 时 Ldc时,从所有假定的 2D 关键点对应追踪的 3D 点将包含更多的噪声。
考虑到当SDF网络在某些射线上优化不佳时,对应关系是稀疏的,SDF网络上球体追踪得到的稀疏样本点可能不准确或错误,如图3所示。因此,我们使用深度一致性损失 L d c L_{dc} Ldc,以最小化由球体追踪和体积渲染估计的深度。
其中光线 x ( t ) x(t) x(t) 是从图像中随机采样的,这些光线也用于计算颜色损失 L R G B L_{RGB} LRGB。为了计算 Eikonal 损失 L e i k L_{eik} Leik,使用球体追踪和密集射线行进访问的所有 3D 点。
总之,我们的 Level-S2fM 的双视图初始化通过以下方式计算总损失 L t o t a l i n i t L^{init}_{total} Ltotalinit:
其中 α 1 、 α 2 、 α 3 α1、α2、α3 α1、α2、α3和 α 4 α4 α4是超参数,并使用ADAM优化器来优化网络。
初始化完成后,我们通过图像 I a I_a Ia 和 I b I_b Ib 的球体追踪来计算每个对应关系的两个 3D 点 X X X 和 X ′ X^′ X′。为了准确对应, ∥ X − X ′ ∥ ∥X − X^′∥ ∥X−X′∥ 及其 SDF 值应足够小,从而提供良好的标准来检查假定的匹配,以所有已验证的双视图对应关系的3D点集 X \mathcal{X} X 和特征轨迹集 T \mathcal{T} T 。
4.2. New Frame Registration
对于每个新添加的帧,我们将首先根据现有点集及其特征轨迹构建 3D-2D 对应关系。之后,我们使用标准 PnP 算法 [18] 计算新帧的粗略位姿,然后使用重投影误差和渲染损失对其进行细化。配准损失可按下式计算:
其中 β 1 、 β 2 β1、β2 β1、β2是两个超参数,这里的 L r e p r o j L_{reproj} Lreproj是通过3D-2D对应关系计算出来的。
在本次优化中,对新添加的帧的位姿、SDF网络和辐射场网络进行了联合优化。而在姿势和 SDF 发生变化时,点集中的原始位置可能不是表面上的正确位置。针对这个问题,我们设计了一种神经光束法平差(NBA)策略,用于(在下一节中的点三角测量和细化之后)动态更新相对于 SDF 的点集。因此,我们将 NBA 的细节放在 4.4节。
4.3. Points Triangulation and Refinement
一旦获得了新添加的帧的位姿,我们就进入下一个过程:从点集 X \mathcal{X} X 中细化检索到的 2D 点,并将新的 2D 点三角测量到 3D 空间中以扩展 X \mathcal{X} X 。这个问题是在经典的 SfM 框架中提出的,但是它们面临以下问题:
- 2D 不匹配:这个问题可以通过 RANSAC [8] 等几何验证或更好的 2D 关键点匹配方法来缓解,但是,当遇到对称结构或重复的纹理区域时,这些方法很难有效地发挥作用。
- 微小的三角测量角:这个问题将导致点三角测量的病态问题[13]。因此,经典的 SfM 方法将直接丢弃这些点以避免病态问题。
我们提出基于 SDF 的三角测量来解决这些问题。与第 4.1 节中的双视图初始化类似。我们在第一步中计算所有潜在 2D 关键点的 3D 点。然后,对于当前特征轨迹集 T \mathcal{T} T 中具有对应关系的 2D 关键点,我们使用跟踪损失 L t r a c i n g L_{tracing} Ltracing
其中 X j ∈ X X_j ∈ \mathcal{X} Xj∈X 是当前帧中 2D 关键点的检索到的 3D 点, V ′ V^{'} V′ 是检索到的 3D 点的数量。该损失函数的作用与 L d c L_{dc} Ldc 在双视图初始化中的作用类似。如果没有它,就会发生类似图3的现象。
对于与添加的图像匹配但没有 3D 信息的新 2D 关键点,使用类似于双视图初始化的重投影损失和跟踪损失来生成三角测量损失 L t r i L_{tri} Ltri,如下所示
其中 L r e p o r j m a s k L^{mask}_{reporj} Lreporjmask 仅考虑 2D 对应关系,其在不同视图中追踪的追踪 3D 点的 2D 投影之间的距离小于松散阈值(在我们的实现中为 45 像素)。
4.4. Neural Bundle Adjustment on Surfaces
由于相机位姿估计和点三角测量是分开的,这会涉及位姿估计和三角测量以及隐式网络的累积误差。受经典方法中广泛使用的BA启发,我们提出了一种神经光束法平差(NBA),它联合优化估计的相机点、3D 点集和隐式网络作为细化步骤。为了避免昂贵的计算,我们的 NBA 步骤找到最近的表面点来动态更新这些变量。
由重建的 3D 点集 X \mathcal{X} X 和特征轨迹集 T \mathcal{T} T 表示,相机姿态 P = { P 1 , … , P K } \mathcal{P} = \{P_1,…,P_K \} P={P1,…,PK} 和相应的图像 { I 1 , . . . , I K } \{I_1,...,I_K \} {I1,...,IK},以及网络 ϕ ( x ) \phi(x) ϕ(x) 和 L ψ L_ψ Lψ,在 NBA 的每一步中,我们通过以下方式更新 3D 点 X ∈ X X ∈ \mathcal{X} X∈X:
然后根据特征轨迹 T \mathcal{T} T 计算重投影损失,以联合优化 SDF 网络 ϕ \phi ϕ、估计相机姿态 P \mathcal{P} P 和更新后的 3D 点集 X \mathcal{X} X。对于辐射网络 L ψ L_ψ Lψ,计算随机采样光线的渲染损失。
在我们的实现中,我们使用了三次NBA,我们称之为单帧 NBA、局部NBA 和全局 NBA。由于渲染损失涉及更多光线,因此我们仅将其用于摄像机配准和点三角测量后的 单帧 NBA。对于局部NBA而言,对于新添加的视图,仅考虑具有对应关系的相关视图。运行单帧和局部 NBA 方案后,我们全局更新所有重建视图和点集。通过利用反向传播,所有提到的变量都会随着细化而更新。
5. Experiments
5.1. Implementation Details, Datasets, and Metrics
实施细节。在我们的实现中,我们通过多分辨率特征网格和两层 MLP 参数化 SDF ϕ ( x ) \phi(x) ϕ(x)。为了加速计算,我们遵循 InstantNGP [28] 对特征网格使用哈希表 [27]。辐射场 L ψ L_ψ Lψ 也在多分辨率特征网格和三层 MLP 中实现。由于我们的最终任务是几何 3D 重建,因此我们对 SDF 使用高分辨率多尺度特征网格来确保场景几何的准确性,但使用低分辨率特征网格来避免辐射场不必要的计算成本。 由于篇幅有限,网络架构的规范在补充材料中给出。以上所有这些都是在 PyTorch [32] 中实现的,我们使用 Adam [17] 作为几何计算的优化器。对于 2D 图像匹配和姿态图,我们将它们与我们的基线 COLMAP [34] 保持相同,以进行公平比较。
数据集。我们的评估使用三个数据集。首先,我们在评估中使用 BlendedMVS 数据集 [48] 中的 5 个代表性场景,包括 LyingStatue、Stone、Fountain、Horse 和 Statues,因为它提供了相机姿势的准确地面实况,并包含许多对 SfM 具有挑战性的场景。其次,还使用了MVS任务的DTU数据集。我们的实验中使用了五个代表性场景(scan 24、37、65、110 和 114)。最后,我们在具有挑战性的 ETH3D [36] 数据集中的五个场景上评估我们提出的方法。
评估指标。在我们的评估中,我们使用旋转误差和 ATE 来定量基准姿势精度,它简单地描述了地面实况和对齐姿势之间的差异。在我们的评估过程中,我们使用 COLMAP [34] 中提供的重建对齐 API 来做到这一点。就重建场景几何而言,我们使用准确度 (Acc) 和精度 (Prec) 率来评估恢复的 3D 点的准确度,并使用 Chamfer-l1 距离来描述重建表面的准确度。补充材料中给出了这些评估指标的详细定义。
5.2. Results on the BlendedMVS Dataset
表 1. BlendedMVS 数据集的定量结果。对于我们的 Level-S2fM,我们通过完整版本和 wo/render 版本报告结果,该版本消除了优化期间的渲染损失。
表1报告了Level-S2fM和COLMAP两个版本的定量评估结果[34]。 Level-S2fM 的完整版本使用了所有提到的组件,而 wo/render 版本则删除了渲染损失以进行优化。据报道,我们的 Level-S2fM(完整)在相机姿态估计和稀疏 3D 点云重建方面始终优于 COLMAP [34]。它还表明需要渲染损失。
具体来说,我们的 Level-S2fM(完整)平均将估计误差从 COLMAP [34] 的 1.54° 降低到 0.86°,相对提高了 55.84%。对于平移误差,我们的 Level-S2fM(完整)将误差从 3.54 厘米减少到 3.36 厘米。对于稀疏 3D 点云重建,完整模型的 ACC 指标从 3.16 减少到 2.25,wo/render 版本的 ACC 指标减少到 2.63。
图 4 显示了我们的方法的重建结果。除了在 BlendedMVS 数据集上直接评估 SfM 结果之外,我们还通过训练 NGP [28](NeRF [25] 的快速版本)来比较不同方法的相机姿态估计结果,以比较新颖视图合成的性能在表2中报道,我们的相机姿势渲染的图像始终优于 COLMAP 姿势渲染的图像。
图 4. 我们的 Level-S2fM(完整)在 BlendedMVS 数据集上重建的网格、点云和相机姿势。在第一列中,重建的场景几何形状和相机姿势一起显示。对于 3D 模型,我们展示了训练期间稀疏 3D 点的不同视图以及来自零水平集表面的纹理网格。
表 2. 新颖的视图合成比较。 PSNR 用于比较由 COLMAP、Level-S2fM 计算的相机姿态和 BlendedMVS 数据集上的 GT 位姿。
5.3. Results on the DTU Dataset
我们对 DTU 进行了评估,以说明我们的 Level-S2fM 在统一姿态估计、密集重建和新颖的视图合成问题的前景。为了与 COLMAP 进行比较,我们使用其内置的 PatchMatch MVS [35] 功能来获取密集的表面点,然后利用其默认的表面重建方法(即泊松表面 [16])来获取网格模型。对于我们的 Level-S2fM,我们使用 MarchingCubes [21] 从隐式曲面的零级集中提取网格模型。定量评价结果如表3所示。 在此数据集中,我们的 Level-S2fM 获得了与 COLMAP 相当的性能。
表 3. DTU 数据集的定量结果。将密集重建结果的 Chamferl1 距离以及相机姿态估计的旋转和平移误差与 COLMAP 和我们的 Level-S2fM 进行比较。 Chamfer-l1 和平移误差的单位为毫米。
5.4. Results on the ETH3D Dataset
我们在更具挑战性的数据集 ETH3D [36] 上测试我们的方法,其中包括多尺度室外和室内场景的稀疏视图集合。为了显示不同关键点检测和匹配算法对我们方法的影响,我们还与用于检测的 SuperPoint (SP) [7] 和用于关键点匹配的 SuperGlue (SG) [33] 进行了比较。正如表中报道的那样。如表4 所示,我们的方法取得了与 COLMAP [34] 相当的结果。然而,我们观察到,由于单个网络对大规模场景的代表能力有限,我们的方法在一些大型室外场景中得到的结果稍差。
表 4. 使用不同的关键点检测器和匹配器对 COLMAP [34] 和我们提出的 LevelS2fM 的 ETH3D 数据集中的五个场景进行姿态估计的定量结果。
5.5. Ablation Study
在本节中,我们将详细说明基于 SDF 的三角测量(简称 SDF-Tri)和 NBA 在我们的系统中工作的原因和方式。我们首先分别用SDF-Tri和传统方法进行两视三角测量。图 5 显示 SDF-Tri 可以轻松地从错误匹配中过滤掉不正确的三角测量。一种解释是神经网络在连续的零水平表面集中提取内点(例如图 5 中的平面)。因此,三角测量的异常值(飞离平面的蓝点)可以通过其较大的 SDF 值轻松检测和过滤。类似地,NBA 也受益于表面的全局水平集,它平均内部三角测量点之间的误差,并通过较大的 SDF 值来区分异常值。 SDF-Tri 和 NBA 的定量结果如图 5 底部所示。
图 5. 通过传统三角测量和基于 SDF 的三角测量的两个视图三角测量点云。
5.6. Limitations of Level-S2fM
为了探索Level-S2fM的清晰边界并指出未来潜在的发展,我们讨论了Level-S2fM在最典型的室内数据集scannet上的局限性[6]。在 Scannet [6] 中,存在很多挑战,包括图像模糊和无纹理区域。由于纹理较少,基于 SIFT 的关键点对应可能包含大部分异常值或不充分的匹配。同时,图像的模糊也会影响二维匹配的准确性。因此,大多数 SfM 在此数据集上很容易失败。由于 SIFT 匹配,我们的方法也受到限制。
为了使讨论清晰,我们运行用于 NICESLAM [50] 的 Scannet [6] 的四个场景。对于每个场景的图像序列,SfM的输入图像集是通过每10帧采样构建的。表 5 通过添加 60 帧、120 帧和所有帧(通过“斜杠”连接)来报告 COLMAP 和 Level-S2fM 的姿势精度。据报道,我们的方法通常在前 60 帧中表现良好,但当添加一些新帧时,其姿态估计精度突然下降。无纹理匹配导致匹配非常稀疏,因此很难提供良好的图像配准。同时,由于 Scannet 数据集中的辐射场学习也具有挑战性,因此糟糕的初始化姿势无法通过渲染损失得到很好的细化。所有这些限制基本上都来自于稀疏的二维图像匹配。此外,我们观察到ADAM优化器会使相机位姿和场景点的优化不稳定,这也会影响最终结果。
表 5. ScanNet [6] 上姿态估计的定量结果。对于 COLMAP 和 Level-S2fM,我们在注册 60/120/所有帧时报告其姿态准确度指标。对于最后一个场景(即 0207),COLMAP 和我们的方法都失败了。
6. Conclusion
本文通过探索和利用几个重要但具有挑战性的问题来研究SfM长期存在的几个问题,包括初始化阶段的双视图神经渲染,增量 SfM 的早期相机配准阶段的少视图神经渲染,以集成神经隐式场学习在 SfM 管道中的最新进展。我们表明,尽管少视图神经渲染问题足够具有挑战性,但它可以通过 2D 对应来解决,因为它们传达了 3D 场景的强烈归纳偏差。基于此,我们提出了首个神经 SfM 解决方案,它更新了双视图几何初始化、相机姿态配准和三角测量的几个关键组件,以及神经隐式场的光束法平差问题。在实验中,我们表明 Level-S2fM 优于传统的 SfM 管道,并在 BlendedMVS 数据集上的 3D 重建的达到了sota。相信我们的研究将鼓励 3D 视觉社区通过基于学习的新发现重新思考和重新制定SfM。
Supplementary Material
另外附录里面有几个图值得学习一下。
图 6. 多分辨率特征网格。
对于每个查询的 3d 点,首先在多分辨率网格插值查询点的特征,然后将多分辨率特征连接到 MLP 中以获得密度或辐射率。为了加速训练,在实现中采用了多分辨率哈希表。
图 10. 球体追踪和深度一致性。
正如论文中提到的,从 2D 关键点获取 3D 点的关键组件是球体追踪。球体追踪算法[20]利用了有符号距离函数的基本属性,其中每个位置处查询的SDF值是从该点到表面的零水平集的最近距离。通过球体追踪算法,我们可以有效地从2d得到3d点,这可以成为SDF学习的天然约束。但有时,当零水平集正确而非零水平集错误时,球体追踪无法正确追踪表面。因此,它不能保证球体追踪算法的多视图一致性(见第二部分)。为了克服这个问题,使用体积渲染计算的深度作为约束,以保持论文中提到的这两种采样策略之间的一致性。
图 11. 重建和姿势估计的定性结果。第一列是拒绝的网格和相机姿势的可视化。而第二个和第三个分别是网格和包含点的网格。我们可以观察到我们的重建点粘在网格表面上。最后一列是重建的点云。
评论:
- 需要相机位姿作为已知信息确实是NeRFs的一个问题(有的观点认为这不是问题,位姿是应该的,但是这确实导致了NeRFs工作看起来不够“独立”),这份工作至少占了“多快好省”四个大字的一个“省”字。
- 在文中有提到 由于我们的最终任务是几何 3D 重建,因此我们对 SDF 使用高分辨率多尺度特征网格来确保场景几何的准确性,但使用低分辨率特征网格来避免辐射场不必要的计算成本。 但是该说不说,这个最终的三维重建结果与其他三维重建工作相比在精细度上还有较大进步空间。但在方法上优于传统 SfM 是确定的,遗憾的是暂未看到效率方面的报告。
- 多分辨哈希编码是老朋友了,只能说很强。但是球形追踪是第一次接触到,有意思。其工程页面上有更多动态展示,包括怎么用球形追踪剔除误匹配,NBA示意等。