MoRe: Motion-aware Feed-forward 4D Reconstruction Transformer¶
会议: CVPR 2026
arXiv: 2603.05078
代码: 项目页面
领域: 3D视觉
关键词: 4D重建, 动态场景, 注意力强制, 流式推理, 运动解耦
一句话总结¶
提出 MoRe,一种前馈式运动感知 4D 重建 Transformer,通过注意力强制策略在训练时解耦动态运动与静态结构,结合分组因果注意力实现高效流式推理,在动态场景的相机位姿估计和深度预测上达到 SOTA。
研究背景与动机¶
从单目视频重建时序演化的 3D 结构(4D 重建)是 AR/机器人/数字孪生等应用的核心需求。现有方法面临的困境:
- 静态假设的前馈模型(DUSt3R、VGGT、Fast3R):直接回归点图和位姿,速度快但在动态物体存在时,用于相机估计的特征被严重污染(注意力分散到运动物体上),导致位姿精度显著退化
- 优化式管线(MonST3R、CasualSAM):集成光流/分割/深度估计等模块,处理动态场景更鲁棒,但多阶段结构计算开销大,不适合实时或长序列处理
- 流式重建方法(CUT3R、StreamVGGT):采用 LLM 风格的因果注意力实现在线处理,但标准因果注意力破坏帧内 token 之间的空间一致性,且误差沿时间累积
核心挑战:如何设计一个快速、可泛化的框架,在动态场景和流式输入下同时保证位姿和深度的精度?
方法详解¶
整体框架¶
MoRe 基于强静态重建骨干(VGGT 架构),从单目视频帧序列 \(\{I_t\}_{t=1}^T\) 联合估计深度 \(\{D_t\}\)、相机参数 \(\{g_t\}\)、点图 \(\{P_t\}\) 和运动掩码 \(\{M_t\}\)。训练阶段通过注意力强制(attention forcing)策略注入运动感知能力,推理阶段完全不依赖额外运动先验或分割输入。支持全注意力模式(最优质量)和流式因果注意力模式(在线处理)。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["单目视频帧序列 {I_t}"] --> B["VGGT 骨干编码<br/>提取 image / camera token"]
B --> C["分组因果注意力 GCA<br/>帧内双向 + 跨帧单向因果"]
C -->|流式增量更新 KV 缓存| D["逐帧输出深度 / 位姿"]
D --> E["BA-like Token 聚合<br/>序列末 camera token 回看全序列做全局对齐"]
E --> F["深度 / 相机位姿 / 点图 / 运动掩码"]
G["注意力强制<br/>训练时 GT 掩码监督 camera token 看静态区"] -. 训练时监督·推理移除 .-> C
关键设计¶
1. 注意力强制(Attention Forcing):在训练时教 camera token「看哪里」,免费拿到运动解耦能力
这一招直接针对前面那个最棘手的痛点——把 VGGT 的注意力图画出来会发现,动态场景里 camera token 的注意力均匀地铺在运动物体和静态背景上,相机估计该依赖的稳定特征被运动物体污染,位姿自然就乱了。MoRe 的做法是在训练时把 GT 运动掩码按 \(s \times s\) 的 patch 切开,给每个 image token 算一个静态得分:
\(a_i \in [0,1]\),越接近 1 表示这块越静态。然后用 \(a_i\) 去监督 camera token 对该 token 的注意力权重 \(\alpha_i\),逼着模型把注意力收到静态区域、躲开运动物体。最妙的地方是推理时这套监督完全消失——GT 掩码只在训练用,模型把「该看静态区」的偏好内化进了权重,所以测试时零额外开销、也不需要任何分割输入。
2. 分组因果注意力:让流式推理在保住因果性的同时不丢帧内空间一致
朴素地把 LLM 那套因果注意力搬过来会出问题:它把一帧里所有 image token 拍成一条扁平序列,token 之间只能单向看,帧内的空间对应关系被打散,几何推理就站不住。MoRe 把它改成帧感知的因果掩码——同一帧内的 image token 互相双向可见(恢复空间一致性),跨帧则只允许后面的帧看前面的帧(保住时序因果)。流式处理时首帧负责初始化 KV 缓存,之后每来一帧只做增量计算:
这等于在「能在线增量跑」和「不破坏帧内结构」之间找到了最小改动的折中。
3. BA-like Token 聚合:用一次注意力补回流式推理丢掉的全局一致性
因果限制让后面的帧看不到更后面的信息,误差会沿时间累积——这是所有流式方法的通病。MoRe 在序列跑完后加一步轻量全局优化:把每帧的 camera query \(\mathbf{Q}_t^{\text{cam}}\) 和所有帧的 KV 特征都缓存下来,让每个 camera token 回过头重新注意整段序列:
效果类比传统的 Bundle Adjustment 全局对齐,但代价只是一次额外注意力,远比迭代式 BA 便宜。训练时的小技巧是在序列末尾复制一份 camera token,同时监督「流式」和「全局」两条路径,确保增量结果和全局优化结果彼此一致。
一个完整示例¶
拿一段 \(T=8\) 帧、其中有行人走动的单目视频走一遍流式推理:第 1 帧进来时没有历史,模型把它的 image/camera token 编码后写进 KV 缓存,得到首帧的深度和位姿;第 2 帧到来,它的 image token 在帧内双向交互、camera token 则同时注意第 1 帧和自己的 KV(公式中 \(F_2\) 那一步),因为运动对齐注意力已经内化,camera token 会自动忽略画面里走动的行人、只锚定静态街景,于是位姿不被行人带偏;这样一帧帧增量推进到第 8 帧,KV 缓存逐步累积。全部 8 帧跑完后触发 BA-like 聚合——8 个 camera token 各自回看完整的 1–8 帧特征做一次全局对齐,把流式过程中累积的漂移拉回,最终一次性吐出全序列一致的相机轨迹、深度、点图和运动掩码。整个过程不需要任何外部光流或分割模块。
损失函数 / 训练策略¶
- 深度/点图:置信度加权回归损失 \(\mathcal{L}_{\text{conf}} = \sum_i (\hat{c}_i \|\hat{y}_i - y_i\|_2^2 - \lambda \log(\hat{c}_i))\)
- 运动掩码:标准 BCE 损失 \(\mathcal{L}_{\text{motion}}\)
- 注意力对齐:\(\mathcal{L}_{\text{attn}} = \frac{1}{M} \sum_i \max(0, a_i - C) \cdot \alpha_i\),仅惩罚动态区域的注意力权重
- 相机位姿:相对变换监督 \(\mathcal{L}_{\text{cam}}\),对流式 token 截断早期梯度,对复制的全局 token 保留完整梯度
- 训练数据:12个数据集混合(Dynamic Replica, PointOdyssey, Spring, KITTI, ScanNet, Co3Dv2 等),覆盖室内外、动态静态
实验关键数据¶
主实验¶
相机位姿估计(动态场景):
| 方法 | 类型 | Sintel ATE↓ | Bonn ATE↓ | TUM-dyn ATE↓ | ScanNet ATE↓ |
|---|---|---|---|---|---|
| VGGT | 全注意力 | 0.1715 | 0.0141 | 0.0109 | 0.0347 |
| MoRe (FA) | 全注意力 | 0.0877 | 0.0138 | 0.0115 | 0.0375 |
| CUT3R | 流式 | 0.2163 | 0.0420 | 0.0438 | 0.0929 |
| Stream3R | 流式 | 0.2144 | 0.0235 | 0.0240 | 0.0521 |
| MoRe | 流式 | 0.1474 | 0.0211 | 0.0260 | 0.0605 |
视频深度估计:
| 方法 | 类型 | Sintel AbsRel↓ | Bonn AbsRel↓ | KITTI AbsRel↓ |
|---|---|---|---|---|
| VGGT | 全注意力 | 0.387 | 0.055 | 0.073 |
| MoRe (FA) | 全注意力 | 0.335 | 0.055 | 0.066 |
| Stream3R | 流式 | 0.397 | 0.070 | 0.079 |
| MoRe | 流式 | 0.254 | 0.068 | 0.072 |
消融实验¶
| 配置 | Sintel ATE↓ | Sintel RPE_trans↓ | TUM ATE↓ | 说明 |
|---|---|---|---|---|
| w/o 注意力强制 | 0.163 | 0.092 | 0.028 | 去掉注意力强制(运动解耦监督) |
| w/o BA-like 优化 | 0.155 | 0.085 | 0.027 | 去掉全局 token 聚合 |
| Full MoRe | 0.147 | 0.082 | 0.026 | 完整方法 |
| 配置 | Sintel AbsRel↓ | Bonn AbsRel↓ | KITTI AbsRel↓ | 说明 |
|---|---|---|---|---|
| w/o GCA | 0.277 | 0.070 | 0.079 | 标准因果注意力 |
| w/ GCA | 0.254 | 0.068 | 0.072 | 分组因果注意力 |
关键发现¶
- 注意力强制策略在 Sintel(大量动态物体)上效果最显著:ATE 从 0.163→0.147,验证了运动解耦的有效性
- 分组因果注意力在所有深度估计基准上一致提升,证明帧内空间一致性对几何推理至关重要
- 全注意力模式下,MoRe 在 Sintel ATE 上将 VGGT 从 0.1715 大幅降低到 0.0877(-49%),突破性提升
- 流式模式下全面超越同类方法(CUT3R、StreamVGGT、Wint3R、Stream3R),且支持增量处理
- 零样本泛化:所有动态评测数据集均未在训练中出现
亮点与洞察¶
- 注意力强制思路极其优雅:不修改推理架构,仅在训练时通过注意力监督教会模型"看哪里",实现免费的运动解耦能力
- 从 VGGT 注意力图的直接观察出发(图3),动机可视化清晰有力,问题定义精准
- 分组因果注意力设计简洁有效,保留因果性同时恢复帧内空间一致——针对图像 token 对 LLM 因果注意力的最小改造
- BA-like token 聚合仅需一次额外注意力计算就获得全局一致性,比传统 BA 高效得多
局限与展望¶
- 训练依赖 GT 运动掩码,限制了可用训练数据的规模和多样性(需要带分割标注的动态数据集)
- 流式模式下在 ScanNet(静态场景)上 ATE 0.0605 高于全注意力的 0.0375,说明因果限制在长序列静态场景中仍有损失
- BA-like 优化需等待全序列处理完毕才能执行,不算严格的实时流式处理
- 未报告运动掩码预测本身的精度,也未做下游任务(如动态物体分割/移除)的评测
- 可探索自监督的运动掩码生成以摆脱对 GT 标注的依赖
相关工作与启发¶
- VGGT:MoRe 的直接改进基线,通过注意力强制修复了其在动态场景中的注意力混淆问题
- CUT3R:引入 Transformer 持久隐状态做在线重建,但注意力设计不区分帧内外
- MonST3R/CasualSAM:优化式管线处理动态场景更鲁棒,但速度慢,MoRe 通过前馈方式兼具速度和鲁棒性
- 启发:注意力强制作为一种通用的"在训练时教模型关注什么"的策略,可迁移到其他需要运动/静态解耦的视觉任务
评分¶
- 新颖性: ⭐⭐⭐⭐ 注意力强制策略新颖且效果显著,分组因果注意力设计精巧
- 实验充分度: ⭐⭐⭐⭐⭐ 4个基准、10+对比方法、全注意力+流式两种模式、完整消融
- 写作质量: ⭐⭐⭐⭐ 注意力图可视化动机清晰,公式推导严谨,实验组织有条理
- 价值: ⭐⭐⭐⭐ 为4D重建提供了实用的前馈解决方案,注意力强制策略具有广泛迁移潜力