【三维重建】GLOB3R:基于 3D 基础模型的运动至全局结构重建
目录
标题:GLOB3R: GLOBAL STRUCTURE-FROM-MOTION WITH 3D FOUNDATION MODELS
香港科技大学;Tongyi实验室、阿里巴巴集团;南京大学;复旦大学
链接:https://junyuandeng.github.io/Glob3r/
摘要
最近的三维几何基础模型,如 VGGT ,能够通过直接从输入图像中预测相机位姿和三维场景点,实现鲁棒的前向三维重建。然而,这些模型的重建结果仍存在不准确的问题,将其应用于长序列或大规模无序图像集时,通常需要分块处理,这可能会导致漂移和不一致性。
Glob3R——一种基于三维基础模型的全局SfM风格重建方法。我们的核心思想是显式优化前向几何预测。为此,我们在冻结的Pi3X骨干网络上添加了一个轻量级密集匹配头,该头可预测选定参考帧与相邻视图之间的图像扭曲。这些密集扭曲被转换为稀疏但可靠的多视图特征轨迹,从而为全局优化提供对应约束。我们还引入了一种基于关键帧的滑动窗口关联策略,该策略可在重叠的窗口间传播轨迹和相对位姿,从而实现可扩展的重建。最后,我们通过全局运动平均和束调整来优化相机位姿、减少尺度不一致性,并恢复稠密场景几何结构。在室内、室外、大规模驾驶及无序SfM基准数据集上的广泛实验表明,Glob3R能够实现鲁棒且精确的重建。它不仅持续优于前向基础模型基线方法和近期的可扩展重建方法,而且比传统的SfM流程更具鲁棒性。优化后的姿态还能提升神经渲染的质量,从而验证了将基础模型先验与全局几何优化相结合的优势。
一、网络基础架构 (Architecture)
1.1 基础几何预测(Pi3X Backbone)
模型基于 Pi3X 搭建(具有置换等价性–Permutation-Equivariant),不需指定参考视角。输入一组图像 I = { I i ∈ R 3 × H × W } i = 1 N \mathcal{I} = \{I_i \in \mathbb{R}^{3 \times H \times W}\}_{i=1}^N I={Ii∈R3×H×W}i=1N,预测头 f f f 预测各视角的几何信息: f ( { I i } i = 1 N ) = { T i , X i , C i , m i } f(\{I_i\}_{i=1}^N) = \{\mathbf{T}_i, \mathbf{X}_i, \mathbf{C}_i, m_i\} f({Ii}i=1N)={Ti,Xi,Ci,mi} T i ∈ S E ( 3 ) ⊂ R 4 × 4 \mathbf{T}_i \in SE(3) \subset \mathbb{R}^{4 \times 4} Ti∈SE(3)⊂R4×4:相机位姿(Camera Pose)。 X i ∈ R 3 × H × W \mathbf{X}_i \in \mathbb{R}^{3 \times H \times W} Xi∈R3×H×W:图像 I i I_i Ii 坐标系下的 3D 点云图(Point Map)。 C i ∈ R H × W \mathbf{C}_i \in \mathbb{R}^{H \times W} Ci∈RH×W:置信度图(Confidence Map)。 m i m_i mi:近似的绝对度量尺度(Metric Scale)。
1.2 图像变形(Image Warping)与稠密匹配
受 RoMa V2 启发,将稠密匹配建模为图像变形问题 (从参考图像映射到目标图像的 2D 像素坐标变换。 两相机之间的变换关系是 S E ( 3 ) SE(3) SE(3) 空间中的 3D 旋转和平移 ( R , t ) (\mathbf{R}, \mathbf{t}) (R,t)。如果已知相机内参 K A , K B \mathbf{K}_A, \mathbf{K}_B KA,KB、相对位姿 ( R , t ) (\mathbf{R}, \mathbf{t}) (R,t) 以及图像 A A A 每个像素的深度 d A ( u A ) d_A(\mathbf{u}_A) dA(uA),像素坐标 u A \mathbf{u}_A uA 到图像 B B B 的像素坐标 u B \mathbf{u}_B uB 的映射关系为: u B = π B ( R ⋅ K A − 1 u ˉ A d A ( u A ) + t ) \mathbf{u}_B = \pi_B \left( \mathbf{R} \cdot \mathbf{K}_A^{-1} \bar{\mathbf{u}}_A d_A(\mathbf{u}_A) + \mathbf{t} \right) uB=πB(R⋅KA−1uˉAdA(uA)+t)) ,包含两阶段:
- 粗匹配阶段:以视角 I a I_a Ia 为参考图,目标视角集合为 B = { 1 , … , N } ∖ { a } \mathcal{B} = \{1, \dots, N\} \setminus \{a\} B={1,…,N}∖{a},特征提取器提取特征 H ∈ R N × L × C \mathbf{H} \in \mathbb{R}^{N \times L \times C} H∈RN×L×C。通过粗匹配预测头得到: ( W a → B , p a → B ) = DPT match ( Dec match ( H ) , a ) (\mathbf{W}^{a \rightarrow \mathcal{B}}, \mathbf{p}^{a \rightarrow \mathcal{B}}) = \text{DPT}_{\text{match}}(\text{Dec}_{\text{match}}(\mathbf{H}), a) (Wa→B,pa→B)=DPTmatch(Decmatch(H),a) W a → B ∈ R ( N − 1 ) × 2 × H 4 × W 4 \mathbf{W}^{a \rightarrow \mathcal{B}} \in \mathbb{R}^{(N-1) \times 2 \times \frac{H}{4} \times \frac{W}{4}} Wa→B∈R(N−1)×2×4H×4W:参考图像素到目标图的映射变形场(步长 Stride 为 4)。 p a → B ∈ R ( N − 1 ) × H 4 × W 4 \mathbf{p}^{a \rightarrow \mathcal{B}} \in \mathbb{R}^{(N-1) \times \frac{H}{4} \times \frac{W}{4}} pa→B∈R(N−1)×4H×4W:对应的匹配置信度。
- 精细化阶段(Refinement):结合粗匹配结果与原始图像,在步长 { 4 , 2 , 1 } \{4, 2, 1\} {4,2,1} 上逐级预测残差变形 Δ W \Delta W ΔW 和置信度残差 Δ p \Delta p Δp,恢复到原图全分辨率。
1.3 损失函数与训练(Loss Function and Training)
训练时冻结 Pi3X 编码器与原预测头,仅微调匹配头(Matching Head)。微调损失函数为加权和: L = ∑ k = 2 N λ 1 L NLL k + λ 2 L warp k + λ 3 L conf k \mathcal{L} = \sum_{k=2}^N \lambda_1 \mathcal{L}_{\text{NLL}}^k + \lambda_2 \mathcal{L}_{\text{warp}}^k + \lambda_3 \mathcal{L}_{\text{conf}}^k L=k=2∑Nλ1LNLLk+λ2Lwarpk+λ3Lconfk L NLL k \mathcal{L}_{\text{NLL}}^k LNLLk:负对数似然损失,鼓励匹配 Patch 间的特征具有高余弦相似度。 L warp k \mathcal{L}_{\text{warp}}^k Lwarpk:利用已知位姿和真实 3D 点云投影生成的真实 2D-2D Warp 监督。 L conf k \mathcal{L}_{\text{conf}}^k Lconfk:基于深度一致性生成的置信度监督。
图1:GLOB3R重建框架。给定有序图像序列或基于检索的伪序列,首先在各窗口内预测几何先验信息与密集形变;根据重投影覆盖度筛选关键帧,并将密集形变转换为稀疏多视图轨迹;随后,将轨迹合并为全局关联图,用于进行旋转平均、平移平均、束法调整及稠密重建。
二、滑动窗口序列关联 (Sliding-Window Sequence Association)
为了将模型扩展到长图像序列或大型图像集 S = { I i } i = 1 M \mathcal{S} = \{I_i\}_{i=1}^M S={Ii}i=1M:
2.1 序列与滑动窗口构建
时序/乱序处理:乱序图像集先通过检索模型(如 SALAD)建立伪序列。滑动窗口大小为 N N N 帧,步长 N / 2 N/2 N/2 帧(相邻窗口交叠 50 % 50\% 50%)。交叠帧用于在相邻窗口间传递相对位姿和对应关系。
2.2 关键帧选择(Keyframe Selection)
引入经典 SLAM 思想,在窗口内选择少量关键帧构建局部地图,其余帧关联到关键帧。对于候选帧
I
t
I_t
It,将其预测的 3D 点云重投影到已有的关键帧
I
r
∈
K
I_r \in \mathcal{K}
Ir∈K 上,计算有效投影像素数
n
t
n_t
nt:
n
t
=
max
I
r
∈
K
∑
u
1
[
π
(
T
t
→
r
X
ˉ
t
(
u
)
)
∈
D
,
z
t
→
r
(
u
)
>
0
,
C
t
(
u
)
>
τ
c
]
(
4
)
n_t = \max_{I_r \in \mathcal{K}} \sum_{\mathbf{u}} \mathbf{1} \left[ \pi\left(\mathbf{T}_{t \rightarrow r} \bar{\mathbf{X}}_t(\mathbf{u})\right) \in \mathcal{D},\; z_{t \rightarrow r}(\mathbf{u}) > 0,\; \mathbf{C}_t(\mathbf{u}) > \tau_c \right](4)
nt=Ir∈Kmaxu∑1[π(Tt→rXˉt(u))∈D,zt→r(u)>0,Ct(u)>τc](4)
u
\mathbf{u}
u:像素坐标。
X
ˉ
t
(
u
)
\bar{\mathbf{X}}_t(\mathbf{u})
Xˉt(u):像素
u
\mathbf{u}
u 处的齐次 3D 点。
T
t
→
r
\mathbf{T}_{t \rightarrow r}
Tt→r:从帧
I
t
I_t
It 到关键帧
I
r
I_r
Ir 的相对变换矩阵。
三个条件:
π
(
⋅
)
∈
D
\pi(\cdot) \in \mathcal{D}
π(⋅)∈D :投影点是否落在目标图像区域
D
\mathcal{D}
D 内,不能超出边界。
z
t
→
r
(
u
)
>
0
z_{t \rightarrow r}(\mathbf{u}) > 0
zt→r(u)>0 :深度为正(位于相机前方)。
C
t
(
u
)
>
τ
c
\mathbf{C}_t(\mathbf{u}) > \tau_c
Ct(u)>τc :预测置信度高于阈值
τ
c
\tau_c
τc。若计算得出的最大重投影有效点数
n
t
<
τ
proj
n_t < \tau_{\text{proj}}
nt<τproj,说明该帧与现有关键帧视觉重叠度较低,则将其添加到关键帧集合
K
\mathcal{K}
K 中。

