【三维重建】MapAnything:通用前馈度量三维重建
摘要: MapAnything是一个基于Transformer的前馈模型,能够通过单张或多张图像及可选几何输入(如相机参数、位姿、深度等)直接回归三维场景几何和相机参数。该模型采用分解表示方法,输出深度图、局部光线图、相机姿态和全局度量比例因子,将局部重建提升为全局一致的度量框架。通过跨数据集统一训练和输入增强技术,MapAnything可高效处理多种三维视觉任务(如SFM、MVS、深度估计等),

标题:<MapAnything: Universal Feed-Forward Metric 3D Reconstruction>来源:1 Meta Reality Labs 2卡内基梅隆大学主页:map-anything.github.io
文章目录
一、摘要
MapAnything是一种基于Transformer的前馈模型,能够接收一张或多张图像以及可选几何输入(如相机内参、位姿、深度或局部重建),并直接回归三维场景几何参数和相机参数。该模型采用多视角场景几何的分解表示方法,即深度图、局部光线图、相机姿态和度量比例因子的集合,能有效将局部重建提升为全局一致的度量框架。通过在不同数据集间统一监督训练并灵活运用输入增强技术,MapAnything仅需单次前馈即可处理多种三维视觉任务,包括未校准SFM、校准MVS、单目深度估计、相机定位、深度补全等。我们通过大量实验分析和模型消融验证表明,MapAnything不仅性能优于或达到专业前馈模型水平,还具备更高效的联合训练特性,为构建通用三维重建主干网络开辟了新路径。

MapAnything是一个端到端模型,其输入包括N个RGB图像,以及可选的几何输入:
- 1.通用中心相机标定参数: R ^ = ( R ^ i ) i ∈ S r \hat{R}=(\hat{R}_i)_{i∈S_r} R^=(R^i)i∈Sr。 表示第 i i i 帧图像中每个像素对应的单位射线方向(三维向量),可通过相机内参(焦距、主点、畸变等)预先标定得到
- 2 相机位姿(以第一帧为参考系):旋转 Q ^ = ( Q ^ i ) i ∈ S q \hat{Q}=(\hat{Q}_i)_{i∈S_q} Q^=(Q^i)i∈Sq T ^ = ( T ^ i ) i ∈ S t \hat{T}=(\hat{T}_i)_{i∈S_t} T^=(T^i)i∈St
- 3 每个像素的射线深度 D ^ = ( D ^ i ) i ∈ S d \hat{D}=(\hat{D}_i)_{i∈S_d} D^=(D^i)i∈Sd
MapAnything将这些输入,映射到一个N个视图的分解可度量3D输出(如图2):

