PAPER DEEP DIVE
Fast-FoundationStereo:实时零样本立体匹配
NVIDIA 用分而治之的加速策略把 FoundationStereo 拆成特征提取、代价滤波、视差精化三段各自提速:知识蒸馏压缩混合骨干、块级神经架构搜索在延迟预算内自动配出代价滤波网络、结构化剪枝精简迭代精化模块,再用 140 万对自动伪标注的真实立体图像补训。模型比 FoundationStereo 快 10 倍以上,零样本精度几乎追平,在 Middlebury/ETH3D/KITTI 上是实时立体匹配的新 SOTA。
论文信息
标题:Fast-FoundationStereo: Real-Time Zero-Shot Stereo Matching
作者:Bowen Wen、Shaurya Dewan、Stan Birchfield(NVIDIA)
发表:arXiv:2512.11130v1(2025 年 12 月 11 日,cs.CV),CVPR 2026
论文:https://arxiv.org/abs/2512.11130
项目主页:https://nvlabs.github.io/Fast-FoundationStereo/
代码状态:已开源(NVlabs/Fast-FoundationStereo,含 PyTorch 与 TensorRT 权重)
一句话总结
NVIDIA 把慢但强的 FoundationStereo 拆成特征提取、代价滤波、视差细化三段,分别用知识蒸馏、分块神经架构搜索和结构化剪枝各打一拳,在 NVIDIA 3090 上把单帧耗时从 496 毫秒压到 49 毫秒(TensorRT 下 21 毫秒),零样本精度只退让一点点,成为实时立体匹配的新标杆。
一、研究背景与动机
立体匹配从 1975 年 Marr 与 Poggio 提出计算理论算起,到这篇论文发表时正好走过 50 年。今天的主流算法在 Middlebury、ETH3D、KITTI 这些公开基准上已经逼近饱和,误差常常只有百分之几。这种精度对机器人抓取、增强现实的三维注册、自动驾驶的障碍物测距都是刚需——差之毫厘,机械臂就会撞上去。
但过去几年这个领域实际上分裂成了两条互不往来的路线。第一条是基础模型路线:FoundationStereo 用 DepthAnythingV2 做单目先验、再 side-tuning 一个 CNN 适配双目;MonSter 把单目深度和立体匹配联姻;StereoAnywhere 追求"单目或立体任一失效时仍然稳";ZeroStereo 干脆用扩散模型合成训练数据。这些方法的零样本泛化能力确实强,代价是计算量惊人——它们依赖 ViT 级别的骨干和 Disparity Transformer 这种在 4D 代价体上做多头自注意力的重型结构,作者实测 FoundationStereo 在 3090 上单帧要 496 毫秒,根本进不了任何有延迟约束的系统。
第二条是实时路线:IINet、LightStereo、RT-IGEV、BANet 这些方法靠轻量骨干、2D 卷积和局部迭代细化把帧率做到 30 毫秒一帧。问题是它们的泛化能力几乎完全依赖逐域微调——换个场景就要重新采数据、重新标注、重新训练。而真实世界稠密高质量的深度真值本来就极难大规模获取,这条路线因此始终无法作为具身智能体在野外环境里的开箱即用方案。
作者认为这个鸿沟不该用"再设计一个从零训练的轻量网络"来填。从零训练意味着抛弃基础模型里那些在互联网级图像上学到的先验,而这些先验恰恰是零样本泛化的来源。他们的选择是反过来做:把强大的 FoundationStereo 当作教师,系统性地把它身上每一个计算瓶颈拆掉,同时尽量保住它继承来的能力。
这个思路的关键洞察是,FoundationStereo 的三个组成部分瓶颈性质完全不同——特征提取贵在那个双模块混合骨干,代价滤波贵在 4D 注意力,视差细化贵在迭代次数与通道冗余。用同一种压缩手段对付三者并不划算,所以作者提出了"分而治之"的加速策略:三段各配一种最合适的技术。图 1 直接给出了结果的说服力——他们的方法与 MonSter、FoundationStereo 的视差图几乎看不出差别,但快了将近 10 倍;在某些区域(比如上排那扇反光的门、下排的纸巾盒)甚至反超了 MonSter。
图 1:论文首图。同一组野外图像上的零样本视差图对比,本文方法与 MonSter、FoundationStereo 结果相当,但速度快近 10 倍。
二、方法详解
2.1 整体框架:分而治之的三段加速
FoundationStereo 这类基础立体模型的工作流可以拆成三段:特征提取(feature extraction)、代价滤波(cost filtering)、视差细化(disparity refinement)。作者的整个方法(论文图 3)就是围绕这三段展开的,每一段配一种最对症的压缩技术,彼此正交、可以分别替换。这种"分而治之"的设计还带来一个工程上的好处:三段各自产出一族不同速度-精度权衡的候选模块,部署时可以自由拼装(论文图 2 里的每一颗星就是一个拼装结果),最后再做一次端到端联合训练。
图 3:框架总览。上:基础立体网络的三个关键步骤;中左:混合单目与立体先验蒸馏进单一骨干;中右:细化网络先建递归依赖图再做结构化剪枝与重训练;下:代价滤波网络切分为局部块,块级蒸馏后用组合搜索在运行时约束下挑最优组合。
整个流程的逻辑可以用一张图串起来:
flowchart TB
T["Teacher: FoundationStereo
DepthAnythingV2 + side-tuning CNN
3D hourglass APC + Disparity Transformer
ConvGRU refinement"]
T --> S1
T --> S2
T --> S3
subgraph S1["Stage 1: Feature Extraction -> Knowledge Distillation"]
A1["Freeze teacher dual-module backbone"]
A2["Student: EdgeNeXt ImageNet-pretrained CNN"]
A3["MSE on multi-level pyramid features
linear projection if channel mismatch"]
A1 --> A3
A2 --> A3
end
subgraph S2["Stage 2: Cost Filtering -> Blockwise NAS"]
B1["Split into N=8 blocks at channel transitions"]
B2["5 layer types: 3D conv / 3D deconv /
APC / residual 3D conv / volume excitation"]
B3["Distill each block independently
200 candidates per block"]
B4["ILP combinatorial search
min error s.t. runtime budget"]
B1 --> B2 --> B3 --> B4
end
subgraph S3["Stage 3: Refinement -> Structured Pruning"]
C1["Build recurrent dependency graph
3 stereo-specific constraints"]
C2["First-order Taylor importance ranking"]
C3["Prune ratio alpha then retrain
gamma=0.9 decayed L1 + lambda=0.1 feature MSE"]
C1 --> C2 --> C3
end
S1 --> ASM["Assemble candidates + end-to-end training"]
S2 --> ASM
S3 --> ASM
D["Pseudo-labeling pipeline
Stereo4D + normal consistency + sky exclusion
1.4M in-the-wild pairs"] --> ASM
ASM --> OUT["Fast-FoundationStereo
49 ms on RTX 3090, 21 ms with TensorRT"]
2.2 第一段:蒸馏混合单目与立体先验
给定一对左右图像 $I_{l}, I_{r} \in \mathbb{R}^{H\times W\times 3}$,特征骨干要输出多层级金字塔特征,供后续代价体构建与聚合使用:
$$f_{l}^{(i)}, f_{r}^{(i)} \in \mathbb{R}^{C_{i}\times\frac{H}{i}\times\frac{W}{i}}, \quad i \in \{4, 8, 16, 32\}$$
FoundationStereo 算这组特征用的是一个双模块结构:DepthAnythingV2 提供从互联网级数据里学到的丰富单目先验,再加一个 side-tuning CNN 把单目特征适配到双目立体设置。这个混合结构很强,但也是显著的计算瓶颈——ViT 的自注意力代价摆在那里。
作者选择用知识蒸馏把这个双模块换成单个学生模块。这个选择背后有两条明确的理由。第一,蒸馏对架构不敏感,因此可以直接站在 ImageNet 上研究得非常成熟的那批轻量骨干(本文用 EdgeNeXt)肩膀上;第二,剪枝这条路有两个硬伤:一是剪枝必须保留双模块结构,而它受限于底层 ViT 的计算瓶颈,剪不干净;二是一旦精度掉了,没有互联网级图像重训就很难恢复——那是基础模型的能力来源,不是靠立体数据集能补回来的。
蒸馏的具体做法很直接:冻结教师的 DepthAnythingV2 与 side-tuning CNN,让它们预测多层级特征金字塔 $\bar{f}^{(i)}$,学生用 MSE 损失去拟合。当通道维度对不上时,加一层线性投影层做对齐。有一个容易被忽略但很重要的细节:特征提取器的输入其实只有单张图像,但作者在每个训练 batch 里同时放入左右两张立体图像,目的是保持统计分布的相似性——训练时看到的特征统计要跟推理时一致。
为了提供一族不同速度-精度权衡的模型,作者训练了多个特征提取器变体(基于 MobileNet、EdgeNeXt 等 ImageNet 预训练骨干)。论文图 4 的可视化说明了蒸馏学到了什么:学生特征抓住了与教师相似的高频边缘和相对深度。更有意思的是下半部分——蒸馏还增强了对半透明物体的鲁棒性,而那扇半透明玻璃门恰恰是传统立体匹配的老大难。
图 4:上排——把混合单目与立体先验蒸馏进单一骨干后,学生捕获了相似的高频边缘与相对深度,计算量却大幅下降;下排——蒸馏增强了对半透明表面的鲁棒性,这是传统立体匹配的难点。
2.3 第二段:代价滤波的分块神经架构搜索
拿到单目特征后,通过组合 group-wise correlation 体与 concatenation 体构建代价体:
$$\mathbf{V_{C}} \in \mathbb{R}^{C\times\frac{D}{4}\times\frac{H}{4}\times\frac{W}{4}}$$
其中 $D$ 是最大视差(本文默认 192)。FoundationStereo 用双分支结构做代价滤波:一支是 3D hourglass,由 Axial-Planar Convolution(APC)层构成,它能在不明显增加显存的前提下沿视差维度扩大卷积核;另一支是 Disparity Transformer,把 $\mathbf{V_{C}}$ 切成 token 做多尺度多头自注意力,增强 4D 代价体内的长程上下文推理。这两支都很贵,尤其是注意力那支。
为什么这一段既不用剪枝也不用直接蒸馏?作者给了两条否定理由,都很实在。直接剪枝只能换来很小的加速但精度掉得很惨——因为 $\mathbf{V_{C}}$ 的通道维本来就小(大多不到 100),没什么可剪的。直接蒸馏则需要人工设计代价滤波模块的替代方案,而这类结构远不如特征骨干那样被研究透彻,人设计不出好答案。所以他们转向神经架构搜索(NAS),让搜索去发现人类想不到的设计。
分块候选构造。 代价滤波模块被切成一串操作块:$\Phi_{t}(\mathbf{V_{C}}) = B_{N}\circ\cdots\circ B_{2}\circ B_{1}(\mathbf{V_{C}})$,$N$ 是块总数。在 3D hourglass 内部,切块的位置选在通道维发生跃变处,这通常对应特征体空间尺寸的变化点。作者定义了五种层类型:(1)通道维可变的 3D 卷积层;(2)把代价体空间尺寸翻倍的 3D 反卷积层;(3)APC 层,沿空间与视差维度用不同核大小分别卷积;(4)残差连接的 3D 卷积层,类似 ResNet;(5)特征引导的体激发(volume excitation)。而整个 Disparity Transformer 被当作单个块处理,内部是若干重复的多头自注意力层——沿用教师的 disparity attention 层,但让 feed-forward 层维度、头数、层数都可变。
两种情况下,块内层数与中间通道维都可以变,只要满足两条约束:(1)整块的运行时间 $t_{B}^{s}$ 必须快于教师对应块 $t_{B}^{t}$;(2)块的输入输出通道维必须与原块一致。第二条是让块可以即插即换的关键——接口不变,才能独立评估、独立替换。
分块蒸馏与评估。 切完块之后,候选总数是 $C = C_{1}\cdot C_{2}\cdots C_{N}$。实际配置下 $N=8$、$C_{i}=200$,于是 $C = 200^{8} \approx 10^{18}$。这个量级下,标准的进化搜索类 NAS 完全不可行;而在整个搜索空间里从头训练又浪费了教师模型的能力。作者的解法是把每个块 $B_{i}$ 当成独立网络单独训练,让它去模仿教师对应块的输出:
$$\left\| B_{i}(f_{i-1}) - \bar{B}_{i}(f_{i-1}) \right\|^{2}_{2}$$
其中 $f_{i-1}$ 是上一个教师块输出的特征。对于最后那个预测初始视差的块,则改用 smooth $L_1$ 损失对齐真值。整个蒸馏过程教师冻结。相比标准 NAS,这种分块蒸馏把训练复杂度从 $O(n^{N})$ 降到 $O(n)$($n$ 是每层候选数)——指数变线性,这是本文最漂亮的一处工程简化。而且因为单个块很小,蒸馏在速度和显存上都很轻,天然容易并行。
蒸馏完之后,一个候选块 $B_{i}^{c}$ 的评估方式是:把它替换进教师模型第 $i$ 块的位置,然后在独立验证集上端到端推理完整模型,测量引入它带来的相对误差变化 $\Delta m_{i}^{c}$ 与运行时间变化 $\Delta t_{i}^{c}$。
组合搜索。 最终的学生代价滤波模块通过求解候选块的最优组合得到,形式化为一个带约束的优化问题:
$$\min_{\mathcal{E}} \sum_{i=1}^{N}(\Delta\mathbf{m}_{i})^{\top}\mathbf{e}_{i}, \quad \text{s.t.} \quad \sum_{i=1}^{N}(\Delta\mathbf{t}_{i})^{\top}\mathbf{e}_{i} \leq \Delta\tau \qquad (1)$$
其中 $\Delta\mathbf{m}_{i}$ 与 $\Delta\mathbf{t}_{i}$ 分别是块 $B_{i}$ 所有候选的误差变化向量与时间变化向量,$\mathbf{e}_{i}\in\mathcal{E}$ 是表示选中某个候选块的 one-hot 向量,$\Delta\tau$ 是整个代价滤波模块相对教师的运行时预算。求解用整数线性规划(ILP),通过取不同的 $\tau$ 值就能一次得到一族速度-精度权衡不同的代价滤波学生模型——这正是论文图 2 上那一串星的来源。
2.4 第三段:细化模块的结构化剪枝
给定滤波后代价体预测出的初始视差 $d_{0}$,以及由 context network 初始化的隐藏特征,ConvGRU 模块逐步细化视差图。论文图 5 画出了它的依赖图与数据流:每次迭代,ConvGRU 消费 $d_{k-1}$、$h_{k-1}$,预测更新后的 $d_{k}$、$h_{k}$,形成递归依赖。作者在 4.4 节的消融里量化了这个模块的冗余度——激进剪枝后精度会大幅退化,但用重训练能有效恢复,说明原细化模块里确实塞了大量冗余参数。这也正是选择结构化剪枝的动机:它简单有效,而且能吃到 TensorRT 这类 GPU 硬件加速的红利。
图 5:细化模块的递归依赖图。图中分别标出了执行剪枝的位置与剪枝过程中通道维必须保持不变的位置。
构建递归依赖图。 结构化剪枝的第一步是识别层间依赖,因为在某一层做深度或通道剪枝会改变喂给相邻层的中间特征维度。除了可以通过追踪计算流自动构造的常规相邻层依赖之外,作者针对立体匹配细化模块的特殊性额外引入三条剪枝约束:(1)ConvGRU 内部预测视差图与凸组合上采样掩码的最后几层,输出通道维保持固定——它们的输出直接对应物理量,不能动;(2)ConvGRU 内部消费 $h_{k-1}$ 的那一层输入通道,与输出 $h_{k}$ 的那一层输出通道互相依赖,必须联合剪枝——这是递归结构特有的约束,$h$ 在迭代间传递,维度必须自洽;(3)消费 indexed volume feature 的 motion encoder 输入通道维固定。
剪枝与重训练。 判断哪些层或通道该删,用的是一阶泰勒展开的重要性评估。具体做法是把输入端到端前馈进完整教师模型、跑多次细化迭代,为细化模块累积梯度,然后对细化模块里每个参数的重要性做全局排序,剪掉最不重要的 $\alpha$ 比例参数($\alpha\in(0,1)$ 是剪枝率)。作者也试过同构剪枝策略,但观察到精度略有退化,因此没用。
剪枝之后需要重训练来恢复精度。重训练只更新细化模块,教师模型其余部分全部冻结,损失函数为:
$$\mathcal{L} = \sum_{k=1}^{K}\gamma^{K-k}\left\|d_{k}-\overline{d}\right\|_{1} + \lambda\sum_{i=1}^{L}\left\|x_{i}-\overline{x}_{i}\right\|_{2}^{2} \qquad (2)$$
其中 $x_{i}$ 与 $\overline{x}_{i}$ 是学生与教师在 $L$ 层中每一层的隐层特征,$\overline{d}$ 是真值视差,$k$ 是迭代序号。$\gamma=0.9$ 以指数方式给后面的迭代更大的监督权重——越接近最终输出的迭代越重要,前面的迭代允许粗一点。$\lambda=0.1$ 是蒸馏项的权重。有一处刻意的省略值得注意:初始视差的监督被排除在外,因为它不受细化模块影响,把它放进损失只会引入无关梯度。
2.5 第四条腿:野外数据的伪标注
真实世界数据的多样性与真实感都远超合成数据,但获取带真值度量深度标注的真实立体图像极其困难。为此作者设计了一条自动数据策展流水线,在互联网规模的立体图像上生成伪标签(论文图 6)。流程是这样的:给定来自 Stereo4D 的一对已校正立体图像,教师模型为左图产生视差图。为了识别那些可能误导学生训练的 imperfect 预测,同时把左图喂给一个单目深度估计器得到对应深度图。视差图与单目深度都用 Stereo4D 提供的同一套相机参数,经 3D 反投影加 Sobel 算子转成法向图。然后计算两张法向图的逐像素余弦相似度来评估局部几何一致性,阈值化后得到一致性掩码,一致性不足的立体样本直接丢弃。
图 6:上——野外互联网立体数据的伪标注流水线;下——生成的伪标签可视化。
这里有一个很细的处理:天空区域被排除在相似度计算之外。原因是天空深度无穷大,而且在常用合成训练集里代表性严重不足,如果纳入一致性判定会污染整个掩码。天空由开放词汇分割模型检出,最终伪标签里天空区域的视差被置零。剩下的立体视差图就是最终伪标签,一致性掩码可选择性地用来决定哪些像素参与监督。
视频按时间维度以步长 10 做子采样,最终得到 140 万对可用的立体数据。作者特别强调,相比在深度或视差空间里直接比对,他们提出的法向一致性检查对野外图像那种极端多样的深度范围与噪声预测更鲁棒——因为法向是局部归一化的量,不受绝对尺度影响。这批自动伪标注数据被纳入学生模型的最终训练,构成了一种输出空间蒸馏,与前面几步的特征空间蒸馏形成互补。
三、实验结果
3.1 实验设置
Fast-FoundationStereo 的训练数据与 FoundationStereo 完全相同的混合数据集,再加上 3.4 节的伪标注真实数据。部署时框架允许从每一步的候选里自由拼装出最终的立体匹配模型,拼装完再做一次端到端训练;训练好之后,这套固定权重直接对未见数据做零样本推理。除特别说明外,细化迭代 8 次,构建代价体的最大视差取 192,评估时不限制视差范围。
评测用了五个公开数据集:Middlebury(室内立体对,结构光采集的高质量真值)、ETH3D(灰度立体对,室内外兼有)、KITTI 2012 与 KITTI 2015(真实驾驶场景,LIDAR -derived 稀疏真值)、以及 Booster(大量半透明与镜面场景,专门考察非朗伯表面鲁棒性)。指标上,BP-X 是视差误差大于 X 像素的像素百分比;D1 是 KITTI 常用指标,统计误差同时大于 3 像素和真值视差 5% 的像素占比。所有结果都在非遮挡区域上评估。运行时的测量硬件统一为 NVIDIA 3090 GPU,profiling 在 Middlebury-Q 分辨率上做——这接近实时机器人应用的典型分辨率。
3.2 零样本泛化对比
下表是论文表 1 的核心对比。这些数据集对所有被评方法都是未见的,因此衡量的是纯粹的零样本泛化能力。有一个关键的公平性处理:现有实时方法通常不是为零样本泛化设计的,主要在 SceneFlow 上训练;对那些公开了训练代码的强竞争者(RT-IGEV、LightStereo),作者额外用与自己完全相同的数据集(包括自己提出的伪标签)重新训练了它们,表中以星号区分。
| 方法 | Midd-H BP-2 | Midd-Q BP-2 | ETH3D BP-2 | KITTI-12 BP-2 | KITTI-15 D1 | 运行时 (ms) |
|---|---|---|---|---|---|---|
| 非实时组(计算量大) | ||||||
| MonSter | - | 4.24 | - | - | - | 336 |
| Zero-RAFT-Stereo | - | 4.68 | - | - | - | 164 |
| FoundationStereo(教师) | 1.10 | - | - | - | - | 496 |
| 实时组 | ||||||
| LightStereo-L(仅 SceneFlow) | - | 37.21 | - | 14.49 | - | - |
| RT-IGEV(仅 SceneFlow) | - | - | - | - | - | 45 |
| RT-IGEV*(同数据重训) | - | 7.82 | - | - | - | 45 |
| Fast-FoundationStereo(本文) | 2.20 | 2.12 | 0.62 | 3.61 | 3.25 | 49 (21) |
表 1(节选自论文表 1):公开数据集上的零样本泛化。BP-1/BP-3 等完整档位见原文;括号内为 TensorRT 加速后的运行时。本文方法在每一列上都是实时组最优,且在全部列上都是仅次于教师 FoundationStereo 的第二名。
这张表的信息量在于三点。第一,本文方法全面且大幅领先其它实时模型——即使对手用了完全相同的训练数据(含伪标签)也一样。RT-IGEV 重训后 Midd-Q BP-2 是 7.82,本文是 2.12,差着 3.7 倍。第二,它与大多数计算昂贵的模型打平甚至更好,包括那个借助多个大型基础模型合成额外训练数据的 Zero-RAFT-Stereo。第三,相对教师 FoundationStereo,本文快 10 倍以上(496ms 到 49ms,TensorRT 下 21ms),误差只是温和上升:Midd-H BP-2 从教师的 1.10 到 2.20。
论文表 2 单独考察了对非朗伯表面的鲁棒性,用 Booster-Q 数据集(数字取自 StereoAnywhere 论文)。本文 BP-2 为 4.62、EPE 1.54;教师 FoundationStereo 是 4.07;而最有竞争力的实时模型 RT-IGEV 则是 16.86,即使是用相同数据重训的版本(RT-IGEV†)也有 13.39。也就是说在半透明与镜面这类立体匹配最难的场景上,本文与教师的差距(4.62 对 4.07)远小于它与其它实时方法的差距(4.62 对 13.39),说明蒸馏保住的正是那部分最难学的先验。
图 7:实时方法在 Middlebury、ETH3D、Booster、KITTI-2015(自上而下)上的零样本定性结果,均未在目标数据集任何划分上训练过。带 † 的方法使用了与本文完全相同的训练数据(含本文提出的伪标签)。
3.3 框架各部件的消融
骨干蒸馏的作用。 论文表 3 对比了不做蒸馏(特征骨干仅在 ImageNet 上预训练)与不同蒸馏损失的效果。可以看到,从教师的混合单目与立体先验里蒸馏,特征骨干的零样本泛化能力普遍提升,而 MSE 损失优于余弦相似度损失:
| 变体 | Midd-H BP-2 | ETH3D BP-1 | KITTI-12 D1 | KITTI-15 D1 |
|---|---|---|---|---|
| 不做蒸馏(仅 ImageNet 预训练) | 2.87 | 2.11 | 2.67 | 4.32 |
| 余弦相似度损失 | 2.29 | 1.19 | 2.39 | 3.31 |
| MSE 损失(本文) | 2.20 | 1.22 | 2.35 | 3.25 |
表 3(论文原表):特征骨干蒸馏策略消融。MSE 在四个指标中三个最优,ETH3D BP-1 上略逊于余弦相似度(1.22 对 1.19)。
分块搜索的作用。 分块策略把训练复杂度从 $O(n^{N})$ 降到 $O(n)$,但式 (1) 用的是一个替代目标——它累加的是扰动每个局部块带来的影响,这只是候选模型真实性能的代理。要真实评估一个候选,本该把拼装好的完整代价滤波模块与网络其余部分一起端到端训练,代价极高。作者用一个很扎实的实验验证了这个代理是否有效:在相同延迟约束 $\Delta\tau$ 下,把基于式 (1) 搜出的候选与随机拼装的候选对比,所有候选都做端到端训练(其余部分取自教师)后再零样本评估,每个 $\Delta\tau$ 采 10 个随机候选。结果(论文图 8)有三条:延迟约束放松时,搜索能找到性能更好的候选;在各个 $\Delta\tau$ 下,搜索出的候选稳定优于随机拼装;而当 $\Delta\tau$ 收紧时,部分随机拼装候选出现大幅退化——这恰恰凸显了紧约束下网络设计的重要性。
图 8:不同延迟预算 $\Delta\tau$ 下,代价滤波模块的分块架构搜索效果(Middlebury-Q 上评估)。搜索候选稳定优于随机拼装候选。
剪枝率的作用。 论文图 9 展示了剪枝率对 Middlebury-Q 上精度与单次细化迭代运行时的影响。激进剪枝会显著损害精度,但用式 (2) 重训练能有效恢复——这反过来印证了原细化模块存在大量冗余。
图 9:剪枝率对精度与速度的影响。
伪标注的作用。 论文表 4 消融了是否使用伪标注数据的训练结果,并且顺带在几个有竞争力的实时方法上也做了同样消融。结论是伪标注对所有方法的泛化性能都有一致提升,而对那些此前只在 SceneFlow 上训练的方法提升尤其显著:
| 方法 | Midd-H BP-2 | ETH3D BP-1 | KITTI-12 D1 | KITTI-15 D1 |
|---|---|---|---|---|
| RT-IGEV | 11.52 (8.69) | 5.66 (5.12) | 4.54 (3.55) | 6.00 (4.40) |
| LightStereo-L | 23.76 (18.41) | 45.46 (21.12) | 13.98 (5.27) | 12.08 (7.63) |
| 本文 | 2.53 (2.20) | 1.31 (1.22) | 2.44 (2.35) | 3.48 (3.25) |
表 4(论文原表):野外数据上不使用(与使用)伪标注的结果。括号内为加入伪标注后的指标,三种方法全部改善。
值得注意的是本文自己从伪标注里的收益(BP-2 从 2.53 到 2.20,改善 0.33)比 RT-IGEV(11.52 到 8.69,改善 2.83)小得多。这是合理的:本文的特征骨干已经通过蒸馏继承了教师在互联网级图像上的先验,伪标注带来的边际增益自然更小;而 RT-IGEV 此前只见过 SceneFlow 合成数据,真实数据的冲击更大。换句话说,蒸馏与伪标注这两条路都在解决"真实世界先验"这个同一个问题,前者从特征空间进,后者从输出空间进,因此收益会部分重叠。
3.4 运行时分解
论文图 10 给出了 FoundationStereo 与本文最慢模型之间的详细运行时分解(同为 NVIDIA 3090 GPU)。三个关键步骤各自都被大幅加速,叠加起来带来 10 倍以上的总体提速。这张分解图的意义在于它验证了"分而治之"这个前提本身:如果瓶颈只集中在某一段,那么另外两段的压缩就是白费力气,而实测显示三段都是量级相当的瓶颈,所以三段各打一拳的策略是站得住的。
图 10:运行时分解。特征提取、代价滤波、视差细化三段各自被大幅加速,总体提速超过 10 倍。
图 2:各类立体匹配方法在同一硬件(NVIDIA 3090)上的零样本泛化精度(Middlebury-Q)与速度对比。本文模型族在精度仅略低于最慢最优方法的前提下达到实时性能;绿色描边的星点为经 TensorRT 进一步加速的版本。
四、局限性与批判性思考
量化这条路还没走。 作者在结论里明确把量化列为未来工作——它与本文的蒸馏、NAS、剪枝三者正交,理论上还能再压一截推理时间,从而部署到资源更受限的边缘设备上。这既是坦诚也是留白:本文报的 49ms / 21ms 都还是 FP32 与 TensorRT 图优化下的数字,没有触及 INT8 这一档。对真正要上机器人本体的场景,边缘芯片(Jetson 系列而非桌面 3090)上的实测才是关键数据,而这在论文里是缺失的。
ILP 的替代目标终究是代理。 式 (1) 累加的是"扰动每个局部块"带来的误差与时间变化,它假设块与块之间的影响是可加的。但代价滤波是一个整体的 4D 聚合过程,块间显然存在耦合——第 3 块的一个次优选择可能让第 5 块的输入分布偏离它蒸馏时见过的分布。作者用图 8 的实验证明了搜索候选稳定优于随机候选,这个证据是有效的,但它证明的是"代理目标比乱选好",而不是"代理目标等于真实最优"。真正的联合最优需要端到端评估每个组合,而那正是这个方法为了避免 $10^{18}$ 复杂度而刻意绕开的。
与教师的差距在最难的指标上仍然存在。 把数字摊开看:Midd-H BP-2 教师 1.10、本文 2.20,正好两倍;KITTI-15 D1 本文 3.25。论文表 1 的注里也承认,本文在每一列上都是第二名。对于精度已经逼近饱和的基准来说,两倍的误差率在部分下游任务里可能是质变而非量变——例如机械臂在近距离抓取时的毫米级公差。"只退让一点点"是相对于其它实时方法而言的,相对于教师本身,这个退让是有实质代价的。
伪标签的上限就是教师。 140 万对伪标签全部由教师模型生成,学生在这批数据上学到的东西原则上不会超过教师的能力边界。法向一致性检查能过滤掉教师的明显失误,但过滤不掉教师的系统性偏差——如果教师在某类材质(比如某种特定反光涂层)上一贯犯错,这类错误会被写进 140 万条伪标签里并被学生继承。这是一种自蒸馏的固有天花板。
三条约束是手工设计的。 2.4 节细化模块剪枝的三条约束(输出层通道固定、$h$ 通路联合剪枝、motion encoder 输入固定)都是作者基于对立体匹配结构的理解手工写进依赖图的。它们是这个模块能剪得动的前提,但也意味着这套剪枝流程迁移到别的递归细化架构(比如光流、场景流)时需要重新推导对应的约束,不是即插即用的。
五、总结与展望
这篇论文的贡献不在于提出某个全新的立体匹配架构,而在于给出了一套可复制的"如何把一个慢的基础模型压成实时模型"的方法论。它的核心洞察是:基础模型的不同组成部分,瓶颈性质不同,因此该用不同的压缩工具。特征提取贵在 ViT 骨干,那就用架构无关的知识蒸馏换成成熟的轻量 CNN;代价滤波贵在 4D 注意力且通道维本就很小(剪不动、人也设计不出替代),那就交给 NAS 去搜;细化模块贵在递归冗余,那就用结构化剪枝加重训练。三段各自对症,再用一个统一的框架把它们拼起来端到端训练。
方法论层面最值得记住的是分块搜索那一步。$200^{8}\approx10^{18}$ 的组合空间本来无解,作者用"逐块独立蒸馏 + 逐块独立评估 + ILP 组合"把一个指数问题降成了线性问题($O(n^{N})\to O(n)$),并且用一个扎实的对照实验(对比随机拼装候选)证明了替代目标的有效性。这个套路并不专属于立体匹配——任何可以被切成接口固定的串联块的深层网络,都可以套用同样的分而治之搜索。
另一处有迁移价值的是伪标注流水线里的法向一致性检查。用单目深度估计器与立体教师互为交叉验证,把两者的输出都转成法向图再比余弦相似度——法向是局部归一化量,因此对野外图像那种极端多样的深度范围与噪声预测天然鲁棒,比在深度或视差空间里直接比对更稳。这个"用几何一致性做自动质检"的思路,可以直接搬到任何自标注/伪标注的数据策展场景里。
展望上,作者自己点出的方向是量化。但更值得关注的是这套方法论的普适性:本文处理的是立体匹配,而整个具身智能领域正面临同样的困境——大批强大的基础模型(VLA、世界模型、扩散策略)都因为推理太慢而进不了有硬延迟约束的机器人本体。分而治之的压缩策略、分块 NAS、以及用教师自举真实数据伪标签这三件工具,理论上都可以迁移过去。如果这条路走通,"基础模型太慢所以只能跑在云端"这个当前具身智能的核心约束,可能会被系统性地松动。
六、值得记住的几句话
"每个步骤都被一个分而治之的策略加速。"——这是全文的骨架句。三段瓶颈性质不同,所以三段用三种工具,而不是一把锤子敲到底。
"直接剪枝代价滤波模块只能换来很小的加速却导致严重的性能退化,因为 $\mathbf{V_{C}}$ 的通道维本来就小(大多不到 100)。"——一句非常具体的否定理由,解释了为什么这一段非用 NAS 不可。
"相比标准 NAS,我们的分块蒸馏把训练复杂度从 $O(n^{N})$ 降到 $O(n)$。"——指数变线性,这是本文最硬的工程贡献。
"相比在深度或视差空间里直接比对,我们提出的法向一致性检查对极端多样的深度范围或野外图像上的噪声预测更鲁棒。"——伪标注流水线的设计要点,也是可以直接借用的一招。
"探索量化技术提供了一条正交的路径来进一步提升推理速度。"——作者自己标注的下一步,也提示了本文 49ms / 21ms 还不是这套方法的地板。