2.3 基于轨迹的全局初始化(Track-based Global Initialization)
1. 轨迹构建 :使用匹配头建立关键帧到同窗口内所有帧的稠密映射;找到关键帧中,预测置信度极高的 3D 点/像素,生成跨帧轨迹(也就是图1底部的跟踪线 Tracks)。
2. 位姿图构建 :建立 Pose Graph,节点为图像帧,边权重由两帧间的共享有效轨迹数量决定。
3. 全局位姿初始化 :通过生成树(Maximum Spanning Tree, MST,通过保留权重最高的边,把所有图像帧连成一棵没有环路的主干树),从根节点(通常第一帧)传递相对位姿和尺度,得到全局初始位姿
T
i
\mathbf{T}_i
Ti,随后再通过非线性优化消除尺度不一致性并细化位姿。
三、优化
整个优化分为三阶段:
1. 运动平均(Motion Averaging)
借鉴传统 SfM(如 GLOMAP)的思路,将复杂的求解拆解为旋转平均和平移平均两步,解耦非线性约束。
- 旋转平均(Rotation Averaging):忽略平移和尺度,仅利用位姿图(Pose Graph)边上的相对旋转约束,进行图优化,求解出每张图像在世界坐标系下的全局一致旋转矩阵 R i \mathbf{R}_i Ri( 寻找一组全局绝对旋转 { R 1 , R 2 , … , R N } \{\mathbf{R}_1, \mathbf{R}_2, \dots, \mathbf{R}_N\} {R1,R2,…,RN},使得它们计算出的相对旋转与位姿图中所有的测量值 R i j \mathbf{R}_{ij} Rij 之间的冲突最小,解算出所有帧的绝对朝向)。
- 平移平均(Translation Averaging):在固定旋转 R i \mathbf{R}_i Ri 的前提下,通过多视角射线一致性求解相机中心 c i \mathbf{c}_i ci 与稀疏 3D 点 X j \mathbf{X}_j Xj。将图像 i i i 中对 3D 点 j j j 的观测 u i j \mathbf{u}_{ij} uij 转为归一化相机射线 v i j \mathbf{v}_{ij} vij,优化目标函数为公式 (5): min { c i } , { X j } , { d i j } ∑ ( i , j ) ∈ O ω i j ρ ( ∥ X j − ( c i + d i j R i ⊤ v i j ) ∥ 2 2 ) \min_{\{\mathbf{c}_i\}, \{\mathbf{X}_j\}, \{d_{ij}\}} \sum_{(i,j) \in \mathcal{O}} \omega_{ij} \rho \left( \left\Vert{} \mathbf{X}_j - (\mathbf{c}_i + d_{ij} \mathbf{R}_i^\top \mathbf{v}_{ij}) \right\Vert{}_2^2 \right) {ci},{Xj},{dij}min(i,j)∈O∑ωijρ( Xj−(ci+dijRi⊤vij) 22) O \mathcal{O} O:所有有效的特征轨迹观测集合 ( i , j ) (i, j) (i,j),即帧 i i i 观测到了 3D 点 j j j。 c i \mathbf{c}_i ci:帧 i i i 在世界坐标系下的相机中心坐标(平移量)。 X j \mathbf{X}_j Xj:第 j j j 个稀疏点在世界坐标系下的 3D 坐标。 d i j d_{ij} dij:点 j j j 沿帧 i i i 视角射线的深度值。 v i j \mathbf{v}_{ij} vij:帧 i i i 归一化平面上的像素射线方向。由于 R i \mathbf{R}_i Ri 将世界坐标系转为相机坐标系,其转置 R i ⊤ \mathbf{R}_i^\top Ri⊤ 将相机射线方向旋转回世界坐标系。因此 c i + d i j R i ⊤ v i j \mathbf{c}_i + d_{ij} \mathbf{R}_i^\top \mathbf{v}_{ij} ci+dijRi⊤vij 表示该射线在世界空间预测的 3D 点。 ω i j \omega_{ij} ωij:追踪置信度权重(降低不确定匹配的权重)。 ρ ( ⋅ ) \rho(\cdot) ρ(⋅):鲁棒损失函数(如 Huber Loss),用于抑制外点(Outliers)。
特点与作用:该公式避开了优化窗口间两两平移的变尺度问题,直接约束 3D 点与视线的空间距离,从而解决了局部窗口平移尺度不一致的问题,为下一步 BA 提供了极佳的初始值。
2. 光束法平差(Bundle Adjustment, BA)
在运动平均给出了良好的全局初始化后,联合微调所有变量以达到像素级精度,优化目标函数为公式 (6): min { T i } , { X j } , { K i } , { δ i } ∑ ( i , j ) ∈ O ω i j ρ ( ∥ π ( K i , δ i , T i , X j ) − u i j ∥ 2 2 ) \min_{\{\mathbf{T}_i\}, \{\mathbf{X}_j\}, \{\mathbf{K}_i\}, \{\boldsymbol{\delta}_i\}} \sum_{(i,j) \in \mathcal{O}} \omega_{ij} \rho \left( \left\Vert{} \pi(\mathbf{K}_i, \boldsymbol{\delta}_i, \mathbf{T}_i, \mathbf{X}_j) - \mathbf{u}_{ij} \right\Vert{}_2^2 \right) {Ti},{Xj},{Ki},{δi}min(i,j)∈O∑ωijρ(∥π(Ki,δi,Ti,Xj)−uij∥22) T i ∈ S E ( 3 ) \mathbf{T}_i \in SE(3) Ti∈SE(3):第 i i i 帧的相机位姿(包含旋转与平移)。 K i \mathbf{K}_i Ki 与 δ i \boldsymbol{\delta}_i δi:相机内参矩阵与畸变参数(若已有已知标定则固定,否则参与联合优化)。 π ( ⋅ ) \pi(\cdot) π(⋅):带畸变修正的透视投影函数,将世界点 X j \mathbf{X}_j Xj 投影回图像 i i i 的像素平面。 u i j \mathbf{u}_{ij} uij:在图像 i i i 上实际观测到的 2D 像素坐标。特点与作用:以重投影误差最小化为目标,从帧级别(Frame-level)全面精细化位姿、内参和稀疏 3D 点,消除了窗口缝合带来的积累误差。
3. 稠密重建(Dense Reconstruction)
BA 优化只更新了稀疏 3D 点轨迹,为了获得高密度的 3D 场景点云,模型执行以下对齐与融合步骤:
- 尺度对齐:神经网络最初预测的深度图(Dense Depth)只有相对尺度。将 BA 优化后极其精准的稀疏 3D 点深度作为“真值”,在每个关键帧上使用 RANSAC 拟合一个尺度缩放因子,调整初始预测的稠密深度图。
- 反投影与融合:利用优化后的相机内参 K i \mathbf{K}_i Ki 和畸变参数 δ i \boldsymbol{\delta}_i δi,将修正后的稠密深度图反投影为相机坐标系下的稠密 3D 点图。
- 全局融合:利用优化后的全局位姿 T i \mathbf{T}_i Ti 将各帧的稠密点图统一变换至全局世界坐标系下,融合形成完整的全局稠密点云。
实验
数据集:覆盖室内、室外、无序 SfM 及大尺度驾驶场景。Tanks and Temples (T&T):19 个场景(流式/序列输入)。TUM RGB-D:9 个序列(流式/序列输入)。ETH3D:13 个场景(无序 SfM 风格图像集)。KITTI:11 个驾驶序列(流式/序列输入)。
评估指标:T&T:因缺乏绝对真值位姿(且 COLMAP 结果不宜作真值),采用新视角合成(Novel-View Synthesis)间接评估,训练 Nerfacto 模型并衡量测试集的 PSNR。TUM RGB-D & KITTI:具有轨迹真值,对齐轨迹后衡量 Pose RMSE。ETH3D:采用相对位姿评估协议,汇报 RRA@5 和 RTA@5(相对旋转和平移误差小于 5 ∘ 5^\circ 5∘ 的图像对比例)。
推理参数:默认滑动窗口大小 N = 20 N=20 N=20,步长(Stride)为 10 帧;部分特定场景(如 T&T 部分大场景、KITTI sequence 02)增大 N N N 以稳定 Pi3X 的预测。
SOTA 方法对比:论文将该方法与传统 SfM(COLMAP、GLOMAP)、前馈 3D 大模型(DA3、Pi3X)、流式 SLAM(DROID-SLAM)以及最新的长序列学习型 SfM/SLAM 算法进行了全面对比。


