OpenVO: Open-World Visual Odometry with Temporal Dynamics Awareness¶
会议: CVPR2026
arXiv: 2602.19035
代码: openvo.github.io
领域: 3D视觉
关键词: 视觉里程计, 时间动态感知, 无标定相机, 3D流场, 自动驾驶
一句话总结¶
提出 OpenVO,一个面向开放世界的单目视觉里程计框架,通过时间感知流编码器和几何感知上下文编码器,在无相机标定、帧率变化的条件下实现鲁棒的真实尺度自车运动估计,跨数据集 ATE 提升超 20%,变帧率场景误差降低 46%-92%。
背景与动机¶
- 行车记录仪数据丰富但难以利用:YouTube 等平台的行车记录仪视频包含大量罕见驾驶事件(如碰撞),是构建轨迹数据集的宝贵资源,但这些视频通常是单目、无标定的,相机参数和帧率差异极大
- 现有 VO 方法假设固定帧率:TartanVO、XVO、ZeroVO 等方法在固定帧率(如 10Hz、12Hz)上训练和评估,完全忽略时间动态信息,导致帧率不匹配时性能严重下降
- 经典方法依赖相机标定:ORB-SLAM、DSO 等几何方法需要已知相机内参,无法处理无标定的开放世界观测
- 学习方法泛化能力有限:早期学习方法在相似条件下训练和测试,缺乏对不同相机几何的显式建模,跨域性能差
- 时间过拟合问题被忽视:强化学习和世界模型领域已证明固定采样率训练会导致时间过拟合,但 VO 领域几乎未探索这一问题
- 尺度一致性难题:单目 VO 天生存在尺度模糊,仅靠外观信息无法恢复真实世界尺度,需要引入几何先验
方法详解¶
整体框架¶
OpenVO 采用两帧位姿回归架构,输入连续两帧行车视频图像,输出 SE(3) 相对相机位姿。核心由三个模块组成:
- 时间感知流编码器 (Time-Aware Flow Encoder):编码帧率信息到光流特征中
- 几何感知上下文编码器 (Geometry-Aware Context Encoder):融合深度和相机内参先验
- 世界坐标自运动解码器 (World-Coordinate Egomotion Decoder):回归平移和旋转
时间感知流编码器¶
Time Condition Layers:将帧率 \(f\) 映射为时间间隔 \(\Delta t = 1/f\),通过正弦位置编码展开为高维嵌入 \(\text{PE}(\Delta t)\),然后通过两个线性层生成仿射变换参数 \(\alpha, \beta\) 对光流相关特征进行调制:
调制后的特征经 4 层 self-attention 精炼空间关联,使网络在感知时间动态的前提下推理运动结构。
可微 2D 引导 3D 流:利用 2D 光流(MaskFlowNet)和度量深度(Metric3Dv2),通过透视反投影将像素投射为 3D 点 \(P_1 = D_1 \cdot K^{-1} p_1\),再用光流将像素 warp 到第二帧的子像素位置,双线性采样深度后反投影得到 \(P_2\),计算稠密 3D 流 \((P_2 - P_1)\)。整个过程完全可微,端到端可训练。3D 流经 4 层 self-attention 后与时间调制光流特征融合,形成 Time-Aware Flow Feature。
几何感知上下文编码器¶
- Camera Tokenizer:使用 WildCamera 推断相机内参 \(K\),构建归一化内参射线场 \(r(u,v) = K^{-1}[u,v,1]^\top\),编码每个像素的 3D 观察方向
- Depth Tokenizer:用 Metric3Dv2 估计度量深度 \(D\),将射线方向乘以深度值 \(M(u,v) = D(u,v) \cdot r(u,v)\),得到度量尺度的 3D 点分布
- 将 \([r, M, D]\) 组装为 token 集合,送入 8 层 self-attention 编码器,产出统一的几何嵌入
解码器与损失¶
拼接 Time-Aware Flow Feature 和 Geometry-Aware Context Feature,经两个 MLP 分支分别回归:
- 旋转:预测 Fisher 矩阵 \(\mathcal{F} \in \mathbb{R}^{3\times3}\),通过 Matrix Fisher 分布映射到 SO(3),建模方向不确定性
- 平移:度量尺度回归模块直接预测世界坐标位移 \(t_i \in \mathbb{R}^3\)
多时间尺度训练:对原始帧率 \(f_0\) 的视频按因子 \(k\) 跳帧,生成 \(f_0/k\) 帧率的训练样本(如 12Hz → 6Hz/4Hz),暴露模型于多种时间尺度。训练使用梯度裁剪保持稳定性。
实验关键数据¶
跨数据集泛化(仅在 nuScenes Singapore-OneNorth 上训练)¶
| 方法 | KITTI ATE | nuScenes ATE | Argoverse2 ATE |
|---|---|---|---|
| TartanVO | 103.07 | 6.26 | 7.03 |
| ZeroVO‡ | 123.42 | 8.40 | 5.71 |
| XVO | 168.43 | 8.30 | 5.70 |
| OpenVO✓ | 93.23 | 5.91 | 2.39 |
OpenVO 在 KITTI ATE 上较 ZeroVO‡ 提升 24%,在 Argoverse2 上提升 58%。
变帧率鲁棒性(Tab.4 选摘)¶
| 设定 | OpenVO ATE | ZeroVO‡ ATE | 改进 |
|---|---|---|---|
| KITTI 2.5Hz | 368.47 | 553.52 | -33% |
| nuScenes 6Hz | 6.07 | 21.55 | -72% |
| Argoverse2 20Hz | 6.47 | 36.14 | -82% |
在所有变帧率设置中,OpenVO 将误差降低 46%-92%。
消融实验¶
- 时间编码维度:\(K=8\)(PE 维度 17)效果最佳,过小欠拟合时间变化,过大引入高频振荡
- 训练频率组合:{12/6/4} Hz 最优;去掉 Time Condition Layers 后 KITTI ATE 从 93.23 升至 152.42(+64%),证明显式时间感知的必要性
- 可微 vs 不可微 3D 流:可微版本在 KITTI ATE 上从 109.01 降至 93.23,提供更一致的轨迹预测
亮点¶
- 首次在 VO 中建模时间动态:通过正弦位置编码+仿射调制将帧率信息注入光流特征,简洁有效地解决了时间过拟合问题
- 完全可微的 2D→3D 流构建:将 2D 光流、度量深度、推断内参统一在端到端可微管线中,比非可微版本显著更优
- 无需标定的开放世界 VO:结合 WildCamera 和 Metric3Dv2 的 foundation model 先验,在无真实内参条件下实现度量尺度恢复
- 多时间尺度训练策略:通过跳帧增强暴露模型于多种帧率,配合时间条件层实现对未见帧率的强泛化
- 变帧率场景压倒性优势:相比 ZeroVO,在变帧率测试中误差降低最高 92%,实用价值突出
局限性 / 可改进方向¶
- 深度估计和内参推断独立运行:Metric3Dv2 和 WildCamera 各自推断,误差可能级联传播到最终 VO 结果,缺乏联合优化
- 多时间尺度设置为经验性选择:{12/6/4} Hz 的训练频率组合是手动设定的,自适应采样策略可能更优
- 混合频率训练引入不一致梯度:在 KITTI 上局部轨迹段误差(\(t_{err}\), \(r_{err}\))略高于部分基线,因多频率训练导致参数更新不一致
- 训练成本较高:96 GPU 小时(A6000),对资源受限的场景不友好
- 未验证极端场景:如极低帧率(<2Hz)、严重遮挡、动态场景密集的情况
与相关工作的对比¶
| 方法 | 需要标定 | 时间感知 | 3D 几何先验 | 额外数据 |
|---|---|---|---|---|
| ORB-SLAM3 | ✓ | ✗ | ✗ | ✗ |
| TartanVO | ✓(GT内参) | ✗ | ✗ | ✗ |
| XVO | ✗ | ✗ | ✗ | YouTube 伪标签 |
| ZeroVO | ✗ | ✗ | ✓(3D流+语言) | YouTube+文本 |
| OpenVO | ✗ | ✓ | ✓(可微3D流) | ✗ |
OpenVO 是唯一同时具备时间动态感知和几何先验、且不依赖额外数据的无标定 VO 方法。
评分¶
- 新颖性: ⭐⭐⭐⭐ — 首次将时间动态感知引入 VO,Time Condition Layers 的仿射调制设计简洁优雅;可微 2D→3D 流也是有意义的贡献
- 实验充分度: ⭐⭐⭐⭐ — 三大自动驾驶基准、标准帧率+变帧率评估、完整消融,覆盖面广;但缺少更极端帧率和其他传感器类型的测试
- 写作质量: ⭐⭐⭐⭐ — 动机清晰、方法叙述流畅、图表丰富,问题定义明确
- 价值: ⭐⭐⭐⭐ — 解决了开放世界行车视频轨迹重建的实际痛点,对自动驾驶数据采集和 YouTube 规模视频分析有直接应用价值