点击下方卡片,关注「3D视觉工坊」公众号
选择星标,干货第一时间送达
3D视觉硬件汇总,包括结构光3D相机(支持室内外,焊接,机械臂抓取等场景),相位偏折术、散斑、机械臂抓取和焊接软件,手持扫描仪(支持定位、重定位、稠密建图)、四足狗和小车定位和导航,底盘。点击->查看详情:
一个困扰了视觉三维重建领域近二十年的老问题
在计算机视觉领域,三维重建一直存在着两条泾渭分明的技术路线,它们像是两个说着不同语言的部落,各自守护着自己的领地,却几乎从不交流。
一条是传统派——以COLMAP为代表的Structure‑from‑Motion(SfM)系统。这些方法建立在扎实的射影几何和束调整(Bundle Adjustment, BA)理论基础之上,通过特征检测、匹配、几何验证、三角化等一系列严谨的步骤,从无序图像集合中恢复出高精度的相机姿态和场景结构。它们精确、可靠、可解释,但代价是——在处理大规模图像时,往往以小时甚至天为单位计算时间。
另一条是学习派——以DUST3R、MAST3R、VGGT为代表的前馈式(feed‑forward)重建方法。这些方法把几何推理全部交给神经网络,用一个统一的模型直接从图像回归出三维结构,速度快、端到端可微,但其输出往往粗糙,缺乏传统方法那种经过精心优化的精确度。
两条路线各自发展,各自的短板同样明显。
传统SfM的问题在于:构建稠密像素级对应关系的代价太高昂。在现代VSLAM(视觉同时定位与建图)系统中,每一帧都需要在毫秒级完成定位,而COLMAP那种“对所有图像做全局匹配”的做法显然不切实际。
学习派的问题在于:虽然推理速度快,但输出的三维结构往往存在局部扭曲和尺度漂移,尤其在纹理稀疏或重复纹理的场景中,会像近视眼一样“看不清楚”。
有没有一种方法,既拥有学习派的速度和泛化能力,又能达到传统派的精度和一致性?
这正是NAVER LABS Europe团队在BLASt3R中要回答的问题。而他们的答案,让我们看到了一个可能性:在线VSLAM和离线SfM,或许本就不该是两个世界。
三个核心组件:一场精密配合的三重奏
BLASt3R的核心设计理念可以概括为一句话:用学习的方法做匹配和初始化,用优化的方法做精化和全局一致。这不是简单的“先学习后优化”流水线,而是一个三者紧密耦合的统一框架。

BLASt3R整体框架概览:一个集成式SfM流程包含三个关键要素:
一个多视图匹配网络,以流式方式输出稠密长时点轨迹; 一个单目网络,预测可调节点云; 一个统一束调整,高效地将这些轨迹和点云连接在一起,形成精确的稠密3D重建。
模块一:支持流式推理的多视图匹配网络
BLASt3R的第一个核心创新,是一个支持流式处理的粗到细多视图匹配网络。
如果说传统SfM的特征匹配像是在所有图像之间织一张密集的网——每增加一张图,都要和之前所有图做匹配,代价是二次方增长的——那么BLASt3R的匹配网络则是建立了一个“动态记忆库”。
记忆机制:网络维护一个记忆库 ,存储了此前所有已处理图像的token。当新图像 到来时,编码器将其编码为 ,然后通过一个带有交叉注意力的ViT解码器,让查询token 与所有记忆token 交互,生成当前图像的记忆token ,将其追加到记忆库中:
这种设计使得每一帧只需要和记忆库中的token做一次交叉注意力,整体计算复杂度是线性的——无论序列有多长,每帧的计算量基本恒定。
粗到细策略:如果对所有像素做密集匹配,计算量同样不可接受。BLASt3R采用了两级策略:首先在patch级别做粗匹配,通过余弦相似度筛选出有匹配关系的patch对;然后仅在选中的patch对内部做像素级稠密匹配。
粗匹配的相似度计算为:
其中 和 是记忆token经过MLP投影后的特征。通过阈值 筛选得到匹配patch对 。
细匹配阶段,网络在 中每个patch对内预测像素级的稠密光流:
这里 和 是像素级描述子。最终每个像素的匹配由argmax获得,当最佳匹配的相似度低于可学习的阈值 时返回空匹配。
这种粗到细设计使得训练和推理都变得可处理——训练时不需要在全图上做密集注意力,推理时只需要在少量patch对内计算像素级匹配。


