FoundationStereo零样本立体深度估计完整指南:从环境搭建到三维点云实战
【免费下载链接】FoundationStereo[CVPR 2025 Best Paper Nomination] FoundationStereo: Zero-Shot Stereo Matching项目地址: https://gitcode.com/gh_mirrors/fo/FoundationStereo
只看科幻电影里"机器眼"的工作方式,是否觉得遥远又迷人?让计算机仅凭两张照片就判断出物体的远近,这正是立体视觉追求的终极目标。FoundationStereo是荣获CVPR 2025最佳论文提名的零样本立体深度估计模型:输入一对校正过的左右视图,它直接输出稠密视差图,并可进一步换算为米制深度图和三维点云——无需针对场景训练,开箱即用。本文将从原理、安装到实战调优,带您完整走通这条"从图像到三维"的快速通道。
认识FoundationStereo:一对图像还原三维世界 🧭
FoundationStereo的核心功能非常直观:给模型一对由左右相机同时拍摄的立体图像,它便输出一张稠密视差图(Disparity Map),记录每个像素在左右视图之间的水平偏移。偏移越大,说明物体离相机越近。由此可进一步得到带真实尺度的深度图,以及可直接在Open3D中查看的三维点云。
仓库自带的样例图像正好是办公室桌面场景,左图为左相机视角,右图为右相机视角,二者极线对齐、分辨率一致,符合模型对输入数据的基本要求:
那么它的零样本能力究竟意味着什么?我们接着往下看。
技术内核:零样本泛化能力从何而来 🔬
传统的立体匹配算法需要在目标数据集上逐域微调,换个场景往往就失灵。FoundationStereo的目标是把"基础模型"式的强泛化能力带入立体匹配,具体靠三张牌:
- 大规模合成数据:构建了约100万对立体图像的合成训练集,覆盖多样场景与高度写实渲染,并配备自动自校准(Self-Curation)管道剔除模糊样本,从源头上保证数据质量。
- 单目先验注入:采用侧调优(Side-Tuning)特征主干,把 DINOv2、Depth Anything 等视觉基础模型学到的丰富单目先验迁移进来,有效缓解仿真到现实的域差异。
- 长程上下文推理:在网络内部对代价体(Cost Volume)做长距离上下文推理与过滤,让立体匹配在纹理重复、遮挡区域仍保持稳定。
正是这些设计,让模型在Middlebury与ETH3D两个世界级排行榜上拿下第一名。下图是模型在合成数据上的推理示例:左、中为输入图像对,右侧彩色图为预测视差:
运行环境准备:硬件要求与一键安装 🖥️
官方在Linux下验证过的GPU包括RTX 3090、4090、A100、V100以及Jetson Orin,理论上其他NVIDIA显卡也可运行,但需保证足够显存。安装步骤非常简短:
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需要单独安装,直接随环境一起创建可能报错;若显卡不支持Flash Attention,请参考仓库FAQ中的替代方案。
模型下载与输入数据准备要点 📦
零样本推理需要预训练权重,将下载好的整个文件夹(例如23-51-11)放在./pretrained_models/目录下即可。官方提供两个版本:
- 23-51-11:基于Vit-Large,精度最高的通用推荐模型;
- 11-33-40:基于Vit-Small,精度略降但推理更快。
输入数据请遵守四条约定:左右图像分辨率一致;图像已经校正且无畸变(极线水平对齐,ZED等双目相机通常已处理);不要调换左右顺序;推荐使用PNG等无损格式。除了彩色RGB图像,模型在单目或红外立体图像上(如RealSense D4XX系列)同样表现良好。
实战第一步:跑通你的第一个深度估计demo 🚀
一切就绪后,运行单图推理只需一条命令:
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.ply,随后自动弹出Open3D窗口展示点云。运行效果参考下图,桌面上的键盘、杯子、纸巾盒都被清晰地还原为立体结构:
读懂输出:视差、深度与点云的核心换算 📐
不少新手会对三个概念感到困惑,这里一次讲清:
- 视差(Disparity):模型最直接的输出,单位为像素,值越大代表物体越近;
- 深度(Depth):通过
depth = f × b / disparity换算,其中 f 为相机焦距(像素),b 为左右相机基线的实际距离(米),因此深度带真实尺度; - 点云(Point Cloud):由深度图结合相机内参反投影得到的空间三维点集合。
在自己的数据上生成点云时,需要准备内参文件:第一行为展平后的3×3内参矩阵(9个数),第二行为基线距离(米),格式可参考仓库中的assets/K.txt。伪彩色视差图中,暖色表示视差大、距离近,冷色表示视差小、距离远,直观易懂。
推理速度优化方法与常见问题 ⚡
如果觉得推理偏慢或显存吃紧,可以从两个方向入手:
- 降低输入分辨率:加
--scale 0.5将图像缩小一半,速度显著提升,精度损失可控; - 减少迭代次数:加
--valid_iters 16(默认32),减少光流场更新轮数,速度接近翻倍; - 高分辨率图像:超过1000像素的图可加
--hiera 1开启分层推理,获得全分辨率深度但耗时更长。
遇到cuDNN error: CUDNN_STATUS_NOT_SUPPORTED大多提示显存溢出,请降低分辨率或更换更大显存的显卡;点云不完整时,检查--z_far、--remove_invisible、--denoise_cloud等参数。
进阶部署与典型应用:从TensorRT加速到落地场景 🌍
若追求极致性能,可走ONNX/TensorRT路线:该路线仅支持Docker方式部署,参考docker/目录构建镜像,再用scripts/make_onnx.py导出ONNX模型,通过trtexec转成FP16引擎后运行run_demo_tensorrt.py。官方在RTX 3090上实测获得约6倍加速。Jetson嵌入式平台的部署步骤见仓库中的readme_jetson.md。
凭借零样本特性,FoundationStereo在多个方向都有用武之地:自动驾驶中的实时测距与障碍感知、机器人抓取与导航、增强现实的虚实融合、无人机与卫星遥感的三维测绘。它的批量推理脚本run_demo_batch.py也支持多相机、多GPU并行处理大规模图像序列。
结语:动手试一次,收获远超想象 🎯
无需训练、无需微调,两条命令就能把一张立体图像对变成带真实尺度的三维点云——这就是零样本立体深度估计带给普通开发者的红利。建议您现在就用仓库自带的样例图像跑通demo,再换上自己拍摄的双目照片,亲手体会"二维进、三维出"的奇妙过程。如果在安装或运行时遇到问题,欢迎回到仓库查阅FAQ,或尝试官方推出的商业版本。
动手吧,您的第一张三维点云正在等待生成!
【免费下载链接】FoundationStereo[CVPR 2025 Best Paper Nomination] FoundationStereo: Zero-Shot Stereo Matching项目地址: https://gitcode.com/gh_mirrors/fo/FoundationStereo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考