这篇文章是2025年比较里程碑式的立体匹配网络了。主要在于泛化性实现了zero shot。我认为主要的贡献点在于:
1.百万级别的仿真数据集,并且在训练时去掉一些不好的数据
2.混合代价聚合机制:AHCF=APC+DT
APC就是将depth-anythingv2 中的vit特征与cnn融合,是使用分离的3Dcnn网络( 网络还是用的PSM网络(金字塔立体匹配) Hourglass。)降低内存占用,可以进一步增大卷积核大小,增加感受野,同时适应更大范围的视差聚合,获取更多的局部信息,
DT是使用vit计算全局特征特征,将局部和全局特征融合更高级的代价体。
感觉能实现zero shot可能的原因在于数据和depth-anything,整体的网络架构算不上开创性。
FoundationStereo: Zero-Shot Stereo Matching 论文总结
文章目录
- [FoundationStereo: Zero-Shot Stereo Matching 论文总结](#FoundationStereo: Zero-Shot Stereo Matching 论文总结)
-
- [📝 文章基本信息](#📝 文章基本信息)
- [🎯 一句话总结](#🎯 一句话总结)
- [0. 论文概述 (Executive Summary)](#0. 论文概述 (Executive Summary))
- [1. 问题背景与动机](#1. 问题背景与动机)
-
- [1.1 立体匹配的现状与困境](#1.1 立体匹配的现状与困境)
- [1.2 为什么选择立体匹配作为研究对象?](#1.2 为什么选择立体匹配作为研究对象?)
- [2. 相关工作与创新关联](#2. 相关工作与创新关联)
-
- [2.1 前人工作综述](#2.1 前人工作综述)
-
- [2.1.1 深度立体匹配方法分类](#2.1.1 深度立体匹配方法分类)
- [2.1.2 域泛化与零样本学习](#2.1.2 域泛化与零样本学习)
- [2.1.3 训练数据](#2.1.3 训练数据)
- [2.2 存在的问题与不足](#2.2 存在的问题与不足)
-
- [2.2.1 网络架构层面](#2.2.1 网络架构层面)
- [2.2.2 Sim-to-Real Gap](#2.2.2 Sim-to-Real Gap)
- [2.2.3 数据规模](#2.2.3 数据规模)
- [2.3 本论文与前人工作的关系](#2.3 本论文与前人工作的关系)
- [3. 贡献与核心创新点](#3. 贡献与核心创新点)
-
- [3.1 论文的四大贡献](#3.1 论文的四大贡献)
-
- **贡献1:FoundationStereo基础模型**
- [**贡献2:FoundationStereo Dataset (FSD)**](#贡献2:FoundationStereo Dataset (FSD))
- [**贡献3:Side-Tuning Adapter (STA)**](#贡献3:Side-Tuning Adapter (STA))
- [**贡献4:Attentive Hybrid Cost Filtering (AHCF)**](#贡献4:Attentive Hybrid Cost Filtering (AHCF))
- [4. 方法与网络设计](#4. 方法与网络设计)
-
- [4.1 整体网络架构概览](#4.1 整体网络架构概览)
-
- [4.1.1 五阶段处理流程](#4.1.1 五阶段处理流程)
- [4.1.2 信息流向与模块交互](#4.1.2 信息流向与模块交互)
- [4.1.3 各模块功能概述](#4.1.3 各模块功能概述)
- [4.2 网络详细分析](#4.2 网络详细分析)
-
- [**4.2.1 Side-Tuning Adapter (STA) 详解**](#4.2.1 Side-Tuning Adapter (STA) 详解)
- [**4.2.2 混合成本体积构造 详解**](#4.2.2 混合成本体积构造 详解)
- [**4.2.3 Attentive Hybrid Cost Filtering (AHCF) 详解**](#4.2.3 Attentive Hybrid Cost Filtering (AHCF) 详解)
-
- [A. Axial-Planar Convolution (APC) Filtering](#A. Axial-Planar Convolution (APC) Filtering)
- [B. Disparity Transformer (DT)](#B. Disparity Transformer (DT))
-
- 背景:为什么需要全局推理?
- [核心设计:令牌化 + 自注意力](#核心设计:令牌化 + 自注意力)
- Transformer在成本体积中的作用
- 消融验证
- [**4.2.4 初始视差预测**](#4.2.4 初始视差预测)
- [**4.2.5 迭代细化:多尺度GRU**](#4.2.5 迭代细化:多尺度GRU)
- [**4.2.6 损失函数与训练策略**](#4.2.6 损失函数与训练策略)
-
- [损失函数定义(Eq. 11)](#损失函数定义(Eq. 11))
- 训练策略
- [4.3 FoundationStereo Dataset (FSD) 详解](#4.3 FoundationStereo Dataset (FSD) 详解)
- [5. 实验结果](#5. 实验结果)
-
- [5.1 数据集与评估指标](#5.1 数据集与评估指标)
- [5.2 零样本泛化对比](#5.2 零样本泛化对比)
-
- 场景1:仅在SceneFlow上训练
- 场景2:允许混合数据集训练(关键)
- [场景3:野生图像泛化(Figure 5)](#场景3:野生图像泛化(Figure 5))
- [5.3 域内对标](#5.3 域内对标)
-
- [Table 3:Scene Flow 测试集](#Table 3:Scene Flow 测试集)
- [Table 4:ETH3D Leaderboard](#Table 4:ETH3D Leaderboard)
- [5.4 消融研究](#5.4 消融研究)
-
- [Table 5:STA设计选择](#Table 5:STA设计选择)
- [Table 6:AHCF设计选择](#Table 6:AHCF设计选择)
- [**DT部分(Disparity Transformer)------解释与结论**](#DT部分(Disparity Transformer)——解释与结论)
- [**APC部分(Axial-Planar Convolution)------解释与结论**](#APC部分(Axial-Planar Convolution)——解释与结论)
- [Table 7:模块有效性与FSD数据集贡献](#Table 7:模块有效性与FSD数据集贡献)
-
- [**(1) Table 7 Left:Effects of Proposed Modules**](#(1) Table 7 Left:Effects of Proposed Modules)
- [**(2) Table 7 Right:Effects of FoundationStereo Dataset(FSD)**](#(2) Table 7 Right:Effects of FoundationStereo Dataset(FSD))
- [5.3 性能对比(Experiments)](#5.3 性能对比(Experiments))
-
- [5.3.1 零样本泛化:Table 2 + 直观结论](#5.3.1 零样本泛化:Table 2 + 直观结论)
- [5.3.2 In-the-wild 定性对比:Figure 5](#5.3.2 In-the-wild 定性对比:Figure 5)
- [5.3.3 域内对比:Table 3(Scene Flow)与 Table 4(ETH3D)](#5.3.3 域内对比:Table 3(Scene Flow)与 Table 4(ETH3D))
- [**Table 3:Scene Flow(in-domain)EPE**](#Table 3:Scene Flow(in-domain)EPE)
- [**Table 4:ETH3D Leaderboard**](#Table 4:ETH3D Leaderboard)
- [6. 不足之处与未来工作(Limitations & Future Work)](#6. 不足之处与未来工作(Limitations & Future Work))
- [7. 总体评价(Overall Evaluation)](#7. 总体评价(Overall Evaluation))
📝 文章基本信息
- 标题: FoundationStereo: Zero-Shot Stereo Matching
- 作者: Bowen Wen, Matthew Trepte, Joseph Aribido, Jan Kautz, Orazio Gallo, Stan Birchfield (NVIDIA)
- 年份: 2025
- 会议: arXiv:2501.09898v4
- 链接: https://nvlabs.github.io/FoundationStereo/
🎯 一句话总结
FoundationStereo是第一个实现强零样本泛化的立体匹配基础模型,通过大规模合成数据、单目先验适配和混合成本体积过滤,在无需微调的情况下可与目标域微调方法媲美。
0. 论文概述 (Executive Summary)
核心问题
尽管深度学习立体匹配在基准数据集上表现卓越,但都需要对目标域进行微调。这与其他视觉任务的基础模型(如CLIP、SAM)的零样本泛化能力形成鲜明对比。为什么立体匹配难以实现零样本泛化?
关键观察与创新
- 数据瓶颈:现有公开数据集(如SceneFlow仅40K对)规模太小,多样性不足
- 模型架构局限 :
- 成本过滤(cost filtering)被忽视,而它是立体匹配的关键
- 标准3D卷积在大视差范围下内存消耗爆炸性增长
- 缺乏全局上下文推理能力
- Sim-to-Real Gap:合成训练数据与真实场景差异大
论文的三大贡献
-
FoundationStereo Dataset (FSD):100万立体对的大规模、高保真合成数据集 + 自动迭代清洁管道
-
Side-Tuning Adapter (STA):适配DepthAnythingV2的单目先验到立体匹配任务
-
Attentive Hybrid Cost Filtering (AHCF)
:
- Axial-Planar Convolution (APC):高效的维度解耦卷积
- Disparity Transformer (DT):全局视差上下文推理
与相关工作的关系
- vs 传统立体匹配:融合cost volume aggregation与迭代精化
- vs Transformer-based方法:在特征提取阶段引入Transformer(如[35,68])后还要做成本过滤,AHCF填补这一空白
- vs 域泛化方法:不仅关注特征不变性,而是通过基础模型适配和强大的网络设计实现真正的零样本泛化
1. 问题背景与动机
1.1 立体匹配的现状与困境
现有方法的成功条件:
- 需要在目标域微调才能获得竞争力结果
- 不同应用场景(室内/户外、自动驾驶、机器人等)都需要单独适配
零样本泛化的挑战:
| 方面 | 困难 | 原因 |
|---|---|---|
| 数据规模 | SceneFlow仅40K对 | 小数据难以学到泛化特性 |
| 多样性 | 场景类型单一 | 缺乏纹理、反射、透明等挑战 |
| Sim-to-Real | 合成数据与真实差异大 | 传统合成渲染缺乏逼真度 |
| 网络能力 | 局部感受野有限 | 3D卷积难以扩展,无全局上下文 |
1.2 为什么选择立体匹配作为研究对象?
- 在其他视觉任务(深度估计、光流估计)已有基础模型成功案例(CLIP、SAM、DepthAnythingV2)
- 立体匹配是3D感知的基础,应用广泛(机器人、自动驾驶、AR/VR)
- 当前缺少专门的立体匹配基础模型
2. 相关工作与创新关联
2.1 前人工作综述
2.1.1 深度立体匹配方法分类
① Cost Volume Aggregation 方向
- 代表作:PSMNet、GCNet、ACVNet等
- 方法:构造4D成本体积 → 3D CNN过滤 → 初始视差预测
- 优点:精度高,能有效编码对应关系信息
- 缺点:内存消耗大,难以扩展到高分辨率/大视差
② Iterative Refinement 方向
- 代表作:RAFT-Stereo、MoCha-Stereo
- 方法:避免显式构造4D体积,通过递归模块逐步精化视差
- 优点:内存效率高,适应各种视差范围
- 缺点:递归更新耗时,缺乏长程上下文
③ Transformer特征提取
- 代表作:CroCo-Stereo、Context-Enhanced Stereo Transformer
- 方法:用Vision Transformer替代CNN做特征提取
- 优点:特征质量好,泛化能力强
- 缺点:成本过滤阶段仍采用传统3D CNN,未充分利用Transformer优势
2.1.2 域泛化与零样本学习
跨域泛化工作
- DSMNet、HVT-RAFT、GraftNet:学习域不变特征
- 局限:仅在SceneFlow训练,未能达到微调水平
零样本学习在其他任务
- DepthAnythingV2:单目深度估计,互联网规模无标注数据
- DUSt3R、MASt3R:多视图重建零样本泛化
- 启发:利用大规模数据 + 基础模型适配
2.1.3 训练数据
| 数据集 | 规模 | 特点 | 局限 |
|---|---|---|---|
| KITTI | 几百对 | 自驾驾驶 | 稀疏GT,场景单一 |
| Middlebury | 低质 | 室内 | 数据量少 |
| SceneFlow | 40K | 多样 | 仍不足以训练基础模型 |
| FSD (本文) | 1M | 高保真 | 首个百万级立体匹配数据 |
2.2 存在的问题与不足
2.2.1 网络架构层面
问题1:成本过滤被忽视
传统pipeline:
特征提取(CNN) → 成本体积构造 → 【成本过滤】← 关键但常用标准3D CNN
↓
初始视差预测
- 先前Transformer工作专注特征提取,忽视了成本过滤的关键性
- 成本过滤本质:将混乱的匹配信息→清晰的概率分布
- 原始成本体积噪声多、歧义多,需要精心设计的聚合机制
问题2:3D卷积的可扩展性瓶颈
3×3×3卷积 ← 小视差范围适用
5×5×5卷积 ← 80GB GPU内存溢出❌
原因:参数量与计算量关于核大小立方增长
问题3:缺乏全局上下文推理
- 重复纹理、薄结构、透明物体等区域,靠局部对应难以判别
- 需要长程依赖建模:相似区域应有一致视差
2.2.2 Sim-to-Real Gap
- 合成数据渲染逼真度不足
- 缺少单目几何/光照约束(monocular priors)
- 导致在真实图像上泛化差
2.2.3 数据规模
- 40K (SceneFlow) 无法支撑基础模型训练
- 需要至少100K+量级的高质量多样数据
2.3 本论文与前人工作的关系
| 方面 | 前人做法 | 本论文创新 |
|---|---|---|
| 数据 | SceneFlow 40K | FSD 1M + 自动清洁 |
| 特征 | CNN或ViT单一 | STA混合 + 单目先验 |
| 成本过滤 | 标准3D CNN | APC (高效) + DT (全局) |
| 迭代精化 | 基础GRU | 多尺度 + 注意力机制 |
| 零样本 | 对标CroCo/IGEV | 显著超越,媲美微调方法 |
APC阶段对PSM网络(金字塔立体匹配) Hourglass进行了卷积核改进。
3. 贡献与核心创新点
3.1 论文的四大贡献
贡献1:FoundationStereo基础模型
- 首个实现零样本强泛化的立体匹配模型
- 不微调即可在多个真实数据集上媲美或超越微调方法
- 定量:Middlebury BP-2: 1.1% (零样本) vs 1.1% (SOTA微调)
贡献2:FoundationStereo Dataset (FSD)
-
规模:100万立体对(现有最大)
-
质量
:
- NVIDIA Omniverse构建(RTX path-tracing高保真渲染)
- 5000+ 3D资产(家具、容器、车辆、机器人等)
- 150+ 材料 + 400+ 纹理
-
多样性
:
- 场景:12个大型室内/室外场景 + 随机化场景
- 难度:反射、低纹理、严重遮挡、透明物体
- 相机:可变基线和焦距
-
创新
:
自动迭代清洁管道
- 第1轮训练 → 识别BP-2>60%的模糊样本 → 重新生成
- 第2轮迭代:数据+模型双向改进
贡献3:Side-Tuning Adapter (STA)
- 适配DepthAnythingV2的单目先验到立体任务
- 保留丰富的几何/光照信息,减小Sim-to-Real差距
- 简洁设计获得最优效果(对比3种设计选择)
贡献4:Attentive Hybrid Cost Filtering (AHCF)
- APC (Axial-Planar Convolution)
- 解耦3×3×3为空间(Ks×Ks×1)和视差(1×1×Kd)两个卷积
- 内存从 O ( K 3 ) O(K^3) O(K3) 降至 O ( K s 2 + K d ) O(K_s^2 + K_d) O(Ks2+Kd)
- 保留完整表示能力(不分组)
- 使能大视差范围处理 ✓
- DT (Disparity Transformer)
- 沿整个视差维度做自注意力
- 捕捉全局视差一致性约束
- 使用FlashAttention实现高效计算
- 补充APC的局部性限制 ✓
4. 方法与网络设计
4.1 整体网络架构概览
4.1.1 五阶段处理流程
┌──────────────────────────────────────────────────────────────┐
│ FoundationStereo 完整流程 │
└──────────────────────────────────────────────────────────────┘
【输入】左/右立体图像对 (I_l, I_r) ∈ ℝ^(H×W×3)
│
↓
┌──────────────────────────────────────────┐
│ ① 特征提取:Side-Tuning Adapter (STA) │
│ ├─ EdgeNeXt-S (CNN主干) │
│ ├─ DepthAnythingV2 (ViT冻结) │
│ └─ 融合: f^(4)_l, f^(4)_r (1/4分辨率) │
│ + 上下文特征: f_c^(i) (多尺度) │
└──────────────────────────────────────────┘
│
↓
┌──────────────────────────────────────────────────┐
│ ② 成本体积构造:混合相关性+级联 │
│ ├─ 分组相关性: V_gwc (8组) │
│ ├─ 级联特征: V_cat (拼接左右特征) │
│ └─ 输出: V_C ∈ ℝ^(C × D/4 × H/4 × W/4) │
└──────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────┐
│ ③ 成本体积过滤:AHCF (局部+全局) │
│ ├─ APC Hourglass: │
│ │ ├─ 下采样块 × 3 │
│ │ ├─ 中间层用APC (Ks=3, Kd=17) │
│ │ └─ 上采样块 × 3 │
│ │ │
│ ├─ Disparity Transformer (并行): │
│ │ ├─ 下采样 (4×4×4, stride=4) │
│ │ ├─ 位置编码 + 4个编码块 │
│ │ ├─ 4头自注意力 (FlashAttention) │
│ │ └─ 三线性插值上采样 │
│ │ │
│ └─ 融合: V'_C = Hourglass + DT (残差相加) │
└─────────────────────────────────────────────────────┘
│
↓
┌──────────────────────────────────────────┐
│ ④ 初始视差预测 │
│ └─ Softargmax: d_0 = Σ d·Softmax(V'_C) │
│ (1/4分辨率) │
└──────────────────────────────────────────┘
│
↓
┌──────────────────────────────────────────────────┐
│ ⑤ 迭代细化:多尺度GRU │
│ ├─ 循环 k=1...32: │
│ │ ├─ 查询体积特征 (V'_C + V_corr) │
│ │ ├─ GRU更新 (3级,含注意力机制) │
│ │ └─ 视差增量: d_{k+1} = d_k + ΔD │
│ │ │
│ └─ 凸采样上采样到完整分辨率 │
└──────────────────────────────────────────────────┘
│
↓
【输出】最终深度图 (高分辨率)
4.1.2 信息流向与模块交互
Left Image →┐
├→ [STA特征提取] → f^(4)_l, f^(4)_r, f_c
Right Image →┘
│
↓
[成本体积构造]
(混合相关性+级联)
V_C
╱ ╲
/ \
┌──────┘ └──────┐
│ │
↓ ↓
[APC] [DT]
(本地聚合) (全局推理)
│ │
└──────────┬──────────┘
↓
[融合 + 上采样]
V'_C
│
↓
[Softargmax初始预测]
d_0
│
↓
[迭代GRU细化×32]
(查询V'_C + V_corr)
│
↓
[凸采样上采样]
│
↓
[最终深度图]
4.1.3 各模块功能概述
| 模块 | 功能 | 输入 | 输出 | 关键设计 |
|---|---|---|---|---|
| STA | 特征提取+单目先验 | 原始图像 | 1/4分辨率特征 | ViT冻结+CNN适配 |
| 成本体积构造 | 编码对应关系 | 特征 | 4D成本体积 | 分组相关性+级联 |
| APC | 局部空间-视差聚合 | 成本体积 | 多尺度聚合 | 维度解耦 |
| DT | 全局视差依赖 | 降采样体积 | 长程推理 | 自注意力 |
| 初始预测 | 离散化视差 | 过滤体积 | 1/4分辨率视差 | Softargmax |
| GRU迭代 | 逐步精化 | 视差+体积查询 | 精化视差 | 3级+注意力 |
4.2 网络详细分析
4.2.1 Side-Tuning Adapter (STA) 详解
问题与动机
Sim-to-Real Gap的根本原因:
- 合成数据缺少真实图像的语义/几何先验
- 单纯在合成数据上训练难以获得模棱两可区域的正确判断
解决方案:适配预训练的单目深度模型
- DepthAnythingV2在互联网规模真实数据上训练(10K+图像)
- 学到了丰富的monocular priors(深度、边界、表面法线等)
- 将这些先验"传递"到立体匹配任务
设计选择对比
论文探索了三种设计方案(Fig. 3左),选择©获得最优结果:
设计(a): 直接使用DepthAnythingV2的特征金字塔
└─ 优点:简单
└─ 缺点:CNN高频特征缺失,BP-2=6.48% ❌
设计(b): ViT-Adapter风格的CNN-ViT特征交换
└─ 优点:两种特征融合
└─ 缺点:复杂度高,BP-2=2.22
✅ 设计(c): 【采用】在ViT输出前插入CNN
├─ DepthAnythingV2最后一层前降采样
├─ 与同尺度CNN特征拼接
└─ 优点:保留高分辨率+细粒度语义/几何,BP-2=1.97
实现细节
特征提取部分 : 对于图像 I l , I r : f l ( i ) , f r ( i ) ∈ R C i × H i × W i , i ∈ 4 , 8 , 16 , 32 其中第4层(1/4分辨率)融合DepthAnythingV2特征 \begin{aligned} &\text{对于图像 } I_l, I_r:\ &f_l^{(i)}, f_r^{(i)} \in \mathbb{R}^{C_i \times H_i \times W_i}, \quad i \in {4,8,16,32}\ &\text{其中第4层(1/4分辨率)融合DepthAnythingV2特征} \end{aligned} 对于图像 Il,Ir: fl(i),fr(i)∈RCi×Hi×Wi,i∈4,8,16,32 其中第4层(1/4分辨率)融合DepthAnythingV2特征
上下文特征 : f c ( i ) ∈ R C i × H i × W i , i ∈ 4 , 8 , 16 f_c^{(i)} \in \mathbb{R}^{C_i \times H_i \times W_i}, \quad i \in {4,8,16} fc(i)∈RCi×Hi×Wi,i∈4,8,16
- 用于初始化和驱动GRU递归更新
- 编码单目先验约束视差合理范围
DepthAnythingV2冻结:
- 原预训练参数不更新
- 只学习侧面CNN的权重
- 保护学到的monocular priors
效果验证
如Fig. 3右所示:
- W/o STA:仅用CNN提取特征,复杂照明(灯)、低纹理(吉他孔)失败
- W/ STA:利用单目先验成功预测模糊区域的几何信息
4.2.2 混合成本体积构造 详解
成本体积的两个来源
成本体积需要编码两类信息,分别通过不同机制:
V C = [ V g w c , V c a t ] \mathbf{V_C} = [\mathbf{V_{gwc}}, \mathbf{V_{cat}}] VC=[Vgwc,Vcat]
其中两部分沿通道维拼接。
分组相关性 V g w c \mathbf{V_{gwc}} Vgwc(Group-wise Correlation)
目的:传统相关性匹配的优点
V g w c ( g , d , h , w ) = ⟨ f ^ l ( 4 ) ( h , w ) , f ^ r ( 4 ) ( h , w − d ) ⟩ \mathbf{V_{gwc}}(g,d,h,w) = \langle \hat{f}_l^{(4)}(h,w), \hat{f}_r^{(4)}(h,w-d) \rangle Vgwc(g,d,h,w)=⟨f^l(4)(h,w),f^r(4)(h,w−d)⟩
参数含义:
- f ^ \hat{f} f^ :L2归一化特征(保证数值稳定)
- ⟨ ⋅ , ⋅ ⟩ \langle \cdot, \cdot \rangle ⟨⋅,⋅⟩ :点积(Frobenius内积)
- g ∈ 1 , . . . , 8 g \in {1,...,8} g∈1,...,8 :将总特征分成8组,每组计算独立相关性
- d ∈ 0 , . . . , D / 4 − 1 d \in {0,...,D/4-1} d∈0,...,D/4−1 :视差索引
- ( h , w ) (h,w) (h,w) :空间位置
为什么分组?
单个相关性:特征维度太高 C,可能有冗余
分组(G=8):每组C/8维度 → 多个独立相似度度量
好处:多样化视角,容错能力强
输出维度 : G × H 4 × W 4 × D 4 G \times \frac{H}{4} \times \frac{W}{4} \times \frac{D}{4} G×4H×4W×4D (按视差维堆积)
级联特征 V c a t \mathbf{V_{cat}} Vcat(Concatenation)
目的:保留一元特征(单目线索)
V c a t ( d , h , w ) = [ Conv ( f l ( 4 ) ) ( h , w ) , Conv ( f r ( 4 ) ) ( h , w − d ) ] \mathbf{V_{cat}}(d,h,w) = \left[\text{Conv}(f_l^{(4)})(h,w), \text{Conv}(f_r^{(4)})(h,w-d)\right] Vcat(d,h,w)=[Conv(fl(4))(h,w),Conv(fr(4))(h,w−d)]
工作流:
- 对左右特征分别应用卷积处理
- 在视差 d d d 处,将左特征与移位后的右特征拼接
- 保留单目先验:曲率、边界、纹理等局部信息
维度变换:
- 原始特征 C C C 通道
- 内存优化:线性缩小到14通道(共享的1×1卷积)
- 拼接后:28通道
为什么保留单目特征?
相关性V_gwc:捕捉匹配强度(高还是低)
级联V_cat:保留"这个位置长什么样"的信息
两者结合:既有匹配信号,也有几何约束
组合成本体积
V C ( d , h , w ) = [ V g w c ( d , h , w ) , V c a t ( d , h , w ) ] \mathbf{V_C}(d,h,w) = [\mathbf{V_{gwc}}(d,h,w), \mathbf{V_{cat}}(d,h,w)] VC(d,h,w)=[Vgwc(d,h,w),Vcat(d,h,w)]
最终维度 : V C ∈ R ( G + 28 ) × H 4 × W 4 × D 4 = R 36 × H 4 × W 4 × D 4 \mathbf{V_C} \in \mathbb{R}^{(G+28) \times \frac{H}{4} \times \frac{W}{4} \times \frac{D}{4}} = \mathbb{R}^{36 \times \frac{H}{4} \times \frac{W}{4} \times \frac{D}{4}} VC∈R(G+28)×4H×4W×4D=R36×4H×4W×4D
4.2.3 Attentive Hybrid Cost Filtering (AHCF) 详解
这是论文的核心创新,包含两个互补模块。
A. Axial-Planar Convolution (APC) Filtering
问题:3D卷积的可扩展性瓶颈
标准做法的局限:
3×3×3卷积 ← 小视差范围(D/4≈50)OK
问题:当视差大时(D/4≈200+)或高分辨率图像(1280×720)
内存消耗:参数O(K³),梯度O(K³C)
结果:5×5×5已导致80GB GPU内存溢出❌
影响:
- 感受野有限,难以捕捉全局视差一致性
- 制约了模型在大规模数据上的训练
解决方案:维度解耦
核心思想:将3×3×3卷积分解为两个独立卷积
Conv 3 × 3 × 3 ⇒ { 空间卷积: K s × K s × 1 视差卷积: 1 × 1 × K d \text{Conv}_{3 \times 3 \times 3} \Rightarrow \begin{cases} \text{空间卷积:} K_s \times K_s \times 1 \ \text{视差卷积:} 1 \times 1 \times K_d \end{cases} Conv3×3×3⇒{空间卷积:Ks×Ks×1 视差卷积:1×1×Kd
数学表达(以APC在hourglass中的应用):
APC ∗ spatial ( V ) = ReLU ( BN ( Conv ∗ K s × K s × 1 ( V ) ) ) \text{APC}*{\text{spatial}}(V) = \text{ReLU}\left(\text{BN}\left(\text{Conv}*{K_s \times K_s \times 1}(V)\right)\right) APC∗spatial(V)=ReLU(BN(Conv∗Ks×Ks×1(V)))
APC ∗ disparity ( V ′ ) = ReLU ( BN ( Conv ∗ 1 × 1 × K d ( V ′ ) ) ) \text{APC}*{\text{disparity}}(V') = \text{ReLU}\left(\text{BN}\left(\text{Conv}*{1 \times 1 \times K_d}(V')\right)\right) APC∗disparity(V′)=ReLU(BN(Conv∗1×1×Kd(V′)))
APC ( V ) = APC ∗ disparity ( APC ∗ spatial ( V ) ) \text{APC}(V) = \text{APC}*{\text{disparity}}(\text{APC}*{\text{spatial}}(V)) APC(V)=APC∗disparity(APC∗spatial(V))
参数设置(表6的最优选择):
- K s = 3 K_s = 3 Ks=3(空间核大小)
- K d = 17 K_d = 17 Kd=17(视差核大小)
内存对比 : 标准卷积: 3 3 = 27 参数/操作 \text{标准卷积:} 3^3 = 27 \text{ 参数/操作} 标准卷积:33=27 参数/操作 APC分解: 3 2 + 17 = 26 参数/操作 \text{APC分解:} 3^2 + 17 = 26 \text{ 参数/操作} APC分解:32+17=26 参数/操作 5×5×5卷积: 5 3 = 125 (内存爆炸) \text{5×5×5卷积:} 5^3 = 125 \text{ (内存爆炸)} 5×5×5卷积:53=125 (内存爆炸)
✅ 相同表示能力下,内存降低~90%
与可分离卷积的区别
| 特性 | 可分离卷积 | APC |
|---|---|---|
| 分解方式 | 沿空间和通道 | 沿空间和视差 |
| 是否分组 | 是(深度卷积) | 否(保留所有通道) |
| 表示能力 | 降低(分组限制) | 完整保留 ✓ |
Hourglass中的应用
混合成本体积 V_C (H/4 × W/4 × D/4)
│
├─ [下采样块 1]
│ └─ 不用APC(改变分辨率)
│
├─ [中间卷积层]
│ └─ 用APC (K_s=3, K_d=17) ← 局部聚合
│ └─ 用APC (K_s=3, K_d=17)
│
├─ [跳跃连接] ← 残差
│
├─ [上采样块]
│ └─ 不用APC(改变分辨率)
│
└─ 输出特征
为什么视差维度特殊处理?
视差维度与空间维度的物理含义不同:
- 空间维度:图像坐标,相邻像素往往相似(平面约束)
- 视差维度:匹配成本的概率分布,需要在整个范围内进行聚合
- 特点:需要更大的核大小来建模视差的全局分布
B. Disparity Transformer (DT)
背景:为什么需要全局推理?
APC虽然高效,但仍是局部操作:
局部感受野例子:
K_s=3, K_d=17的APC
├─ 空间:3×3邻域(仅∼8个相邻像素)
└─ 视差:17个视差值范围(D/4≈50中的17)
问题:某些匹配歧义需要跨越**整个视差范围**的全局推理
例如:
• 重复纹理区域:需要参考不同尺度的相同模式
• 薄结构:需要从周围相似区域借用信息
• 透明反射物体:需要全局一致性约束
核心设计:令牌化 + 自注意力
① 下采样 : Conv 4 × 4 × 4 ( V C ) , stride = 4 \text{Conv}_{4 \times 4 \times 4}(\mathbf{V_C}), \text{ stride}=4 Conv4×4×4(VC), stride=4 输出: R H 16 × W 16 × D 4 \text{输出:} \mathbb{R}^{\frac{H}{16} \times \frac{W}{16} \times \frac{D}{4}} 输出:R16H×16W×4D
减少Transformer计算复杂度(注意力是二次的)
② 令牌序列构造(reshape操作):
V C ∈ R C × H 16 × W 16 × D 4 \mathbf{V_C} \in \mathbb{R}^{C \times \frac{H}{16} \times \frac{W}{16} \times \frac{D}{4}} VC∈RC×16H×16W×4D ⇓ Reshape ( R ) \Downarrow \text{Reshape}(R) ⇓Reshape(R) Token Sequence ∈ R H 16 × W 16 × D 4 \text{Token Sequence} \in \mathbb{R}^{\frac{H}{16} \times \frac{W}{16} \times \frac{D}{4}} Token Sequence∈R16H×16W×4D
每个令牌序列:
- 数量 : H 16 × W 16 \frac{H}{16} \times \frac{W}{16} 16H×16W 个(每个空间位置一个)
- 长度 : D 4 \frac{D}{4} 4D (视差维度)
- 语义:该空间位置在不同视差值下的成本
③ 位置编码:
Q ∗ 0 = PE ( R ( Conv ∗ 4 × 4 × 4 ( V C ) ) ) \mathbf{Q}*0 = \text{PE}(\mathbf{R}(\text{Conv}*{4 \times 4 \times 4}(\mathbf{V_C}))) Q∗0=PE(R(Conv∗4×4×4(VC)))
为什么需要位置编码?
- 令牌序列的顺序信息 至关重要:第 d d d 个令牌代表视差 d d d
- PE告诉模型每个位置的视差编码,保留序列结构
④ Transformer编码块堆叠(4个块):
Q 1 = Norm ( MultiHead ( Q 0 , Q 0 , Q 0 ) + Q 0 ) \mathbf{Q}_1 = \text{Norm}\left(\text{MultiHead}(\mathbf{Q}_0, \mathbf{Q}_0, \mathbf{Q}_0) + \mathbf{Q}_0\right) Q1=Norm(MultiHead(Q0,Q0,Q0)+Q0) Q 2 = Norm ( FFN ( Q 1 ) + Q 1 ) \mathbf{Q}_2 = \text{Norm}\left(\text{FFN}(\mathbf{Q}_1) + \mathbf{Q}_1\right) Q2=Norm(FFN(Q1)+Q1)
每个块包含:
- 自注意力层 + 残差连接 + LayerNorm
- 前馈网络 + 残差连接 + LayerNorm
参数设置:
- 头数 h = 4 h=4 h=4
- 位置编码:Cosine (vs RoPE)
- 作用范围:仅视差维度(vs全体积)
⑤ 上采样 + 融合:
Output = Upsample trilinear ( Q 2 ) + HourglassOutput \text{Output} = \text{Upsample}_{\text{trilinear}}(\mathbf{Q}_2) + \text{HourglassOutput} Output=Upsampletrilinear(Q2)+HourglassOutput
- 三线性插值 恢复到 V C \mathbf{V_C} VC 的原始大小
- 残差相加融合两个子模块,保留各自优势
Transformer在成本体积中的作用
问题:为什么在成本过滤而不是特征提取阶段用Transformer?
答案:
特征提取 (特征维度C):
• 图像语义丰富,Transformer已有工作验证有效性
• 但立体特有信息还未充分编码
成本体积 (视差维度D/4):
• 已编码了立体匹配信息
• 视差轴有特殊结构:应形成单峰分布
• 需要沿视差进行全局聚合,Transformer自注意力理想
本论文创新:
• 不是用Transformer做特征(已有人做)
• 而是在成本过滤阶段用Transformer进行视差优化
• 新视角,填补空白!
消融验证
表6的关键消融结果:
| 变化 | BP-2 | 说明 |
|---|---|---|
| 仅Disparity维注意力 | 1.97 | ✅ 最优 |
| 全体积注意力 | 2.25 | 过大的搜索空间,效果差 |
| 仅空间维聚合 | 2.06 | 缺乏视差长程依赖 |
| APC单独 | 2.16 | 局部限制 |
| DT单独 | 2.21 | 缺乏空间-视差耦合 |
| APC + DT | 1.97 | ✅ 互补最优 |
4.2.4 初始视差预测
Softargmax操作:
d 0 = ∑ d = 0 D 4 − 1 d ⋅ Softmax ( V C ′ ) ( d ) d_0 = \sum_{d=0}^{\frac{D}{4}-1} d \cdot \text{Softmax}(\mathbf{V'_C})(d) d0=d=0∑4D−1d⋅Softmax(VC′)(d)
其中 d 0 d_0 d0 处于 1 4 \frac{1}{4} 41 原始分辨率。
工作原理:
- 概率化 :将过滤后的成本体积转换为概率分布 p ( d ) = exp ( V ′ ∗ C ( d ) ) ∑ ∗ d ′ exp ( V C ′ ( d ′ ) ) p(d) = \frac{\exp(\mathbf{V'*C}(d))}{\sum*{d'} \exp(\mathbf{V'_C}(d'))} p(d)=∑∗d′exp(VC′(d′))exp(V′∗C(d))
- 期望计算 :加权求和得到期望视差 d 0 = E [ d ] = ∑ d d ⋅ p ( d ) d_0 = \mathbb{E}[d] = \sum_d d \cdot p(d) d0=E[d]=d∑d⋅p(d)
优势:
- ✅ 可微分:支持端到端训练
- ✅ 光滑:相比argmax的离散决策更稳定
- ✅ 不确定性感知:考虑整个分布,不仅是峰值
- ✅ 梯度流通畅:利于反传优化
4.2.5 迭代细化:多尺度GRU
这一阶段将初始视差 d 0 d_0 d0 逐步精化为高精度。
工作流程图
初始视差 d₀ (1/4分辨率)
│
├─→ [第1次迭代 k=0]
│ ├─ 体积查询
│ ├─ GRU更新
│ └─ d₁ = d₀ + Δd₀
│
├─→ [第2次迭代 k=1]
│ └─ ...
│
...
│
└─→ [第32次迭代 k=31]
└─ d₃₂
凸采样上采样到完整分辨率
第k次迭代的详细过程
步骤1:构造特征向量
① 成对相关体积 (已在初始化时计算): V c o r r ( w ′ , h , w ) = ⟨ f l ( 4 ) ( h , w ) , f r ( 4 ) ( h , w ′ ) ⟩ \mathbf{V_{corr}}(w', h, w) = \langle f_l^{(4)}(h, w), f_r^{(4)}(h, w') \rangle Vcorr(w′,h,w)=⟨fl(4)(h,w),fr(4)(h,w′)⟩
输出: R W 4 × H 4 × W 4 \mathbb{R}^{\frac{W}{4} \times \frac{H}{4} \times \frac{W}{4}} R4W×4H×4W(按右图列维度堆积)
② 融合体积特征 (基于当前视差查询): F V ( h , w ) = [ V ′ ∗ C ( d k , h , w ) , V ∗ c o r r ( w − d k , h , w ) ] \mathbf{F_V}(h,w) = [\mathbf{V'*C}(d_k, h, w), \mathbf{V*{corr}}(w - d_k, h, w)] FV(h,w)=[V′∗C(dk,h,w),V∗corr(w−dk,h,w)]
- 第一项:从过滤成本体积查询当前视差值处的特征
- 第二项:从相关体积查询当前视差对应的右图位置的相关性
③ 编码为GRU输入 : x k = [ Conv v ( F V ) , Conv d ( d k ) , c ] \mathbf{x}_k = [\text{Conv}_v(\mathbf{F_V}), \text{Conv}_d(d_k), c] xk=[Convv(FV),Convd(dk),c]
- Conv v ( F V ) \text{Conv}_v(\mathbf{F_V}) Convv(FV):卷积处理融合的体积特征
- Conv d ( d k ) \text{Conv}_d(d_k) Convd(dk):编码当前视差值(位置编码)
- c = ReLU ( f c ) c = \text{ReLU}(f_c) c=ReLU(fc):上下文特征(包含STA的单目先验)
- 三部分级联作为GRU输入
步骤2:GRU门控机制(三个方程)
① 更新门 (Eq. 6): z k = σ ( Conv ∗ z ( [ h ∗ k − 1 , x k ] ) ) z_k = \sigma(\text{Conv}*z([h*{k-1}, \mathbf{x}_k])) zk=σ(Conv∗z([h∗k−1,xk]))
- 决定有多少历史信息要保留
- z k ∈ [ 0 , 1 ] z_k \in [0,1] zk∈[0,1]:接近0表示忽视历史,接近1表示保留历史
② 重置门 (Eq. 7): r k = σ ( Conv ∗ r ( [ h ∗ k − 1 , x k ] ) ) r_k = \sigma(\text{Conv}*r([h*{k-1}, \mathbf{x}_k])) rk=σ(Conv∗r([h∗k−1,xk]))
- 决定前一隐状态中有多少信息参与候选值计算
- 防止灾难性遗忘(catastrophic forgetting)
③ 候选隐状态 (Eq. 8): h ^ k = tanh ( Conv ∗ h ( [ r k ⊙ h ∗ k − 1 , x k ] ) ) \hat{h}_k = \tanh(\text{Conv}*h([r_k \odot h*{k-1}, \mathbf{x}_k])) h^k=tanh(Conv∗h([rk⊙h∗k−1,xk]))
- r k ⊙ h k − 1 r_k \odot h_{k-1} rk⊙hk−1:重置后的前一隐状态
- 与当前输入拼接,经过卷积+tanh生成新的信息
④ 新隐状态 (Eq. 9): h k = ( 1 − z k ) ⊙ h k − 1 + z k ⊙ h ^ k h_k = (1 - z_k) \odot h_{k-1} + z_k \odot \hat{h}_k hk=(1−zk)⊙hk−1+zk⊙h^k
- 加权融合 : ( 1 − z k ) (1-z_k) (1−zk)权重的历史 + z k z_k zk权重的新信息
- 确保梯度流通畅
步骤3:视差更新(Eq. 10):
d k + 1 = d k + Conv Δ ( h k ) d_{k+1} = d_k + \text{Conv}_\Delta(h_k) dk+1=dk+ConvΔ(hk)
- 增量预测:学习相对改进而非绝对值
- Conv Δ \text{Conv}_\Delta ConvΔ:单层卷积预测 Δ d ∈ ( − 1 , 1 ) \Delta d \in (-1, 1) Δd∈(−1,1) 范围
- 优势:增量学习比绝对值更容易收敛
多尺度结构(关键)
论文使用三级GRU块进行从粗到细的更新:
初始隐状态初始化 (三个尺度):
h₀⁽⁴⁾ = tanh(f_c⁽⁴⁾) [粗级别,1/4分辨率]
h₀⁽⁸⁾ = tanh(f_c⁽⁸⁾) [中级别,1/8分辨率]
h₀⁽¹⁶⁾ = tanh(f_c⁽¹⁶⁾) [细级别,1/16分辨率]
每个级别的GRU独立更新,之后用注意力机制融合
为什么多尺度?
- 粗级别 ( 1 / 4 1/4 1/4):捕捉全局大尺度视差变化(平面、阶跃)
- 中级别 ( 1 / 8 1/8 1/8):处理中等尺度结构(物体、边界)
- 细级别 ( 1 / 16 1/16 1/16):捕捉局部细节(纹理、高频)
- 融合:各级别独立学习,注意力机制自适应加权
终端上采样
d k ∈ R H 4 × W 4 → Convex Sampling d final ∈ R H × W d_k \in \mathbb{R}^{\frac{H}{4} \times \frac{W}{4}} \xrightarrow{\text{Convex Sampling}} d_{\text{final}} \in \mathbb{R}^{H \times W} dk∈R4H×4WConvex Sampling dfinal∈RH×W
凸采样(Convex Sampling)的优势:
- 相比简单的双线性/三线性插值更精准
- 学习图像的局部几何结构
- 减少上采样导致的棱角和锯齿
4.2.6 损失函数与训练策略
损失函数定义(Eq. 11)
L = ∣ d 0 − d ‾ ∣ ∗ smooth + ∑ ∗ k = 1 K γ K − k ∣ d k − d ‾ ∣ 1 \mathcal{L} = \left|d_0 - \overline{d}\right|*{\text{smooth}} + \sum*{k=1}^{K} \gamma^{K-k} \left|d_k - \overline{d}\right|_1 L= d0−d ∗smooth+∑∗k=1KγK−k dk−d 1
其中:
- d ‾ \overline{d} d:ground-truth视差
- ∣ ⋅ ∣ smooth |\cdot|_{\text{smooth}} ∣⋅∣smooth:Smooth L1损失(对初始预测)
- ∣ ⋅ ∣ 1 |\cdot|_1 ∣⋅∣1:L1范数(对迭代预测)
- γ = 0.9 \gamma = 0.9 γ=0.9:衰减系数
- K K K:总迭代次数(训练时K=22)
设计特点:
初始预测权重: 1.0
第1次迭代权重: 0.9
第2次迭代权重: 0.9²
...
最后迭代权重: 0.9^(K-1)
效果:
• 初期迭代(小k)权重大 → 快速粗调
• 后期迭代(大k)权重小 → 允许细调可能卡在局部
• 平衡稳定性和精度
训练策略
数据集组合:
FSD (新建):1M对
+
Scene Flow:40K对
+ Sintel:1K对
+ CREStereo:200K对
+ FallingThings:62K对
+ InStereo2K:2K对
+ Virtual KITTI 2:...对
超参数设置:
- 优化器:AdamW
- 学习率:1e-4,在0.8×训练步时衰减×0.1
- 批量大小:128(32 A100 GPUs × 4样本/GPU)
- 训练步数:200K
- 图像输入大小:320×736(随机裁剪)
- 最大视差:416像素
- 训练迭代:K=22次
- 推理迭代:K=32次(更多迭代提高精度)
数据增强:
- 随机翻转、旋转
- 颜色抖动
- 高斯模糊
- 遮挡模拟
- 类似[36]的标准增强
4.3 FoundationStereo Dataset (FSD) 详解
数据集规模与特点
规模对比(Table 1):
| 数据集 | 立体对数 | 分辨率 | 场景数 | 质量特性 |
|---|---|---|---|---|
| Scene Flow | 40K | 960×540 | 9 | 低 |
| CREStereo | 200K | 1920×1080 | 0 | 高 |
| FSD | 1M | 1280×720 | 12 | 高 ✓ |
关键特性:
- ✓ 最大规模的合成立体匹配数据集
- ✓ 高保真渲染:NVIDIA Omniverse RTX path-tracing(32-128 spp)
- ✓ 丰富资产:5000+ 3D对象,包含高频几何细节
- ✓ 多样化难度:反射、低纹理、遮挡、透明等
生成过程
工具与资源:
- 渲染引擎:NVIDIA Omniverse
- GPU集群:48× A40,连续10天
- 资产来源:艺术设计 + 3D扫描
- 材料库:150+ 材质,400+ 纹理
场景类型(图4展示):
- 结构化场景 (12个预设):
- 室内:家庭、办公室、走廊、厨房等
- 户外:仓库、工厂、停车场等
- 特点:布局合理,物体放置逼真
- 随机化场景 (更多样):
- 大量飞行物体(干扰项、目标物)
- 各种形状和纹理的几何体
- 高度随机的配置
领域随机化策略
相机配置(关键):
视差范围多样化:
• 可变基线 (baseline):改变左右相机距离
• 可变焦距 (focal length):从广角到长焦
效果:生成不同视差分布,覆盖[0, 250]像素范围(见Fig.9)
场景配置:
布局方式 (2种):
1. Chaotic (混乱):大量飞行体,简单背景
2. Realistic (写实):预设场景,物理约束
场景子类型 (3类):
• Navigation:相机平行于地面,对象远
• Driving:相机沿地面,对象沿路径
• Manipulation:相机向下,对象近(机器人交互)
光照随机化:
- 全局光照、天空光、点光源
- 亮度、颜色、方向随机
- 光照时间:白天、黄昏、夜晚
- 效果:模拟各种真实光线条件
材料与纹理多样化:
- 150+ 预设材料(金属、木质、布料等)
- 400+ 纹理用于瓷砖包裹
- 程序化生成的随机纹理
- 提高渲染逼真度
自动迭代清洁管道(Iterative Self-Curation)
问题:域随机化难以避免产生模糊样本
问题类型:
• 严重纹理重复:无法区分视差
• 全反射或有限背景:对应关系不清
• 单色不当光照:无法估计深度
解决方案(图4右):
第1轮:
训练初版FoundationStereo在FSD上
↓
评估FSD:标记BP-2 > 60%的样本为"模糊"
↓
重新生成这些模糊样本(新的随机配置)
↓
第2轮:
用改进后的FSD重新训练模型
↓
性能提升 (消融表8验证)
结果:迭代过程既改进数据集,也改进模型!
效果量化(表8):
| 设置 | Middlebury BP-2 |
|---|---|
| 未清洁 | 1.27 |
| 已清洁(×2轮) | 1.15 ✓ |
5. 实验结果
5.1 数据集与评估指标
基准数据集
四个公共真实数据集:
- Middlebury [51]
- 类型:室内高精度数据
- 特点:地结光采集,高质量GT(结构光)
- 评估:通常用半分辨率,非遮挡区域
- 分辨率:约600×500
- ETH3D [52]
- 类型:室内+户外场景
- 特点:高分辨率灰度立体对
- 范围:建筑物、街道、自然场景
- 分辨率:约1600×1200
- KITTI 2012 & 2015 [20, 45]
- 类型:真实自驾场景
- 特点:LiDAR稀疏GT
- 评估:Monkaa (合成)、Driving、FlyingThings
- 分辨率:375×1242
评估指标
| 指标 | 含义 | 优点 |
|---|---|---|
| EPE | 平均每像素视差误差 | 连续误差度量 |
| BP-X | 误差>X像素的像素比例(%) | 关注严重错误 |
| D1 | D1范数:误差>3px且>5% GT的比例 | KITTI标准 |
5.2 零样本泛化对比
场景1:仅在SceneFlow上训练
Table 2上半部:所有对比方法仅用SceneFlow训练
结果:FoundationStereo(仅SceneFlow)
vs 其他方法(仅SceneFlow)
Middlebury BP-2:
CREStereo++: 14.8%
NMRF: 7.5%
Ours: 5.5% ← 显著优
优势源于:
• STA + 单目先验
• 虽然仍用SceneFlow(40K),但架构强
场景2:允许混合数据集训练(关键)
Table 2下半部:允许用FSD+其他所有数据集,但不微调目标域
完全零样本设置(Fair Comparison):
Middlebury BP-2:
Selective-IGEV*: 7.5% (训练了Middlebury)
Ours: 1.1% ← 不用Middlebury仍更优!
KITTI-15 D1:
IGEV++: 5.9% (微调KITTI)
Ours: 2.8% ← 无微调但更好
结论:FoundationStereo的零样本泛化力超过多数微调方法
场景3:野生图像泛化(Figure 5)
定性对比:难挑战图像
测试图像特征:
• DROID数据集(机器人场景)
• 自定义真实拍摄
• 高度挑战的场景
难度特征:
✓ 强反射(镜子、金属)
✓ 透明物体(玻璃、水)
✓ 重复纹理(地毯、墙壁)
✓ 复杂光照(阴影、强曝光)
✓ 细结构(电线、头发)
对比方法:
- CroCo v2 [68]
- CREStereo [34]
- IGEV [71]
- Selective-IGEV [67]
结果:FoundationStereo定性上显著更好✓
5.3 域内对标
Table 3:Scene Flow 测试集
所有方法都在Scene Flow train/test标准分割上评估
方法 EPE
MoCha-Stereo: 0.41
Selective-IGEV: 0.44
Ours: 0.33 ← 显著领先(19.5%改进)
说明:虽然不是论文重点,但模型设计本身就很强
Table 4:ETH3D Leaderboard
两个设置:
①微调版本:
Training: FSD + 其他 + ETH3D (再训50K步)
排名:1st on leaderboard (提交时)
BP-0.5: 1.26
BP-1.0: 0.26
与最强前作对比:
之前最优 Selective-IGEV: BP-0.5=3.06
本文微调: BP-0.5=1.26 ← 超60%改进!
②零样本版本:
Training: FSD + 其他 (不用ETH3D)
Zero-shot EPE: 0.13
vs 微调版本: 0.09
结论:
零样本已接近微调水平(1.5倍误差)
而微调的SOTA其他方法有2-3倍误差
5.4 消融研究
Table 5:STA设计选择
不同vision foundation model:
DINOv2-L: BP-2 = 2.46
DepthAnythingV2-S: BP-2 = 2.22
DepthAnythingV2-B: BP-2 = 2.11
DepthAnythingV2-L: BP-2 = 1.97 ✓ 最优
为什么DAV2优于DINOv2?
• DAV2在单目深度估计上训练(任务相关性)
• DINOv2偏向对应匹配(分辨率不足)
三种设计方案:
(a) 仅用DepthAnythingV2特征金字塔:
BP-2 = 6.48 ❌ (差)
(b) ViT-Adapter式特征交换:
BP-2 = 2.22
(c) 【采用】CNN在ViT之前插入:
BP-2 = 1.97 ✅ (最优)
关键:(c)保留高分辨率细粒度特征
ViT冻结vs解冻:
冻结 ViT 参数: BP-2 = 1.97 ✓
解冻 ViT: BP-2 = 3.94 ❌
原因:ViT参数更新破坏预训练单目先验
Table 6:AHCF设计选择
DT部分(左侧行):
DT部分(Disparity Transformer)------解释与结论
上表中(左侧)主要比较了 DT 的位置编码、特征尺度、注意力范围以及 DT 放置位置等:
-
位置编码(Position Embedding)
- RoPE:BP-2 = 2.19
- Cosine :BP-2 = 1.97(最优)
- 论文解释:RoPE 主要编码相对距离 ,但由于该任务里 4D 成本体积的视差序列长度是固定的,RoPE 并没有带来优势,反而不如 Cosine。
-
Transformer输入特征尺度(Feature scale)
- 1/32:BP-2 = 2.06
- 1/16 :BP-2 = 1.97(最优)
- 论文结论:1/16 在效果与信息量之间更合适。
-
注意力范围(Attention scope)
-
全体积注意力(Full):BP-2 = 2.25
-
仅沿视差维注意力(Disparity) :BP-2 = 1.97
-
论文解释:理论上全体积注意力感受野更大,但代价是 4D 成本体积空间维度巨大,
注意力可用性/可优化性较差
;而沿视差维度注意力提供了足够长程信息,能更好服务
- 初始视差初始化
- 以及 GRU细化阶段的体积特征查询(volume lookup)
-
-
DT 与 hourglass 的相对位置(Placement)
- Pre-hourglass:BP-2 = 2.06
- Post-hourglass:BP-2 = 2.20
- Parallel(并行) :BP-2 = 1.97(最优)
- 结论:DT 与 APC hourglass 以并行方式融合更优。
APC部分(Axial-Planar Convolution)------解释与结论
(右侧表)比较的是 APC 中核大小 ( K s , K d ) (K_s, K_d) (Ks,Kd),其中括号最后一维对应视差维核大小 K d K_d Kd:
- ( 3 , 3 , 1 ) , ( 1 , 1 , 5 ) (3,3,1),(1,1,5) (3,3,1),(1,1,5):BP-2 = 2.10
- ( 3 , 3 , 1 ) , ( 1 , 1 , 9 ) (3,3,1),(1,1,9) (3,3,1),(1,1,9):BP-2 = 2.06
- ( 3 , 3 , 1 ) , ( 1 , 1 , 13 ) (3,3,1),(1,1,13) (3,3,1),(1,1,13):BP-2 = 2.01
- ( 3 , 3 , 1 ) , ( 1 , 1 , 17 ) (3,3,1),(1,1,17) (3,3,1),(1,1,17):BP-2 = 1.97(达到饱和最优)
- ( 3 , 3 , 1 ) , ( 1 , 1 , 21 ) (3,3,1),(1,1,21) (3,3,1),(1,1,21):BP-2 = 1.98(略有回升/饱和)
**总体规律(论文原意):**随着 K d K_d Kd 增大,收益逐步提升,大约在 17 处饱和。
Table 7:模块有效性与FSD数据集贡献
Table 7 在两部分展示消融:
- Left:网络模块有效性(STA / APC / DT)
- Right:训练时是否加入 FSD 数据集(以及与 AHCF 组件的组合效果)
(1) Table 7 Left:Effects of Proposed Modules
(以 BP-2 为指标,Middlebury训练子集评估,论文设置下通常用于"零样本泛化"检验)
-
不使用 STA / APC / DT:BP-2 = 2.34
-
只用 STA
:
BP-2 = 1.15
- 说明:单目先验适配(STA)对提升真实场景泛化帮助最大。
-
STA + APC(无 DT):BP-2 = 2.16
-
STA + DT(无 APC):BP-2 = 2.05
-
STA + APC + DT :BP-2 = 1.97(完整模型最优)
解读:
- STA 提供关键的 monocular prior(单目几何/语义先验),显著降低歧义;
- APC 与 DT 分别在不同维度聚合成本信息:空间聚合 vs 视差长程上下文;
- 三者协同后整体效果最好。
(2) Table 7 Right:Effects of FoundationStereo Dataset(FSD)
该表研究:训练基础模型时,是否将 FSD加入到已有公开数据集训练中。
关键结论(按 BP-2 变化趋势):
- 不用 FSD:BP-2 = 2.48
- 加入 FSD(在相应组合下):BP-2 降到 2.21
- 当进一步加入 APC / DT 并结合 FSD,最终达到 1.97(完整配置)
同时论文在后文表 7 的解读中指出:FSD 单独带来的提升是可观的,并且与模型结构(APC/DT)存在互补效应。
5.3 性能对比(Experiments)
5.3.1 零样本泛化:Table 2 + 直观结论
论文在四个真实数据集上进行零样本泛化对比(训练/推理使用固定 foundation 模型参数,不对目标域微调)。
- 第一组设置:仅 Scene Flow 训练
- 结果总体:Ours(FoundationStereo)在 Middlebury、ETH3D、KITTI-12、KITTI-15 上均优于对比方法,尤其 Middlebury 的 BP-2 有明显优势。
- 第二组设置:允许训练集包含任意公开数据,但排除目标域(更接近实际"可用数据但不微调目标域")
- 结论非常强:即便对比方法可能包含目标域相近数据的训练优势,FoundationStereo 仍能取得更低的 BP-2 / D1 / EPE。
(具体数值你前文已经在 summary 中给到过:如 Middlebury BP-2 从 7.5%(Selective-IGEV*)降到 1.1%(Ours),KITTI-15 D1 从 5.9% 降到 2.8% 等。)
5.3.2 In-the-wild 定性对比:Figure 5
Figure 5 展示在野生场景中的零样本推理可视化对比,挑战包括:
- 反射(reflective)
- 半透明/透明(translucent)
- 重复纹理(repetitive textures)
- 复杂光照(shadow / strong exposure)
- 薄结构(thin-structures,如电线、薄杆)
论文强调这些场景正体现了其 cost filtering(AHCF)+ 迭代细化(GRU refinement)的价值。
5.3.3 域内对比:Table 3(Scene Flow)与 Table 4(ETH3D)
Table 3:Scene Flow(in-domain)EPE
在 Scene Flow 官方划分下,所有方法训练/测试一致。论文给出的关键结果是:
- Ours:EPE = 0.34
显著优于同类对比方法(例如 Selective-IGEV = 0.44,MoCha-Stereo = 0.41 等)。
Table 4:ETH3D Leaderboard
论文给出两种设置:
- Fine-tuned(微调版本)
- BP-0.5 = 1.26
- BP-1.0 = 0.26
- EPE = 0.09
- 并且论文说明:提交时排名 1st。
- Zero-shot(不使用 ETH3D 训练)
- BP-0.5 = 2.31
- BP-1.0 = 1.52
- EPE = 0.13
- 并说明:这一零样本效果仍接近甚至优于许多需要 in-domain 训练的方法。
6. 不足之处与未来工作(Limitations & Future Work)
论文在结论中明确指出至少两点局限:
- 效率尚未优化(Efficiency)
- 在 NVIDIA A100 上、分辨率 375×1242 时耗时约 0.7s。
- 未来方向:借鉴其他视觉基础模型的 **蒸馏(distillation)**与 剪枝(pruning) 技术以提升速度与显存效率。
- FSD 数据集中透明物体多样性有限
- FSD 虽然包含反射等关键难例,但论文指出其中全透明对象数量/多样性仍有限。
- 未来方向:在训练中进一步加入更大规模、更多种类的全透明物体以增强鲁棒性。
7. 总体评价(Overall Evaluation)
综合来看,FoundationStereo 的路线是:
- 数据端:FSD(1M合成、高保真 + 自动自清洁)解决训练规模与歧义样本问题;
- 先验端:STA 将 DepthAnythingV2 这种"视觉基础知识"迁移到立体成本体积中;
- 成本过滤端:AHCF = APC(空间/局部视差聚合,效率与表示平衡)+ DT(沿视差长程注意力,解决全局上下文不足);
- 细化端:迭代 GRU(多尺度注意力 + 基于最新视差的体积 lookup)提升精度与收敛性。
因此它不仅在零样本任务上表现出色,而且通过消融(Table 5/6/7)也能看到每个组件的可解释贡献。