??本博客于2021年发表ICCV上一篇论文《Deep Permutation Equivariant Structure from Motion》。该论文使用图神经网络SFM,其输入为一张相机-二维点的tensor,输出为恢复相机位置和三维稀疏场景提供了深度学习解决方案SFM问题的新思路。
- 论文地址:https://arxiv.org/abs/2104.06703
- 论文代码:https://github.com/drormoran/Equivariant-SFM
??
Abstract
??当相机进行内外校准时,现有的深度方法在立体和多视图立体中产生高精度的三维重建。然而,在具有深度网络的多视图环境中,恢复相机姿态和三维场景结构的挑战仍然非常突出。运动恢复结构(SfM)投影因子分解(projective factorization)深矩阵填充技术(deep matrix completion techniques)在给定静态场景多幅图像中的一组点轨迹的情况下,我们提出了一种新的网络系统结构,恢复相机参数和(稀疏)场景结构,无监督重投影损失最小化。我们的网络架构是为了尊重问题的结构而设计的:所寻求的输出与相机和场景相同。我们的网络架构是为了尊重问题的结构而设计的:所寻求的输出与相机和场景点相同。值得注意的是,我们的方法不需要相机参数或3D点位置的初始化。我们在两个设置中测试我们的架构:(1)单场景重建和(2)从多个场景中学习。我们在各种数据集中进行了两次校准和非校准实验,表明我们的方法与最先进的经典方法相当,准确地恢复了姿势和结构。此外,预训练网络可以利用廉价的微调重建新场景,而不会失去精度。 ??
1 Introduction
??运动恢复结构(SFM),从静止场景图像中恢复相机姿势和3D结构问题是传统上采用摄影几何和优化工具处理的基本问题。基于网络的姿态估计和三维重建算法,深度神经网络的兴起带来了一系列新的算法。由于这些算法可以编码适当的先验,并通过随机梯度下降有效优化,这些算法可以在许多任务中获得最先进的结果,包括结果,包括眼睛和多视觉三维。然而,尽管很少尝试(见第2节),但在具有深度网络的多视图设置中恢复相机姿势和3D场景结构的挑战依然突出。 ??本文介绍了一种深度神经网络,该网络将SFM嵌入到其经典设置中。SFM目标是在静态场景的多个图像中设置点轨迹集,计算相机参数和点的三维位置。重建的质量通常通过重投影误差函数进行评估,测量投影点的预测位置和输入轨迹(以下轨迹为二维图像上的像素点坐标)
图像位置的接近程度。现有方法调整应用束,最终或作为算法的一部分(BA, bundle adjustment),尽量减少重投影损失。 ??我们的工作工作SFM投影因子分解方法(projective factorization approaches to SFM)用深矩阵填充网络(deep matrix completion networks)的启发。投影因子分解技术寻求将轨迹位置矩阵表示为两个矩阵的函数,一个相机姿态参数矩阵和一个三维点位置矩阵。通过学习未知因素的函数来预测输入矩阵中的缺失值。深度矩阵填充系统结构的关键是其等变系统结构;例如,输入矩阵的行或列重新排序应产生相同的预测,并相应重新排序。这种等变结构比用于图像的卷积网络有效,所需的参数比标准MLP少,施加适当的归纳偏好(inductive bias,先验知识),以促进少样本的训练。 ??下面,我们将介绍它SFM等变网络系统结构(见图1)可在校准和未校准设置中恢复相机参数和场景结构。具体来说,给定轨道位置的张量(可能有很多缺失的元素),我们试图将张量表示为未知的相机姿态参数和3D点位置的函数。我们使用等变网络结构;改变图像的顺序(张量行)会产生相同的恢复相机重新排序;改变点轨迹(张量列)的顺序会重新排序恢复三维点的等效。我们的网络可以应用于单一场景,其中对于给定场景,权重被优化以直接最小化重投影损失。这种最小化不需要相机参数或场景结构的初始化,但与现有技术方法一致,实现了姿态和场景结构的精确恢复。 ??本文的一个重要贡献是,这种系统结构也可以推广到新的场景中。具体来说,我们利用无监督学习在多个场景中训练我们的网络,然后在推理中将网络应用于新场景。我们的实验表明,对于包含数百幅图像和数十万个轨迹点的场景,一个简短的细化步骤和标准BA在几分钟内准确预测新场景的相机姿势和3D点位置。最后,除了最先进的baseline此外,我们还将我们的方法与两种新的网络系统结构进行了比较:基于DeepSets网络和图形神经网络。我们将讨论这些方法的优缺点。 ??我们相信,我们的方法是利用深度学习机制来解决大型和具有挑战性的问题SFM问题向前迈出了一步。具体来说,我们的方法可以用来构建端到端模型,在没有任何额外的预处理和后处理步骤的情况下,获取一组图像,直接输出相机位置和三维点坐标。 ??
2 Previous work
?? 在计算机视觉中,运动恢复结构有着悠久的历史。摄影几何和优化算法的进步产生了许多有效的算法。一种流行的方法是顺序处理输入图像,以便在每个步骤中添加图像,重新覆盖相应的相机姿势,并使用束调整来优化累积姿势和3D结构。最近提出基于运动平均水平(motion averaging)全局技术。早期的方法是先去噪成对视图之间的相对旋转,然后去噪相对平移和缩放。最近的工作将直接应用于基本矩阵和基本矩阵。基于因子分解的另一种方法。这些方法将点轨迹的张量分解为未知相机矩阵、深度值和三维点位置的乘积。这些方法通常会产生很大的优化问题,通常通过将问题分解为较小的子问题来解决。最后,没有初始化的束调整方法(Initialization-free-bundle-adjustment methods)采用变量投影法,设计优化消除未知子集,使任何初始化的束调整更好地收敛。
?? 深度神经网络的兴起带来了新的、基于网络的姿态估计和三维重建算法。具体来说,[56、58、69]恢复两三个输入图像的相机姿态,以及图像的密集深度地图。BA net和DeepSFM由于内存限制(算法依赖于成本量),旨在恢复多视图设置中的姿态(cost volume)他们的方法只能处理少数视图。后者还需要初始化的姿态参数。IDR恢复姿势和密集结构(用隐式神经表示),但需要相机姿势和masked图像初始化近乎准确,不适合一般场景。NeuRoRA根据噪声和不完整的相对成对方向集,介绍了一种图形神经网络结构。然而,他们的方法无法恢复相机的位置。还有与此相关的Posenet,用于估计特定(训练)场景的绝对相机姿势。最后,[60]设置与相同方向相关的相机,避免初始化相机和深度恢复。相反,我们的方法适用于一般场景,有数百幅图像,没有初始化。然而,与经典方法一样,它只产生稀疏重建。
?? 以等变性为设计原则,是构建高效神经结构的流行方法,如[9、63、46、29、12、34]。在这里,我们关注结构化数据集合等变体系统结构。 ??近年来,收集结构数据的学习是一个突出的研究方向,每个数据点由几个项目组成,学习任务的顺序不变或等待。[45、68、44]率先提出了该设置的第一个通用深度架构。[30]这些工作是通过引入注意机制扩展的。与我们的工作更密切相关的是[16],它考虑了跨多个集合建模交互的设置:输入是一个矩阵(一般来说,它是一个数量),学习任务与行和列(以及其他维度)相同。本文描述了该装置的最大表达线性等变层,并用于构建等变深度模型。这些模型在矩阵补充和推荐系统应用中表现良好。这种学习设置后来被推广到任何对称元素集和层次结构。 ??
3 Approach
3.1 Problem definition
??在运动恢复结构中,我们假设M个未知相机矩阵的静态场景P1,…,Pm观察。每个相机由3个相机组成×4矩阵表示投影空间Pi: P3→ P2。在未校准设置中,这些是根据规模定义的一般矩阵。在校准设置中,这些矩阵表示相机的位置和方向,格式是Pi=[Ri | ti],其中Ri∈ SO(3)表示相机的方向和方向ti∈R3.因此,相机的位置可以由-RiTti给定。X表示齐次坐标中的三维场景,表示为X=(X1, X2, X3, 1)T∈P3.它在第一幅图像上的投影是由x = (x1, x2, 1)T ∝ PX ∈ P2给出符号∝表示按比例相等。 ??与常见的SFM算法是一样的。在给定静态场景的图像中,我们解决了在检测和匹配特征点后,以及通过鲁棒恢复图像的基础或基本矩阵来消除异常匹配SFM问题。我们算法的输入包括一组轨道(图像上的二维点)T1,…,Tn,每个轨迹都是一组二维点,Tj={xij}i∈Cj和Cj? [m] 表示检测到Xj图像。轨迹集合以大小为基础m×n×2的矩阵M(通常为稀疏的)测量方式排列,即(Mij1, Mij2, 1)T=xij,或者在图像中Ii中未检测到Xj,这些项目是空的M,我们的目标是恢复每一个轨迹的相机矩阵P={P1,…,Pm}和三维位置X={X1,X2,…,Xn}。
3.2 Model
我们的主要设计动机是建立一个模型,重新审视上述任务的对称性。现在我们将描述这些对称性,定义一个合适的模型并讨论其优点。 我们的网络以稀疏的m×n×2张量m作为输入,并输出两个矩阵:P∈Rm×12,表示一组相机和X∈Rn×3表示一组点。重要的是,我们的模型应该尊重相机P和场景点X在测量张量M中的顺序。更正式地说,让Sd表示d元素上的置换组,让τcams ∈ Sm和τpts ∈ Sn。直观地说,我们可以将这些排列视为相机和3D点的特定顺序。Sn和Sm通过排列其行和列作用于我们的测量张量M(图2)。由于相机和点的顺序是任意的,因此很自然地期望输出将根据任何给定的输入顺序重新排序。该论点表明,对于所有 τcams ∈ Sm, τpts ∈ Sn和M ∈ Rm×n×2,我们的网络F应遵循以下转换规则: 换句话说,网络应与两个群直接相乘的作用相等,即G=Sm×Sn。G在输出空间上的作用在此应理解为(τcams, τpts)·P=τcams·P和(τcams, τpts)·X=τpts·X,即置换仅作用于每个输出矩阵的一个维度。图2举例说明了这种类型的等效性。我们注意到[16]首次研究了置换群直接相乘的等变性。
线性等变映射是等变网络的主要构造块。如[16]所示,假设一个输入和输出通道,与G等价的线性映射的空间是四维的,它由恒等式、行的总和、列的总和以及矩阵总和组成。更一般地,对于多个输入和输出通道,任何G-等变仿射映射L从具有d通道的特征空间Rm×n×d到具有d’通道的特征空间Rm×n×d’ 可以用以下方式表示: 其中,对于输入张量Mij,它是一个Rd空间向量,Wi ∈Rd’xd,其中i=1,…,4和b∈Rd’是可学习的参数。等价地,L可以表示为一个mnd’×mnd的由(1)控制的参数共享方案的矩阵(参见[46,34]了解等变和参数共享之间的关系)以及可能的附加偏差项。在这里,我们用M的非空值的平均值替换总和,以保持对缺失数据的无差异性。
我们的网络由三个主要部分组成(见图1):一个共享特征编码器E和两个子网络(HEAD),Hcams和Hpts,它们根据E编码的特征生成恢复的相机和3D点。共享特征编码器采用输入张量M∈ Rm×n×2,输出一个潜在表示Rm×n×d,同时保持输入的稀疏模式。正如构造等变网络时通常所做的那样,特征编码器由几个线性等变层组成,这些线性等变层与逐点的非线性函数交错,如ReLU函数: 式中,Li,i=1…k是G-等变层,如式(1)所示,σ是逐点的非线性函数。重要的是,逐点非线性函数保持了置换的等变性,这意味着整个组合是等变的。 第一个头Hcams将潜在表示的池化平均值作为输入,并输出相机参数的矩阵表示。在未校准设置中,这将生成矩阵P∈ Rm×12,每行用于填充相应的3×4相机矩阵Pi。在校准设置中,该头生成一个m×7矩阵,我们使用每行的前四个分量构造一个表示第i个相机方向的四元数向量,最后三个分量构造相机平移向量。第二个头Hpts将对应于Xj的轨迹点作为输入,并输出3D点的矩阵表示X∈Rn×3。由于子网络使用的潜在表示的池化版本导致单集结构(single set structures),因此两个头都实现为标准等变集网络(逐元素的全连接层)。
与标准的全连接体系结构相比,使用等变体系结构有几个重要的优势。最重要的是,我们的架构将任务的结构编码到模型中,从而提供了强归纳偏好。其他好处包括(1)参数数量的可观减少:例如,在合适的全连接架构中,(1)中描述的层的线性部分只有4dd’个自由参数,而不是n2m2dd’;(2)如等式(1)所示,由于小矩阵乘法而提高了效率;(3) 更好的泛化:任何输入张量的训练都会使网络暴露在不同点和相机顺序下的所有不同实现中;(4)我们的体系结构具有处理可变大小输入和缺失项目的不同模式输入张量的关键能力。最后,虽然等变/不变模型可能会失去表达能力[65,35],但事实证明,我们使用的网络结构具有普遍近似特性(对于输入域上温和假设下的完全张量)[36],即,有足够的层和通道,并有适当的权重集,它能够逼近任何连续的G-等变函数。
3.3 Loss function
我们的网络最小化了由两项组成的损失函数:重投影损失和hinge损失。与束调整类似,重投影损失使恢复的3D点Xk投影与其在图像中检测到的位置之间的距离最小化(见图1)。另外,我们使用hinge损失来阻止恢复的深度值消失或变为负值。 假设xij是图像Ii中检测到的轨迹Tj的一个点。让未知Pi表示各自的相机,让Xj表示Tj中点的未知3D位置。为了在未校准的情况下正确测量投影深度,我们规范化每个相机矩阵Pi,使其左3×3块具有正行列式并将第三行归一化。(这些条件通过在校准情况下的构造得到满足。) 让rij的表达式如上,其中Pik表示相机矩阵Pi的第k行。因此,rij测量图像Ii中Xj的重投影误差。接下来,我们定义hij=max(0, h−Pi3Xj),其中h>0是一个小常数(在我们的设置中,h=0.0001)。因此,hij是图像Ii中Xj深度值的hinge损失。 我们将rij与hij按如下方式进行组合: 最终的损失被定义为: 其中m表示相机个数,n表示点个数。因此,对于每个检测点xij,如果恢复的深度值超过阈值h,则损失测量重投影误差;如果恢复深度为负值或接近零,则损失测量hinge损失。请注意,为了保持稳健性,我们在重投影过程中使用了L2度量,与标准MSE相反。我们注意到,我们的损失函数在深度值为h的点上是不连续的。然而,就网络权重而言,它几乎在任何地方都是可微的。
3.4 Optimization and learning strategies
我们在两个设置中应用我们的模型。在单场景设置中,我们使用随机权重初始化网络,并使用反向传播最小化损失函数(3)。最后,我们使用三角化来估计3D点的位置,并应用束调整。 在学习场景中,我们使用来自多个场景的轨迹来训练模型。在训练时,我们将损失函数(3)最小化,同时在输入场景之间切换。我们在验证集上评估成功率,并使用提前停止(early stopping)来保持模型在该集上达到最佳重投影误差。为了在新场景上测试模型,给定测量张量,我们要么将网络应用于张量以获得初始重建,要么通过运行预定次数的反向传播对模型进行微调。我们通过束调整来完成这些。网络的推断速度非常快,在DGX机器上大约需要百分之一秒,因此总测试时间主要由可选的微调和束调整时间决定。
4 Experimental setup
我们在单一场景和学习场景以及校准和未校准设置中的各种数据集上测试了我们的模型。
4.1 Datasets and baselines
4.1.1 Uncalibrated setting
对于这个设置,我们使用了来自Olsson’s[39]和VGG[57]数据集的39次扫描数据。这些扫描中的图像数量从10到400不等,轨迹传感器的点数从300到150K不等。我们将我们的方法与以下基线进行比较。
[21] 将基于变量投影(VarPro)的无初始化优化策略应用于射影束调整。
[26] 基于基础矩阵平均的全局算法。该算法最大限度地减少了代数损失,即,它寻求可通过投影相机实现的最接近的基础矩阵集合。
[33] 一种基于渐进优化的序列方法,用于投影结构和相机,同时考虑对所寻求的投影深度的约束。
4.1.2 Calibrated setting
对于此设置,我们使用了Olsson数据集中的36次扫描[39]。数据集包括相机参数“真值”,包括内外参(位置和方向),这些参数实际上是用Olsson的SFM方法重建的。相机的数量从12到419不等,轨迹张量中的点的数量从319到156k不等。
[25] 与GPSFM类似,这是一种基于基础矩阵平均的全局算法。该算法最小化代数损失,即,它寻求可用Euclidean相机实现的最接近的基础矩阵集合。
[23] 该算法在最小化近似几何误差的同时,增强了相机三元组的一致性。(对于该算法,我们无法找到一组适用于所有数据集的阈值参数,因此对于每次扫描,我们报告最佳运行结果。)
[47,48,49] 一种最先进的增量式方法。
4.2 Implementation details
我们的方法在NVIDIA Quadro RTX 8000/RTX 6000/DGX V100 GPU上运行。我们使用PyTorch作为深度学习框架,并使用标准化梯度的ADAM优化器。对于涉及图形的实验(第5.4节),我们使用PyTorch Geometric。
在校准和未校准设置中,我们将数据集随机分为三部分:10个场景用于测试,3个场景用于验证,其余用于训练。在训练期间,我们在不同的训练场景之间交替进行,在每个epoch中,我们对场景中10-20幅图像的随机子集进行训练。我们使用validation来提前停止(early stopping)。对整个场景进行了验证和测试。
由于除以Pi3Xj会导致梯度爆炸,在反向传播过程中,我们在每一步对PiXj的梯度进行归一化。
我们方法的输入包括归一化点轨迹xij。在校准设置中,我们使用已知的固有参数对点进行归一化。在未校准设置中,我们使用Hartley归一化。为了提高效率,我们将编码器设计为适合于稀疏矩阵的工作方式。共享特征编码器E具有3个层,每个层在单个场景和训练设置以及ReLU激活中分别具有256或512个特征通道。相机头Hcams和3D点头Hpts各有2层,分别具有256或512个通道,用于优化和训练。在E中的每一层之后,我们通过减去其平均值来标准化其特征。
我们用不同的超参数测试了我们的模型,包括:(1)学习速率为 {1e−2,1e−3,1e−4} ,(2)编码器E和heads的网络宽度{128,256,512},(3)这些网络中的层数{2,3},(4)深度阈值h∈ {1e−2,1e−3,1e−4} ,(5)在(1)中输出的层的标准正则化。
对于捆绑调整,我们使用带Huber损失(参数为0.1)的Ceres BA来实现鲁棒性,并将迭代次数限制在100。
4.3 Evaluation
在未校准设置中,我们使用平均重投影误差测量精度,以像素为单位测量,如下所示 有关注释,请参见第3.3节。在校准的情况下,我们进一步评估我们对相机外参的预测。具体来说,我们通过测量角度差异(以度为单位)以及预测和相机位置真值之间的差异(以米为单位),将我们的相机方向预测与地面真实相机方向预测进行比较。为了公平比较,我们的方法和所有基线方法都使用相同的点轨迹集运行。对于所有方法,我们应用束调整的最后后处理步骤。下面我们展示了BA前后的结果(辅助材料中提供了基线方法BA前的结果)。
5 Results
接下来我们将介绍我们的实验结果。我们展示了单场景恢复和多场景学习的结果。然后,我们提出了一项消融研究,并与其他新型神经结构进行了比较。
5.1 Single scene recovery
表1和表2分别显示了未校准和校准设置的结果。在大多数情况下,我们的方法实现亚像素精度,与经典的最先进的方法,如VARPRO和COLMAP相媲美。值得注意的是,正如我们在补充材料中所示,在BA之前,我们的方法通常达到亚像素精度,显著超过GPSFM。我们还注意到,与基线方法不同,基线方法通常会移除一部分相机(我们标记了至少10%的相机用parenthesis移除的实验),我们的结果会在所有相机上进行评估。然而,在少数情况下,我们的方法没有收敛到一个有利的解决方案。我们发现,在这些情况下,网络达到了一个最小值,其中一部分相机接近其位置真值,而其他相机似乎被一个不同的全局变换所取代。这可以通过顺序优化来解决,更多细节和结果见补充材料。我们注意到,我们与VarPro的比较是部分的,因为在许多实验中,它超越了内存或运行时的限制。
5.2 Learning from multiple scenes
表3和表4分别显示了我们的训练模型在校准和未校准设置下的测试结果。在每种情况下,我们都报告像素级的重投影误差。对于我们的方法,我们将使用我们的模型进行推断的结果以及在额外的500个epoch进行微调之后(两种情况下均+BA)这两种结果都显示出来了。将其与500个epoch的单场景优化(从随机初始化开始)以及最先进的VarPro和Colmap进行比较。可以看出,随着额外的微调在大多数情况下,我们的网络达到亚像素精度,往往等同于最先进的方法。图3显示了测试数据的几个重建结果。 我们注意到,使用我们的模型进行推理通常只需要一秒钟的一小部分时间,因此总运行时间由微调和BA控制。例如,巴塞罗那某大教堂的数据集(有177个摄像头和∼30K点)推理仅消耗0.007秒。500epoch微调+BA在DGX机器上耗时263秒,略快于Colmap(8线程上451s,2.2GHz CPU),明显快于我们的完整单场景优化,对于这个具有70K epoch的数据集,优化耗时近3小时。补充资料中报告了所有测试数据集的运行时间。
5.3 Ablation study
我们进一步进行了消融研究。我们测试了我们的单场景方法(a)作为一个简单的元素特征编码器,即从(1)中删除W2、W3和W4,(b)使用Adam优化器直接优化公式(3),将相机和3D点视为自由变量(即无网络),以及(c)随机初始化的标准束调整。表5显示了未校准设置的结果。结果强调了W2、W3和W4产生的全局特征的重要性。此外,也许令人惊讶的是,仅Adam优化器与我们的损失(3)相结合,就实现了比标准捆绑调整更显著的提升。
5.4 Comparison to alternative deep architectures
我们进一步将我们的方法与SFM的两种新型深层结构进行了比较。第一种架构使用了一个集合神经网络[68],类似于我们的相机头Hcams,我们在其中添加了一个全局特征。该网络将3D点位置视为自由变量,从而优化相同的损失(3)。这个网络可以看作是我们方法的一个简单版本。第二种方法进一步在相机之间添加成对关系,从而产生viewing图。该网络的输入还包括从点轨迹计算的基础矩阵。我们使用标准图神经网络[15]来优化损失(3)。补充资料中提供了有关这些算法的更多详细信息。 表5右两列显示了这些模型的结果。这两种方法都不如我们提出的方法,集合网络的性能略好于图形网络。有趣的是,通过将3D点视为自由变量来简化我们的方法会影响性能,而将基础矩阵注入网络并不会提高性能。此外,我们最后还注意到,这两种方法都不支持学习。
6 Conclusion
我们已经介绍了一种新的基于深度的多视图SFM方法,包括校准和非校准设置。从点轨迹的(稀疏)测量张量开始,我们的方法最小化重投影损失,以同时恢复相机参数和稀疏三维重建。重要的是,我们使用了一种尊重任务对称性的等变网络体系结构,即测量张量的行(相机)或列(3D点)的等变排列。我们已经在两个设置中测试了我们的方法,单场景优化和使用经过训练的模型进行推理。我们的实验结果表明,我们的方法可以实现精确的姿态和结构恢复,与经典的、最先进的技术相媲美。在未来的工作中,我们计划扩展这项工作,以允许从原始图像直接进行端到端恢复,并生成密集的三维重建。
Appendix
下面,我们将提供本文中测试的基线方法和可供替代的deep体系结构的实现细节。此外,还包括其他结果,比如用我们的方法重建的例子。
A Baselines
在校准实验(本文表2)中,为了公平比较,我们将Colmap直接应用于Olsson的数据集提供的点轨迹,并将作为真值的相机内参固定。
我们测试了Jiang等人的方法[23],同时忽略了匹配点数量低于某个阈值的viewing图的边。我们使用了30、200、500个匹配点的阈值,并报告了在束调整之前获得最低重投影误差的结果。
B Alternative deep architectures
本文表5中最右边的两列显示了两种新的deep架构的结果,这两种架构是为了与我们的deep网络架构进行比较而开发的。详情如下。
对于具有m个相机的场景,该网络的输入是一组大小为12的m个随机特征向量,它们为每个相机提供唯一的ID。受[44,68]的启发,我们的集合网络由三个子网络组成,其中每个子网络是一个等变集合网络。第一个子网络应用于每个特征向量,并计算每个相机的局部特征。第二个子网络应用于每个这样的局部特征。然后对所有相机的输出进行平均,生成全局场景特征向量。最后,通过将第三个子网络应用于局部和全局特征,预测相机参数。总之,相机i的集合网络预测定义如下: 每个Sk是一个全连接的网络,vi是相机i的初始随机向量。
在这里,相机由一个图的节点表示,称为viewing图。如果相应图像共享至少30个轨迹,则边连接一对节点,在这种情况下,计算基础矩阵。基础矩阵用作边缘输入特征,而与集合网络模型一样,随机向量构成节点输入特征。我们使用信息传递方案(message-passing scheme)和全局特征,如set网络模型所述。每个信息传递层的形式如下: 其中zil是层l中节点i的局部特征,Ni是节点i的邻居,Fij是相机i和j之间测量的基础矩阵。 集合模型和图形模型都预测相机参数,而3D点则被视为自由变量。在这两种情况下,我们最小化了文中等式(3)中定义的重投影损失。
C Results
在单场景恢复模式中,给定一个表示某个场景图像上点对应关系的单个轨迹张量,我们试图最小化重投影损失,其中网络用于参数化损失。表6和表7显示了我们的方法在未校准和校准设置下束调整前后的结果。由于增量式方法在每次迭代中应用束调整,因此我们仅将束调整前的结果与全局方法进行比较。值得注意的是,在束调整之前,我们的方法通常达到亚像素精度,在未校准设置中显著超过GPSFM,在校准设置中显著超过GESFM和Linear。图4-6显示了校准设置下的3D重建和相机参数恢复结果。此外,图7显示了一个故障案例。图8显示了优化过程中结构和相机参数的演变。
在一些实验中,如表7所示,我们的单场景恢复程序无法产生精确的重建。在这些情况下(如果重投影误差超过2个像素,我们宣布失败),我们在顺序方案中应用了优化。对于此方案,我们根据图像与前面的图像共享的点轨迹的数量贪婪地对图像进行排序。使用这个顺序,我们首先运行了500个优化epochs,只使用前2个图像。然后,在每增加500个epochs之后,我们将按顺序向该子集添加下一个图像。如表8所示,该优化计划改善了所有失败数据集的重投影误差,在大多数情况下,产生了与使用Colmap获得的精度相当的精度。
图9和图10显示了在3种情况下使用我们的模型进行捆绑调整前后的重建结果:(i)使用我们训练的模型进行推理(ii)微调后的推理和(iii)短期优化。表9显示了经过训练的模型的执行时间。我们注意到,使用推断只能在很短的时间内产生一个很好的束调整初始化。使用微调可以产生更精确的结果(参见本文中的表2),执行时间与Colmap类似。短期优化通常会产生不太准确的结果,执行时间类似于微调,强调了训练模型的重要性。 *部分翻译或理解可能会存在偏差,仅供参考,欢迎讨论。