m ∈ R m∈R m∈R是预测的全局度量缩放因子;
R i ∈ R 3 × H × W R_i∈R^{3×H×W} Ri∈R3×H×W是预测每个视图 i i i的局部射线方向
D ~ i ∈ R 1 × H × W \tilde{D}_i∈R^{1×H×W} D~i∈R1×H×W是等比例空间中的射线深度
P ~ i ∈ R 4 × 4 \tilde{P}_i∈R^{4×4} P~i∈R4×4是图像 I i I_i Ii在图像 I 1 I_1 I1坐标系中的位姿(四元数 Q i ∈ S U ( 2 ) Q_i∈SU(2) Qi∈SU(2)和等比例平移 T ~ i ∈ R 3 \tilde{T}_i∈R^3 T~i∈R3。
- 利用以上输出,获得等比例的局部pointmap(对应每个像素的三维点): L ~ i = R i ⋅ D ~ i ∈ R 3 × H × W \tilde{L}_i=R_i·\tilde{D}_i∈R^{3×H×W} L~i=Ri⋅D~i∈R3×H×W
- 然后通过使用旋转矩阵 O i ∈ S O ( 3 ) O_i∈SO(3) Oi∈SO(3)(由 Q i Q_i Qi获得)和等比例平移,在世界坐标系中计算出等比例点图 X ~ i = O i ⋅ L ~ i + T i \tilde{X}_i=O_i·\tilde{L}_i+T_i X~i=Oi⋅L~i+Ti。
- 最终,针对N个输入视图(在图像1坐标系中)的度量三维重建结果由 x i m e t r i c = m ⋅ X ~ i x_i^{metric}=m·\tilde{X}_i ximetric=m⋅X~i( i ∈ [ 1 , N ] i∈[1,N] i∈[1,N])给出。
二、将 输入图像&几何 编码到 latent space
图像数据编码 。采用DINOv2 ViT-L模型 (Apache 2.0,对比其他预训练模型,如CroCov2 [76]、DUSt3R[72]、RADIO [15,47]以及随机初始化线性补丁化等) 进行编码,其在下游性能、收敛速度和泛化能力(特别是在使用小学习率微调时)方面表现最优。特征维度 F I ∈ R 1024 × H / 14 × W / 14 FI∈R^{1024×H/14×W/14} FI∈R1024×H/14×W/14。
其他几何参数编码 。factorize 几何参数,为了在metric scale和up-to-scale 之间实现训练与推理。
预处理:
- 当提供射线深度数据时,首先将其拆分为平均视角深度 z ^ d i ∈ R + \hat{z}_{di}∈R^+ z^di∈R+ 和归一化射线深度 D ^ i / z ^ d i \hat{D}_i/\hat{z}_{di} D^i/z^di。
- 当输入平移参数 T ^ \hat{T} T^时,计算pose scale : z ^ p = 1 ∣ S t ∣ ∑ i ∈ S t ∥ T ^ i ∥ \hat{z}_p=\frac {1}{|S_t|} \sum_{i∈S_t}∥\hat{T}_i∥ z^p=∣St∣1∑i∈St∥T^i∥ (作为世界坐标系的平均距离) ,可用于获取归一化平移参数 T ^ i / z ^ p \hat{T}_i/\hat{z}_p T^i/z^p。
为有效利用几何输入中的metric scale 信息(图3),因此仅在特定帧提供的位姿和深度参数为度量尺度时,才会使用位姿尺度和深度尺度。考虑到度量尺度值可能较大且随场景尺寸变化显著,编码前会对scale进行log-transform 处理。

具体操作:
采用浅层卷积Encoder[38]对射线方向和归一化射线深度进行编码,其中空间尺寸调整仅通过一次pixel unshuffle操作(将空间维度上的像素重新排列到通道维度上)完成,将密集几何输入映射至 F R 、 F D ∈ R 1024 × H / 14 × W / 14 F_R、F_D∈R^{1024×H/14×W/14} FR、FD∈R1024×H/14×W/14 。对于全局非像素量(如以单位四元数表示的旋转、平移方向、深度和位姿缩放),使用带有GeLU激活函数的四层MLP投影为特征 F Q 、 F T 、 F z ^ d 、 F z ^ p ∈ R 1024 F_Q、F_T、F_{\hat{z}_d}、F_{\hat{z}_p}∈R^{1024} FQ、FT、Fz^d、Fz^p∈R1024 。所有输入量完成编码后,依次经过 layer normalization、求和运算及二次归一化,最终获得每个视图输入的全视角编码。这些编码随后被展平为 F E ∈ R 1024 × ( H W / 256 ) F_E∈R^{1024×(HW/256)} FE∈R1024×(HW/256)的token。
在N个视图patch token集合中新增一个可学习的scale token,并将这些token输入多视图transformer (具体采用24层交替注意力变换器[66],包含12个多头注意力模块,潜在维度为768,MLP比例为4) 。为区分参考视图(即第一个视图),我们在视图1对应的patch token中添加恒定的参考视图 embedding。出于简化考虑,我们未使用旋转位置编码(RoPE)[54]。研究发现,DINOv2提供的补丁级位置编码已足够有效,而RoPE由于最初被应用于每个注意力层,容易引入不必要的偏差。
三、预测结果:分解的场景表示 (Factored Scene Representation Prediction)
多视图transformer的输出token,通过DPT头[46]解码为每个视图的 N N N个密集输出,包括:
射线方向 R i R_i Ri(归一化为单位长度)、射线深度 D ~ i \tilde{D}_i D~i(等比例空间的)、掩码 M i M_i Mi(表示深度无歧义类别),点图置信度图 C i C_i Ci(世界坐标系下)。
此外,我们还将N视图补丁标记输入基于平均池化的卷积 pose head[7],以预测单位四元数 Q i Q_i Qi和等比例的平移量 T ~ i \tilde{T}_i T~i。最后,scale token 通过双层MLP+ReLU函数预测 metric scaling factor。 由于场景的度量尺度可能差异巨大,我们对预测结果进行指数级缩放以获得度量缩放因子m。如表5a所示,这种尺度预测的解耦对实现通用度量前馈推理至关重要。最后,正如前文所述,这些分解后的预测结果可联合使用以获得三维几何重建。
四、训练通用的可测量三维重建
采用多损失函数对MapAnything进行端到端训练:由于射线方向 R i R_i Ri和位姿四元数 Q i Q_i Qi不依赖于场景尺度,其损失函数定义为:
L r a y s = ∑ i = 1 N ∥ R ~ i − R i ∥ L_{rays} = \sum ^N_{i=1}∥\tilde{R}_i−R_i∥ Lrays=∑i=1N∥R~i−Ri∥
L r o t = ∑ i = 1 N m i n ( ∥ Q ~ i − Q i ∥ , ∥ − Q ~ i − Q i ∥ ) L_{rot} = \sum ^N_{i=1} min(∥\tilde{Q}_i−Q_i∥,∥−\tilde{Q}_i−Q_i∥) Lrot=∑i=1Nmin(∥Q~i−Qi∥,∥−Q~i−Qi∥)
这种设计考虑到了单位四元数的two-to-one mapping 映射关系,即两个符号相反的单位四元数 Q Q Q 和 − Q −Q −Q 表示的是同一个三维旋转,其回归损失类似于测地角距离的计算方式。
解释如下:
一个单位四元数 Q = ( w , x , y , z ) Q = (w, x, y, z) Q=(w,x,y,z)(其中 w 2 + x 2 + y 2 + z 2 = 1 w^2 + x^2 + y^2 + z^2 = 1 w2+x2+y2+z2=1)表示三维旋转时,对应的旋转矩阵为:

从几何角度看,四元数 Q = ( cos θ 2 , n ⃗ sin θ 2 ) Q = (\cos\frac{\theta}{2}, \vec{n}\sin\frac{\theta}{2}) Q=(cos2θ,nsin2θ) 表示绕轴 n ⃗ \vec{n} n 旋转角度 θ \theta θ。
− Q = ( − cos θ 2 , − n ⃗ sin θ 2 ) = ( cos ( θ 2 + π ) , n ⃗ sin ( θ 2 + π ) ) -Q = (-\cos\frac{\theta}{2}, -\vec{n}\sin\frac{\theta}{2}) = (\cos(\frac{\theta}{2}+\pi), \vec{n}\sin(\frac{\theta}{2}+\pi)) −Q=(−cos2θ,−nsin2θ)=(cos(2θ+π),nsin(2θ+π)),相当于旋转轴方向变为相反方向: − n ⃗ -\vec{n} −n,旋转角度变为: θ + 2 π \theta + 2\pi θ+2π。三维旋转中,绕轴 n ⃗ \vec{n} n 旋转 θ \theta θ 等价于绕轴 − n ⃗ -\vec{n} −n 旋转 − θ -\theta −θ,旋转 2 π 2\pi 2π 的整数倍等于没有旋转
对于预测的射线深度 D ~ i \tilde{D}_i D~i、位姿平移 T ~ i \tilde{T}_i T~i、局部点图 L ~ i \tilde{L}_i L~i和世界坐标系点图 X ~ i \tilde{X}_i X~i,按照DUSt3R [72]的方法,使用真实有效掩码 V i V_i Vi计算 真实值的缩放因子 z ^ = ∥ ( X ^ i [ V i ] ) i = 1 N ∥ / ∑ i = 1 N V i \hat{z}=∥(\hat{X}_i[V_i])^N_{i=1}∥/\sum ^N_{i=1}V_i z^=∥(X^i[Vi])i=1N∥/∑i=1NVi 。为确保 scale loss 的梯度不会影响几何,我们使用预测的度量缩放因子 m m m和独立的等比例范数缩放因子 z ~ \tilde{z} z~来计算度量范数缩放因子 z m e t r i c = m ⋅ s g ( z ~ ) z^{metric}=m·sg(\tilde{z}) zmetric=m⋅sg(z~),其中sg表示停止梯度。
基于缩放因子,计算尺度不变平移损失:
L t r a n s l a t i o n = ∑ i = 1 N ∥ T ^ i / z ^ − T ~ i / z ~ ∥ L_{translation} = \sum ^N_{i=1}∥\hat{T}_i/\hat{z}−\tilde{T}_i/\tilde{z}∥ Ltranslation=∑i=1N∥T^i/z^−T~i/z~∥
研究发现,对射线深度、pointmap和度量尺度因子应用对数空间损失至关重要: f l o g : x → ( x / ∥ x ∥ ) ⋅ l o g ( 1 + ∥ x ∥ ) f_{log}:x→(x/∥x∥)·log(1+∥x∥) flog:x→(x/∥x∥)⋅log(1+∥x∥)。因此,光线深度的损失函数为
L d e p t h = ∑ i = 1 N ∥ f l o g ( D ^ i / z ^ ) − f l o g ( D ~ i / z ~ ) ∥ L_{depth} = \sum ^N_{i=1}∥f_{log}(\hat{D}_i/\hat{z})−f_{log}(\tilde{D}_i/\tilde{z})∥ Ldepth=∑i=1N∥flog(D^i/z^)−flog(D~i/z~)∥
同样地,局部pointmap的损失函数:
L l p m = ∑ i = 1 N ∥ f l o g ( L ^ i / z ^ ) − f l o g ( L ~ i / z ~ ) ∥ L_{lpm} = \sum ^N_{i=1}∥f_{log}(\hat{L}_i/\hat{z})−f_{log}(\tilde{L}_i/\tilde{z})∥ Llpm=∑i=1N∥flog(L^i/z^)−flog(L~i/z~)∥。
我们剔除了训练数据中前5%的像素级损失值,以排除数据缺陷和潜在异常值(图像对中由于光照、动态、遮挡导致的局部像素损失过大) 。与DUSt3R类似,引入了置信度加权pointmap损失:
L p o i n t m a p = ∑ i = 1 N ( C i ∥ f l o g ( X ^ i / z ^ ) − f l o g ( X ~ i / z ~ ) ∥ − α l o g ( C i ) ) L_{pointmap} = \sum ^N_{i=1}(C_i∥f_{log}(\hat{X}_i/\hat{z})−f_{log}(\tilde{X}_i/\tilde{z})∥−αlog(C_i)) Lpointmap=∑i=1N(Ci∥flog(X^i/z^)−flog(X~i/z~)∥−αlog(Ci))
最后是 factored metric scale loss:
L s c a l e = ∥ f l o g ( z ^ ) − f l o g ( z m e t r i c ) ∥ L_{scale}=∥f_{log}(\hat{z})−f_{log}(z^{metric})∥ Lscale=∥flog(z^)−flog(zmetric)∥
为了捕捉精细细节,我们还在局部点图上应用了法线损失 L n o r m a l L_{normal} Lnormal [69],并在(局部点图的z轴深度对数)上使用多尺度梯度匹配损失 L G M L_{GM} LGM [45,79]。 由于真实数据集中的几何结构可能存在粗糙和噪声问题,我们仅在合成数据集上应用 L n o r m a l L_{normal} Lnormal和 L G M L_{GM} LGM损失 。对于预测的无歧义类别掩码,我们采用二元交叉熵损失(Lmask)。
总损失函数:
L = 10 L p o i n t m a p + L r a y s + L r o t + L r a n s l a t i o n + L d e p t h + L l p m + L s c a l e + L n o r m a l + L G M + 0.1 L m a s k L=10L_{pointmap}+L_{rays}+ L_{rot}+ L_{ranslation} + L_{depth}+L_{lpm} +L_{scale} + L_{normal}+L_{GM} +0.1L_{mask} L=10Lpointmap+Lrays+Lrot+Lranslation+Ldepth+Llpm+Lscale+Lnormal+LGM+0.1Lmask
五、实验设置
训练配置:为实现通用模型的一次性训练以支持多种输入配置,训练过程中,以一定概率选择额外的几何输入:整体几何输入的概率设定为0.9,其中每个独立分解参数(即光线方向、光线深度和位姿)各占0.5的概率。当选择深度作为输入时,系统会以相等概率提供密集深度数据或90%随机稀疏化深度数据。为增强几何信息可用视图的鲁棒性和灵活性,我们为每个视图设置0.95的输入概率,并以0.05的概率不将度量尺度因子作为度量尺度真实数据集的输入。
数据集:我们在13个高质量数据集(见表1) 上训练MapAnything模型,这些数据集包含室内、室外和野外场景的多样性。 对于ScanNet++ v2和TartanAirV2- WB数据集,我们将场景划分为训练集、验证集和保留测试集;其他数据集则分为训练集和验证集。虽然MPSD最初是一个单目深度度量数据集,但我们通过获取姿态和相机信息,将其扩展为包含7.2万场景的真实世界多视角度量尺度数据集。我们将公开源代码以促进未来研究。我们 发布了两个预训练模型:一个采用Apache 2.0协议授权,在六个数据集上训练;另一个采用CC BY-NC 4.0协议授权,在另外七个数据集上训练(详见表1)。

多视角采样:针对每个数据集,我们通过基于真实深度和位姿的重投影误差检查,对场景中所有图像进行成对可共见性的全面预计算。训练时,我们采用选定的25%可共见性阈值,利用这些预先计算的可共见性数据进行随机游走采样。这种机制使我们能够生成具有不同覆盖范围和互信息量的随机单连通组件图,从而实现可共见视角的多样化采样。
六、Benchmarking & Results
多视图密集重建:在校正处理过的ETH3D [53]、ScanNet++ v2 [82]和TartanAirV2-WB [73,87]数据集上,对点云图、姿态估计、深度估计及射线方向估计的性能进行了基准测试。针对每个测试场景,我们通过预先计算场景中所有图像的成对可共视性,随机采样最多N个视图形成单一连通组件图(该机制可防止输入图像集合相互独立)。如图5所示,仅使用图像输入时,MapAnything在密集多视图重建性能上超越了包括VGGT [66]在内的其他基线方法。此外,我们还证明当结合额外的辅助几何输入进行前馈推理时,MapAnything能将重建性能提升至显著倍数。

MapAnything在性能上明显优于双视图基线方法中采用束调整(BA)的变体Pow3R [25]——后者同样旨在利用场景先验信息。
图2展示了辅助几何输入如何提升MapAnything的性能。图4展示了仅使用图像作为输入生成的重建结果。

双目视图的密集重建:表2将稀疏视图重建与图像匹配与当前最先进的feed-forward基线方法进行对比;以及引入其他输入模态时,该方法大幅优于Pow3R [25]—— 这是目前唯一采用场景或相机先验知识的双视图前馈方法。

单目校准:数据集来源于无畸变ETH3D [53]、ScanNet++ v2 [82]和TartanAirV2 [73]的随机采样帧。为验证非中心主点的适用性,我们随机裁剪了纵横比在3:1至1:2之间的帧。尽管未专门针对单图像训练,但表3显示MapAnything在透视校准方面取得了业界领先,在建模通用中心摄像系统方面的有效性,更彰显了其通过适当训练即可迁移至鱼眼等广角模型的潜力。

单目与多目深度估计:表4将MapAnything与专家模型在不同输入条件下的单视角和多视角深度估计进行对比。尽管未针对单视角深度指标进行训练,MapAnything仍取得了业界领先或相当的性能表现。与MoGe-2 [71]、MVSA [24]等基线模型相比,我们发现ScanNet数据集上的尺度估计/直通任务表现欠佳,这可能与基准数据集质量较低有关[24,69]。如表S.2所示,当采用尺度对齐策略时,我们在ScanNet数据集上展现出强大的深度估计性能。

图6中展示了MapAnything的多种重建可视化效果:

局限性
尽管MapAnything在构建适用于in-the-wild场景的多模态通用基准框架方面取得重大突破,但仍存在若干局限性及未来发展方向:
- ( a ) (a) (a)尚未明确处理几何输入中的噪声或不确定性问题。
- ( b ) (b) (b)虽然当前暂未支持,但其架构可轻松扩展至图像无法覆盖所有输入视角的任务场景。例如在新型视图合成中,渲染目标视图仅能通过相机数据作为输入。
- ( c ) (c) (c) 尽管MapAnything的设计支持迭代推理,但测试时计算量的有效扩展对三维重建的实际效果仍有待探索(这与如何有效处理输入噪声密切相关)。
- ( d ) (d) (d)目前多模态特征需在输入前进行融合,探索将不同模态数据直接输入Transformer的高效方法将具有重要研究价值。
此外,在有效存储场景数据并按需解码方面仍有大量工作待完成,特别是在处理大型场景时。且当前的场景参数化方法未能捕捉动态运动或场景流信息——这些正是极具潜力的研究方向。
#pic_center =80%x80%
d \sqrt{d} d 1 8 \frac {1}{8} 81 x ˉ \bar{x} xˉ z ^ \hat{z} z^ I ~ \tilde{I} I~ ϵ \epsilon ϵ
ϕ \phi ϕ ∏ \prod ∏ a b c \sqrt{abc} abc ∑ a b c \sum{abc} ∑abc
/ $$
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)