结果1:Tanks and Temples(表 1 & 图 2):
取得了最高的平均 PSNR。相比传统 SfM:GLOMAP 因位姿图中的异常边/外点容易失效;本方法利用几何大模型的先验提供了更鲁棒的初始位姿与点云。纯前馈全局推理缺乏高精度位姿优化;本方法通过将稠密 Warp 转化为可靠的多视角 Tracks,实现了稳健的全局 SfM 风格优化。

结果2:大尺度/长序列驾驶场景(KITTI,图 3):
相比近期按 Chunk 处理或流式更新的方法(如 VGGT-Long、Scal3R 等会在长序列上累积轨迹漂移),本方法通过滑动窗口关联将稠密 Warp 转化为稀疏 Tracks,并在全序列上进行帧级位姿优化,有效抑制了漂移。

表4:ETH3D数据集上的姿态估计精度对比。基线方法均采用宽松阈值(5°)进行评估;我们报告了AMB3R与本文方法在严格精度(1°)下的结果,并同时提供了本文方法在宽松阈值(5°)下的性能,以便进行全面比较。最佳结果以粗体标出。
结果3:无序图像集重建(ETH3D,表 4):
相比 GLOMAP:在位姿图存在错误边时,GLOMAP 的旋转和平移平均会显著劣化;而本方法依托大模型先验与置信度感知匹配,优化更稳定。
相比强基线 AMB3R-SFM:在宽松的
5
∘
5^\circ
5∘ 阈值及更严格的
1
∘
1^\circ
1∘ 阈值(RRA@1 / RTA@1)下均取得了大幅领先,证明了其高精度的相对位姿估计能力。
消融实验:在ETH3D数据集上进行了,使用了精确的地面真值位姿。表5对比了不同变体在 RRA @1和RTA@1指标下的表现。初始化阶段实现了合理的精度,表明系统能够将不同帧连接成有意义的整体结构。运动平均化进一步带来了适度提升,使初始位姿更具全局一致性。经过完全优化后,我们的方法同时提高了旋转和平移精度,证实了几何束调整的重要性。我们还对匹配组件进行了深入分析:使用粗匹配相较于初始化仅能带来有限的改进,这表明细化过程对于实现精确对应至关重要。若将我们的匹配模块替换为 VGGT [57]跟踪头或RoMaV2[15],则会导致精度下降和效率降低。这是因为 VGGT 仅能追踪来自单个参考视图的点,因此需要多次推理才能处理多个关键帧;此外,由此生成的轨迹比通过全局密集形变获得的点更不可靠。而RoMaV2仅作为双视图匹配器运行,未能利用基础模型提供的共享多视图几何上下文。这些结果表明,我们的密集匹配模块能够为全局位姿优化提供更准确、更高效的轨迹。

