Spann3R

摘要
- 从有序/无序图像集进行稠密3D重建
- 基于DUSt3R框架,使用transformer架构,无需场景和相机参数先验,直接从图像回归点图
- 为每张图像预测全局坐标系下的点图,消除了优化式全局对齐的必要性
- 使用一个外部空间记忆,保存先前的3D信息,通过查询该记忆库,预测下一帧3D结构
- 微调DUSt3R
引言
- 三维重建
- DUSt3R 基于图像对,全局优化

- 本文 一个端到端在线增量三维重建的系统
- 通过空间记忆(Spatial Memory)追踪所有过去的预测结果
- 使用transformer的交叉注意力查询记忆

- 不需要测试时优化或全局对齐
相关工作
-
经典3D重建方法
-
结构从运动 SfM 特征匹配
-
多视图立体 MVS 从稀疏点云到稠密集和
-
都是离线的,耗时巨大
-
SLAM 实时性
-
依赖相机内参,光照,低反射与纹理丰富的场景,深度
-
基于学习的3D重建
-
DUSt3R 将整个传统管线统一成一个网格
-
Spann3R 移除全局优化,使系统可实时增量重建
-
神经渲染与3维重建
-
NeRF限制: 相机参数(SfM),测试时需要大量优化
-
高斯泼溅,也需要分钟级的优化时间
-
记忆网络
-
最早用于NLP
-
后面用于视频对象分割(VOS),长视频理解
-
Spann3R受到 X-Mem等VOS记忆机制启发,扩展。
方法

-
训练一个网络F 使其能将每一帧It映射到对应的全局点云X 引入空间记忆
-
网络架构
-
输入特征编码,每个时间步,模型接收It,上一帧的查询特征ft-1
-
使用VIT编码It得到视觉特征,使用ft-1作为查询,得到历史几何特征
-
两个解码器
-
Target Decoder 生成查询特征,用于下一帧的记忆查询
-
Reference Decoder 利用当前视觉特征和历史融合特征 输出当前帧点图Xt-1 用于三维重建
-
通过cross-attention交互
-
query的生成 经过一个MLP
-
输出点图与置信图 经过另一个MLP 生成三维点图Xt-1,每个像素点的置信度Ct-1 同时使用输出生成一个监督用的点图
-
记忆编码 memory key/memory value
-
问题:DUSt3R的两个解码器是怎么用的。监督用的点云要干什么。Xt-1是实时更新的全局点云还是增量部分。
-
空间记忆

-
密集工作记忆
-
稀疏长期记忆
-
基于注意力的记忆读取机制
-
记忆查询机制
-
给定当前ft-1 计算与所有key的权重,经过softmax,用这些权重加权sum所有value得到融合特征
-
加上原query形成一个残差结构
-
注意力裁剪
-
大多数注意力值非常小 微小权重对应的value可能来自错误几何区域,噪声也可能对融合特征造成影响
-
将注意力中小于5e-4的值全部置0,再重新归一化。
-
提升鲁棒性
-
工作记忆
-
保留最近5帧所有的key/value
-
对新帧做相似度比对,小于0.95则加入
-
若内存已满,则最老的条目会被移入长期记忆
-
长期记忆
-
GPU内存爆炸 查询速度下降
-
类似X-Mem策略
-
根据累计注意力分布 保留贡献最高的 top-K tokens 其余丢弃
-
记忆稀疏化
-
训练与推理
-
损失函数
-
遵循DUSt3R的设计,损失包含两部分
-
置信度引导的点图回归损失 每个像素误差通过学习到的置信度加权 使模型自动关注更可靠区域
-
缩放损失 添加约束 使预测点云平均距离不大于真实点云的平均距离
-
课程式训练策略 (Curriculum Learning)
-
前期 逐步增加采样窗口跨度
-
后期 减少窗口跨度
-
推理阶段
-
视频序列 有序输入
-
无需图像集合
-
A 构建稠密图像对图(如DUSt3R) 用置信度最高的图像对初始化坐标
-
B 依赖模型自身预测置信度并排序
-
注意:原 DUSt3R 使用 exponential 函数生成置信度,偏向集中;Spann3R 发现改用 sigmoid 更稳健,不容易被高置信度的局部噪声误导。
实验

-
数据集
-
原始数据的子集 6/8
-
对比方法
-
DUSt3R 224x224
-
FrozenRecon 离线方法
-
few-view 少视角重建的公平比较
-
评价指标
-
Acc 预测点到GT点的距离
-
Comp GT点到预测点的距离
-
NC 法向一致性
-
Acc和Comp不是一样吗
-
实现细节
-
224x224
-
120个epoch
-
AdamW lr=5e-5
-
8xV100(32GB)GPU
-
每卡batch size=2 总16
-
10天