训练策略:匹配网络采用分类目标,粗匹配和细匹配都使用交叉熵损失。粗匹配中引入了一个可学习的空patch,让网络自行判断一个patch是否在记忆中没有匹配。细匹配同样引入“空像素” 。这种设计使得网络不仅知道“在哪里匹配”,还知道“哪里没有匹配”——这是应对遮挡和视野外区域的关键能力。
模块二:可调节的单目点云网络
第二个核心组件是一个可调节的单目点云网络。这个模块的独特之处在于——它不只是预测一个固定的深度图,而是预测一组可调节的深度基,让后续的BA能够根据多视图一致性动态地调整每个像素的深度。
具体而言,网络预测一个光线图 和多通道深度图 。单目点云表示为:
其中 是主要的深度通道, 是光线方向。
为了赋予点云可调节性,网络额外预测了多个校正通道 ()。在BA过程中,这些通道可以通过一组系数 和偏移 线性组合,形成可调节的点云:
其中 是来自估计(或已知)焦距 的正则化光线:。
这相当于为每个像素准备了多个深度假设——BA可以根据其他视图的约束,自动选择最优的线性组合,让每个像素的深度在多视图一致性和单目先验之间达到最佳平衡。
训练时,网络通过以下损失学习这些深度通道:
这个损失通过迭代重加权最小二乘(IRLS)求解,但反向传播时梯度不流过 和 ——这防止了校正通道“污染”主深度通道 。

模块三:统一束调整——让匹配和深度“对话”
BLASt3R的第三个核心组件,是连接前两个模块的统一束调整。与传统的2D BA不同,这个BA同时优化了三个东西:相机参数(焦距和外参)、3D点位置,以及每个图像的可调节深度系数。
传统BA只优化重投影误差——3D点投影到图像平面后与观测位置的偏差。BLASt3R在此基础上增加了一个深度误差项,让单目深度先验在优化过程中发挥作用,又不会被其束缚。
具体而言,对于每个3D点 及其在每个可见图像 中的观测 (2D位置 + 深度值),误差定义为:
其中 是当前深度通道在线性组合下的值, 控制深度项的权重。当 时退化为传统2D BA;当 时,深度先验开始发挥作用。
这种设计的精妙之处在于:深度误差在对数空间中计算,使得“10倍过近”和“10倍过远”受到同等惩罚。同时乘以焦距 ,使得 、、 三个分量的误差在量级上协调一致。
BA采用带阻尼的Levenberg-Marquardt(LM)方案,在GPU上高效实现。所有线性代数都在PyTorch中完成,利用Schur补消元法消除大量3D点变量,将问题规模从数万变量降低到仅与相机数量相关的规模:
其中 、、 是BA Jacobian的分块矩阵。这个简化后的系统通过GPU加速的预条件共轭梯度(PCG)求解,每次迭代只需做稀疏块乘法,时间复杂度与点数呈线性关系。

实验:在在线和离线两个赛道上同时登顶
BLAST3R在在线VSLAM和离线SfM两个场景下都进行了全面评估,而且——用的是完全同一套超参数。这意味着用户不需要为不同的应用场景重新调参,开箱即用。
在线VSLAM:未标定模式超越所有标定方法
在TUM RGB-D这个经典的VSLAM基准上,BLAST3R展现了惊人的表现。
关键数据:在fr1子集的平均ATE(绝对轨迹误差RMSE)为2.5cm,而所有对比方法中,最好的标定方法DROID-SLAM为3.8cm,GIORIE-SLAM为3.6cm。这意味着BLAST3R在不知道相机内参的情况下,比所有知道内参的已有方法更准。
| BLAST3R | × | 5.2 | 1.4 | 2.4 | 2.0 | 1.3 | 5.1 | 2.0 | 2.6 | 0.9 | 2.5 |
在ETH3D SLAM的7个序列上,BLAST3R同样以1.8cm的平均ATE领先所有方法,包括VIPE(5.6cm)和MUS3R-512(2.7cm)。
离线SfM:精度全面碾压,速度提升一个量级
在ETH3D-MVS这个公认的SfM挑战性基准上,BLAST3R更是以绝对优势领跑。
mA@30指标(衡量相对旋转和平移的联合精度):BLAST3R达到**98.5%**,而VGGT为75.7%,VGGT-BA为88.4%,MAST3R-SfM为81.5%。这是一个超过10个百分点的显著差距,在SfM领域几乎是代际差异。
| BLAST3R | 98.5 |
| BLAST3R + COLMAP-BA | 98.8 |
更令人印象深刻的是速度-精度曲线:BLAST3R在精度远超VGGT-BA和MAST3R-SfM的同时,运行速度与纯前馈的VGGT相当。在处理200张图像时,BLAST3R仅需约2.1分钟,而VGGT-BA需要140分钟——速度提升约70倍。
在Tanks & Temples基准的100帧采样设置下,BLAST3R达到75.9%的mA@30,超越VGGT-BA的76.1%基本持平,但速度差距巨大——VGGT-BA耗时12分钟,BLAST3R仅需1.2分钟。
稠密重建质量:细节决定成败
除了相机姿态精度,BLAST3R还评估了稠密点云的重建质量。在ETH3D上,BLAST3R在Accuracy指标上达到0.13m,优于π³(0.14m)和VGGT(0.17m)。在7-Scenes数据集上,BLAST3R的Completeness指标达到0.09m,远超π³的0.17m。

