具身智能:双目匹配与 Cost Volume 入门
双目匹配(stereo matching)解决的是一个很具体的问题:给定同一时刻、已经校正的左右两张图,估计每个像素在左右图中的水平位移,也就是 disparity,再把 disparity 转成深度。
这页先回答“双目匹配与 cost volume”在「具身智能」里的位置:它把相机几何里的 baseline / disparity,接到深度网络里的 feature、cost volume、filtering 和 refinement。
前置:先看 相机、深度与机器人视觉,知道双目深度公式、内参、外参和标定。视觉网络不熟时回 卷积与视觉特征。
主线关系:读 Fast-FoundationStereo 时,本页负责解释 stereo matching pipeline、cost volume 和评测指标。
双目匹配不是“直接预测一张深度图”这么简单。它先在左右图之间为每个像素搜索可能的匹配位移,把这些候选位移堆成 cost volume,再用网络判断哪一个 disparity 最可信。现代 stereo 网络的大部分计算,正是花在 cost volume 的构造、过滤和细化上。
一句话流程
典型 stereo matching pipeline 可以写成:
1 | left / right rectified images |
这条线里有两个世界同时存在:
| 层次 | 关心什么 | Fast-FoundationStereo 对应位置 |
|---|---|---|
| 相机几何 | 左右相机、baseline、rectification、disparity 到 depth | 输入假设和 zero-shot stereo 任务 |
| 深度网络 | feature、cost volume、3D conv / Transformer、refinement | backbone、cost filtering、ConvGRU refinement |
| 系统部署 | latency、MACs、TensorRT、真实场景泛化 | 实时 foundation stereo model |
符号卡
| 符号 / 术语 | 含义 |
|---|---|
| 左图和右图 | |
| 图像像素坐标, 是横向位置, 是纵向位置 | |
| disparity,左右图同一点的横向像素位移 | |
| 最大搜索 disparity,也就是候选位移范围 | |
| 相机焦距,通常来自内参 | |
| 左右相机 baseline | |
| 深度,常用 近似理解 | |
rectification |
把左右图校正到同一水平扫描线,方便只沿横向搜索 |
cost volume |
每个像素、每个 disparity 候选的匹配代价或匹配特征 |
refinement |
在初始 disparity 基础上迭代修正边界、遮挡和细节 |
Rectified Stereo Pair 是什么
真实双目相机的左右镜头不可能天然完美平行,镜头也有畸变。标定和校正的目标,是把左右图变成 rectified stereo pair:同一个 3D 点在左右图中落在同一条水平扫描线上。
校正前,匹配点可能沿任意 epipolar line 出现;校正后,匹配点通常只需要沿同一行横向搜索:
1 | left: pixel at (u, v) |
这一步很关键,因为它把二维匹配问题压成一维搜索。没有 rectification,网络不仅要判断“像不像”,还要处理复杂的几何搜索空间;有了 rectification,cost volume 可以沿 disparity 维度组织。
很多 stereo 模型默认输入已经 rectified / undistorted,左右图顺序也不能交换。如果相机标定漂移、左右不同步、畸变没处理好,模型输出坏掉不一定是网络能力问题,而是输入几何假设被破坏。
Disparity Search 怎么看
对左图像素 ,双目匹配会在右图同一行搜索 。如果某个 让左右局部特征最像,这个 就是该像素的 disparity 候选。
直觉上:
| 现象 | 几何含义 |
|---|---|
| disparity 大 | 物体通常更近 |
| disparity 小 | 物体通常更远 |
| disparity 接近 0 | 可能是远处、天空,或没有可靠匹配 |
| disparity 不连续 | 可能是物体边界、遮挡或深度突变 |
深度公式常写成:
它说明一个残酷事实:远处 很小,1 个像素的 disparity 误差会放大成很大的深度误差。所以 stereo benchmark 常常同时看近处边界、远处区域、遮挡区域和低纹理区域。
Cost Volume 是什么
cost volume 可以理解为一张“像素到候选 disparity 的评分表”。对每个左图位置 ,模型比较左图特征 和右图不同位移的特征 ,得到每个 的匹配信息。
常见形状可以粗写成:
或在下采样后写成:
这里 是 cost volume 的通道数, 是 disparity 候选数, 是空间分辨率, 是下采样倍率。
cost volume 的构造方式有多种:
| 构造方式 | 直觉 | 取舍 |
|---|---|---|
| concatenation | 把左右特征拼起来,让后续网络学匹配 | 表达力强,计算较重 |
| correlation | 直接算左右特征相似度 | 更轻,但信息更压缩 |
| group-wise correlation | 分组算相似度 | 在表达力和成本之间折中 |
| feature difference / absolute difference | 看左右特征差异 | 简单,常和其他方式组合 |
它多了一维 disparity。图像是 ,cost volume 变成 。如果还保留通道 ,后续 3D convolution 或 attention 的计算和显存都会明显上升。
Cost Filtering 在做什么
原始 cost volume 很嘈杂。纹理重复、弱纹理、反光、透明、遮挡和光照差异都会让局部匹配出错。cost filtering / cost regularization 的作用,是利用空间上下文和几何一致性修正这些局部错误。
常见模块包括:
| 模块 | 作用 |
|---|---|
| 3D convolution | 在 disparity、height、width 三个维度上传播上下文 |
| 3D hourglass | 下采样聚合大范围上下文,再上采样恢复分辨率 |
| axial / planar convolution | 用更结构化的卷积扩大感受野,减少计算 |
| Disparity Transformer | 沿 disparity 或空间维度建模长程关系 |
| feature-guided volume excitation | 用左图 unary features 引导 cost volume 哪些区域更重要 |
Fast-FoundationStereo 里 cost filtering 是三大瓶颈之一。论文选择 blockwise NAS,是因为 cost volume 的通道本来就不大,直接剪枝未必能拿到明显硬件收益;替换成更合适的 block 反而更有效。
Refinement 为什么还需要
cost filtering 通常先给出一个 initial disparity,但这张图还可能有几个问题:
| 问题 | 常见表现 |
|---|---|
| 边界被抹平 | 物体边缘的 disparity 过渡太宽 |
| 遮挡区域不稳定 | 左图看到、右图看不到的位置匹配混乱 |
| 细小结构丢失 | 线缆、把手、薄边缘不清楚 |
| 上采样误差 | 低分辨率 disparity 放大后出现块状或错位 |
refinement module 会把初始 disparity、图像特征和 hidden state 结合起来,迭代修正输出。很多现代 stereo 网络使用 ConvGRU 或类似 recurrent update block:每一轮都基于上一轮 disparity 做小步更新。
这也解释了 Fast-FoundationStereo 为什么专门剪 refinement GRU。迭代模块会重复调用,哪怕单轮不算最大瓶颈,累积 latency 也很可观;但 recurrent hidden state 有通道依赖,所以不能随便乱剪。
Benchmark 和指标怎么读
Stereo 论文常见数据集:
| Benchmark | 关注点 |
|---|---|
| Middlebury | 高分辨率、室内、细节和遮挡,常用于看精细 stereo 质量 |
| ETH3D | 真实多视角 / 双目场景,纹理和几何更接近真实采集 |
| KITTI 2012 / 2015 | 自动驾驶场景,路面、车辆、远距离和动态物体更多 |
常见指标:
| 指标 | 含义 | 怎么读 |
|---|---|---|
| EPE | End-Point Error,平均 disparity 误差 | 越低越好,但平均值可能掩盖局部坏点 |
| BP-1 / BP-2 | bad pixel,误差超过 1 或 2 像素的比例 | 越低越好,阈值越小越严格 |
| D1 | KITTI 常用 bad disparity 指标 | 越低越好,常用于自动驾驶 stereo |
读 zero-shot stereo 结果时,重点不是“哪个数据集最高”,而是模型有没有在未微调的真实场景中同时守住多类分布:室内、户外、远距离、弱纹理、反光/透明和遮挡。
和 Fast-FoundationStereo 怎么接
读 Fast-FoundationStereo 时,可以把术语按这张表对应:
| 论文术语 | 本页对应概念 |
|---|---|
| feature backbone | 左右图特征提取器,为 cost volume 提供 |
| cost volume | 每个像素、每个 disparity 候选的匹配表示 |
| cost filtering | 对 cost volume 做上下文推理,输出 initial disparity |
| 3D hourglass / APC | cost filtering 的结构选择 |
| Disparity Transformer | cost filtering 里的长程 disparity 推理模块 |
| refinement ConvGRU | 迭代修正 initial disparity 的 recurrent module |
| pseudo-label stereo pairs | 用 teacher 给真实双目图生成 dense disparity 监督 |
| BP-1 / BP-2 / D1 | 判断 zero-shot stereo 质量的坏点比例指标 |
- 几何基础不稳,回看 相机、深度与机器人视觉。
- 视觉 feature 不稳,回看 卷积与视觉特征。
- 压缩方法不稳,继续看 模型压缩、剪枝与 NAS 入门。
- 论文主线,进入 Fast-FoundationStereo。
- Title: 具身智能:双目匹配与 Cost Volume 入门
- Author: Charles
- Created at : 2026-05-10 09:00:00
- Updated at : 2026-05-10 09:00:00
- Link: https://charles2530.github.io/2026/05/10/ai-files-embodied-ai-stereo-matching-and-cost-volume/
- License: This work is licensed under CC BY-NC-SA 4.0.