
零样本立体匹配与深度估计实践FoundationStereo 让 AI 直接看懂三维场景【免费下载链接】FoundationStereo[CVPR 2025 Best Paper Nomination] FoundationStereo: Zero-Shot Stereo Matching项目地址: https://gitcode.com/gh_mirrors/fo/FoundationStereoFoundationStereo 是 NVIDIA 开源、获 CVPR 2025 最佳论文提名的零样本立体匹配模型只需输入一对已经校正的左右相机图像它不经过任何场景微调就能直接输出稠密视差图进而换算成带真实物理尺度的深度图和三维点云。对于做机器人、自动驾驶、三维重建的开发者来说这相当于拿到了一双天生会测距的眼睛。下面我就从原理到实战带你把这条链路完整跑通。图1 左右立体图像对输入后模型输出的稠密视差图颜色越暖代表物体越近来自项目自带示例数据一个反复发生的尴尬换了个场景算法就不灵了如果你接触过传统的立体匹配大概率经历过这样的循环在公开数据集上训练指标刷得很漂亮一旦把模型部署到自己的相机、自己的环境误差立刻变大。于是你只能一个场景微调一次标数据、训一轮、再验证周而复始。问题出在哪里传统的深度学习方法本质上在拟合训练集的样子——场景布局、光照条件、相机参数都长在模型的记忆里。可真实世界千变万化这种应试型模型天然脆弱。这也正是 FoundationStereo 想解决的问题它要把立体匹配做成基础模型——像大语言模型那样见过足够多、足够多样的世界之后面对从未见过的场景也能直接泛化。官方论文称之为 zero-shot stereo matching零样本立体匹配这也是它拿下 CVPR 2025 Oral 并获最佳论文提名的原因。零样本立体匹配是怎么做到的从人眼测距说起先建立心智模型。人有两只眼睛因为左右眼位置不同同一个物点在左右视网膜上的位置会有细微差异这个差异就叫视差disparity。大脑正是利用视差来感知远近——这就是最朴素的立体视觉原理。电脑做立体匹配本质就是把这一过程数字化同时拍下左右两张图像把两幅图逐像素对上号找到左图中的每个点在右图中对应在哪里同一个物点在左右图中的水平偏移量就是视差视差越大物体越近视差越小物体越远。FoundationStereo 的输入输出都非常朴素输入一对校正后的左右图像输出一张和原图同尺寸的稠密视差图。但让它零样本可用的关键是训练阶段的三步棋够大的数据底座官方构建了 FSD 数据集包含约 100 万对高度仿真、场景多样化的合成立体图像对。合成数据的优势是能拿到逐像素的精确真值这是真实采集很难做到的。自动清洗管线100 万对数据里混着大量说不清对错的模糊样本比如纹理缺失、遮挡严重、反光区域盲目训练只会让模型学歪。论文设计了一套自动自校准self-curation管线把这些模糊样本剔掉留下真正能教模型的干净数据。借力单目视觉大模型合成数据再逼真和真实照片之间也有模拟到现实的鸿沟。模型采用侧调优side-tuning结构把 DINOv2、Depth Anything 这类视觉基础模型学到的丰富单目先验移植过来同时保留立体匹配特有的几何推理能力。打个比方单目大模型像一位见多识广的老顾问告诉模型这种情况一般是近还是远而立体匹配部分负责精算到底差多少个像素。此外架构里的长距离上下文推理模块让模型在做代价体cost volume过滤时能参考整个图像范围的信息而不是只看局部窗口——这对无纹理墙面、玻璃等老大难区域尤其有效。从安装到跑通第一个三维点云完整四步实操环节我建议你准备一台带 NVIDIA 显卡的 Linux 机器官方在 3090、4090、A100、V100 及 Jetson Orin 上验证过显存越大越从容。第一步克隆仓库并创建环境git clone https://gitcode.com/gh_mirrors/fo/FoundationStereo cd FoundationStereo conda env create -f environment.yml conda run -n foundation_stereo pip install flash-attn conda activate foundation_stereo注意一个官方特别标注的坑flash-attn必须单独安装否则环境创建过程容易报错别图省事把它写进同一个命令。第二步下载预训练权重官方提供两个通用模型把下载到的整个文件夹比如23-51-11原样放进./pretrained_models/目录下23-51-11基于 ViT-Large 的最强模型精度最高适合追求效果的场景11-33-40基于 ViT-Small精度略低但推理更快适合算力紧张或对延迟敏感的场景。第三步跑通第一个示例仓库自带了样例图像assets/left.png和assets/right.png直接执行python scripts/run_demo.py \ --left_file ./assets/left.png \ --right_file ./assets/right.png \ --ckpt_dir ./pretrained_models/23-51-11/model_best_bp2.pth \ --out_dir ./test_outputs/运行结束你会得到视差可视化图vis.png、以米为单位的深度图depth_meter.npy以及可交互查看的三维点云cloud.plyOpen3D 窗口会弹出按 ESC 退出。图2 使用 Open3D 查看点云输出从左到右依次是纸巾盒、马克杯、键盘、显示器等桌面物体模型直接从二维图像对重建出三维结构第四步用自己的数据换成你自己的图像时除了准备一对左右图还要提供一个内参文件比如参考assets/K.txt的格式第一行是展开成一维的 3x3 相机内参矩阵9 个数第二行是左右相机之间的基线距离单位是米754.67 0.0 489.38 0.0 754.67 265.16 0.0 0.0 1.0 0.063内参和基线是视差换算成真实深度的钥匙缺了它模型照样输出视差图但你无法得到有物理单位的深度和点云。三个容易混淆的概念一次讲清视差图和深度图到底什么关系它们是同一个信息的不同表达通过一个公式换算深度 焦距 × 基线 ÷ 视差。注意二者是反比关系视差大的物体近深度值小视差小的物体远深度值大。FoundationStereo 直接输出的是视差图有了内参和基线它会在脚本里自动帮你转成米制深度图和点云。单目深度估计和双目立体匹配为什么不能互相替代单目方法只靠一张图猜深度靠的是场景先验——它能给出合理的相对远近但物体的绝对尺寸和距离往往是模糊的且存在尺度漂移。立体匹配靠的是两台相机之间的几何视差只要标定正确就能得到真实物理尺度的深度。代价是你需要两台相机、需要标定和校正。二者适用场景不同单目胜在简单便宜双目胜在精确且带尺度。FoundationStereo 属于后者但通过引入单目大模型先验把两者的优势结合了起来。零样本和传统微调范式差在哪传统做法是每个数据集训一个模型换个场景精度就崩。零样本则是一个模型打天下——从虚拟合成数据学到的几何与视觉规律直接迁移到真实世界。这正是它和 DINOv2、GPT 这些基础模型理念一脉相承的地方。它在榜单上拿了什么成绩怎么再提速零样本不是嘴上说说官方在业界最严格的两个榜单上都拿到了全球第一Middlebury 立体匹配榜单和 ETH3D 双视角低分辨率榜单。这意味着在未参与训练的真实场景上它的综合精度已经超过绝大多数专训专调的方法。至于推理速度官方给出几条明确的优化路径按性价比排序降低分辨率加--scale 0.5把输入图缩小一半再推理速度大幅提升适合精度要求不高的场合减少迭代次数加--valid_iters 16默认 32牺牲少量精度换取更快的收敛TensorRT FP16 部署官方实测在同样的 3090 上可拿到约 6 倍加速。需要说明ONNX/TRT 版本官方只提供 Docker 部署方式仓库的docker/目录下已有现成的构建脚本。如果输入是高分辨率图像超过 1000 像素可以开启--hiera 1分层推理拿回全分辨率深度代价是更慢。高频问题自检清单环境创建一直失败大概率是flash-attn没单独装按上文顺序先创建环境再单独安装它。另外确认 GPU 驱动和 CUDA 版本与environment.yml里声明的版本匹配。跑起来后没有点云或者点云不完整先检查三个开关--z_far点云的最大深度截断默认 10 米场景太深时调大、--remove_invisible是否去掉左右图不可重叠区域、--denoise_cloud是否做离群点剔除。它们都是可以组合的逐个开关排查最快。报错 cuDNN / CUDNN_STATUS_NOT_SUPPORTED大概率是显存不够OOM。降低分辨率、减小--valid_iters或者换更大显存的 GPU。我没有双目相机只有两台普通 RGB 相机能用吗可以。先用 OpenCV 的标定与校正接口把两路图像做成极线对齐的立体图像对相当于把两台相机掰正再喂给模型。但要注意左右图绝不能交换——左图必须是真正来自左侧相机的图像否则物体在画面中的相对位置会反推理结果完全错误。输入图像有什么讲究官方建议用无损压缩的 PNG图像需要校正且无鱼眼畸变。像 ZED、RealSense 这类立体相机出厂的 SDK 通常已经帮你做好了校正开箱即用RealSense 的灰度/红外模式官方也验证过效果不错。从桌面到道路下一步你可以做什么跑通 demo 只是起点。一个真正零样本、能输出米制深度的模型天然适合这些方向机器人与机械臂抓取用真实尺度的点云做碰撞检测、抓取位姿估计自动驾驶与无人车感知稠密深度为障碍物测距、道路重建提供底层输入增强现实把虚拟物体按真实深度锚进场景里遮挡关系自然成立移动端与嵌入式官方已支持 Jetson 平台配合 TensorRT 可以在边缘设备上实时推理。下一步建议你带着自己的数据试一遍先跑通仓库自带的示例再换成你自己的立体图像对然后从--scale 0.5、--valid_iters 16开始调参观察精度和速度的平衡点。想看代码细节可以从 核心推理模块 和 示例脚本 入手这两个文件都不长适合作为阅读入口。总之零样本立体匹配的地基已经打好接下来能盖多高的楼就看你怎么用了。【免费下载链接】FoundationStereo[CVPR 2025 Best Paper Nomination] FoundationStereo: Zero-Shot Stereo Matching项目地址: https://gitcode.com/gh_mirrors/fo/FoundationStereo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考