消融实验:为什么可调节深度如此关键?
论文通过消融实验揭示了两个关键设计选择的重要性。
可调节深度通道数:当使用单深度通道(nz=1,只能做全局仿射对齐)时,重建精度显著下降。而使用多通道(nz=16)时,模型能够灵活地调整每个区域的深度,更好地适应多视图一致性约束。
深度项权重 :当 (即退化为传统2D BA)时,精度也会明显下降,说明单目深度先验确实起到了正则化和约束的作用。

为什么BLAST3R能做到“一个框架通吃”?
BLAST3R的成功并非偶然,而是几个关键设计共同作用的结果。
其一,将“匹配”和“重建”解耦但又统一。匹配网络负责建立跨视图的稠密对应关系,但不负责三维重建;单目网络负责提供深度先验,但不负责匹配。两者在BA中汇合,各司其职,各展所长。
其二,可调节深度机制。传统方法要么完全依赖单目深度(但存在尺度不一致),要么完全抛弃深度先验(在纹理稀疏区域失效)。BLAST3R的多通道深度让BA可以在先验和观测之间找到最优平衡,既有单目先验的泛化能力,又有BA的精确优化。
其三,线性复杂度的匹配。通过记忆机制和粗到细策略,BLAST3R的匹配成本与图像数量呈线性关系,使得它能够扩展到数千张图像的大规模场景——这是VGGT等二次复杂度方法无法做到的。
其四,GPU加速的BA。自定义的GPU端LM求解器利用Schur补消元和预条件共轭梯度,使得在大规模问题上的优化不再是瓶颈。
开源与使用
BLASt3R的代码和模型权重已全面开源:
代码仓库:https://github.com/naver/blast3r 项目主页:https://europe.naverlabs.com/blast3r
代码库目前处于一个无序但功能完整的“研究状态”——正如作者所说,“代码可能不太美观,重构正在进行中”。但对于希望在自己的数据上运行的用户,这已经是目前最强大的统一SfM/VSLAM系统。
根据GitHub仓库的描述,BLASt3R的模型权重可以通过blast3r/weights模块加载:
from blast3r.weights import load_weights
weights = load_weights("BLASt3R")
推理的完整示例在demo.py和demo.ipynb中提供。注意:BLASt3R基于DUST3R/MAST3R代码库构建,如果已安装了DUST3R,可能会遇到依赖冲突,建议在新的conda环境中安装。
总结:传统与学习的最优融合
BLASt3R的意义超越了单纯的性能提升。
它证明了“传统派”和“学习派”并非对立的两极——COLMAP式的精确几何优化和DUST3R式的学习先验可以融合在一个统一的框架中,相互补充,而非相互替代。
它证明了在线VSLAM和离线SfM可以共享同一个模型——不需要为不同场景重新设计算法,一个框架、一组超参数,就能在两个赛道上同时达到顶尖水平。
它证明了稠密匹配可以不昂贵——通过记忆机制和粗到细策略,线性复杂度的匹配不再是奢望。
对于机器人导航、AR/VR、自动驾驶等需要实时三维感知的应用,BLASt3R意味着一个从前遥不可及的可能性:你可以在线构建一个精度堪比离线SfM的稠密三维地图,而不需要牺牲实时性。
正如作者在论文开篇所言:“我们的统一方法无缝支持在线VSLAM和离线SfM,在所有任务中共享同一组超参数。”——这句话的背后,是二十年三维视觉研究的一条分水岭。
相关信息
标题:BLASt3R: Bundle Adjustment of Any Image Set with Multi-View Matching and Monocular Priors
作者:Vincent Leroy, Philippe Weinzaepfel, Lojze Zust, Yohann Cabon, Jerome Revaud
机构:NAVER LABS Europe
开源:https://github.com/naver/blast3r
本文仅做学术分享,如有侵权,请联系删文。
。




添加微信:cv3d001,备注:姓名+方向+单位,邀请入群。