乱序图像集通过 SALAD 检索模型建立“伪序列”
- 为什么需要伪序列?
滑动窗口算法(Sliding Window)依赖于相邻帧之间存在足够的视觉重叠,从而通过窗口重叠部分传递相对位姿。如果是随意拍摄、无时间戳的无序图像集(如网络上搜索到的某个建筑物的多角度照片),没有天然的帧顺序,直接切分窗口会导致相邻图像之间可能完全没有重叠区,导致滑动窗口和极线追踪失效。
- SALAD 模型的作用
SALAD(Sinkhorn Algorithm for Locally Aggregated Descriptors)是一种用于视觉地点识别(Visual Place Recognition, VPR)的全局特征提取模型。它接收单张图像,输出一个高度压缩但包含丰富空间与视觉特征的全局特征向量 g i ∈ R D \mathbf{g}_i \in \mathbb{R}^D gi∈RD。如果两张图像拍摄的是同一个物体或相似视角,它们的全局特征向量 g i \mathbf{g}_i gi 和 g j \mathbf{g}_j gj 在向量空间中的余弦相似度(Cosine Similarity)就会非常高。
- 建立伪序列的具体流程与原理
假设有 M M M 张乱序图像: S = { I 1 , I 2 , … , I M } \mathcal{S} = \{I_1, I_2, \dots, I_M\} S={I1,I2,…,IM}提取全局特征向量:通过 SALAD 计算每张图像的全局描述子,得到矩阵矩阵: G = [ g 1 , g 2 , … , g M ] \mathbf{G} = [\mathbf{g}_1, \mathbf{g}_2, \dots, \mathbf{g}_M] G=[g1,g2,…,gM]。
构建全图相似度矩阵(Similarity Matrix):计算任意两张图像之间的视觉相似度 S i j = cos ( g i , g j ) S_{ij} = \cos(\mathbf{g}_i, \mathbf{g}_j) Sij=cos(gi,gj)。相似度高的图像代表它们在真实空间中“看到了相似的区域”或“视角相近”。
构建路径 / 拓扑排序(拓扑生成伪序列):利用图论方法(如贪心最近邻算法、最小生成树 MST 展开、或旅行商问题 TSP 近似求解),将无序的节点重构成一条一维链状路径:选定一个起始帧 I π ( 1 ) I_{\pi(1)} Iπ(1)。每次寻找与当前帧相似度最高且尚未被放入序列的图像作为下一帧 I π ( 2 ) I_{\pi(2)} Iπ(2)。
最终输出重排后的序列: S pseudo = { I π ( 1 ) , I π ( 2 ) , … , I π ( M ) } \mathcal{S}_{\text{pseudo}} = \{I_{\pi(1)}, I_{\pi(2)}, \dots, I_{\pi(M)}\} Spseudo={Iπ(1),Iπ(2),…,Iπ(M)}。效果:在这个新生成的“伪序列”中,相邻位置的图像 I π ( k ) I_{\pi(k)} Iπ(k) 和 I π ( k + 1 ) I_{\pi(k+1)} Iπ(k+1) 在空间视角上是连续且重叠度极高的。这样就把无序集转换成了类似视频帧的结构,使得滑动窗口能够顺利地在相邻图像间建立点追踪和传递位姿。
更多推荐
所有评论(0)