[Paper]
We introduce WAFT-Stereo, a simple and effective warping-based algorithm for stereo matching. WAFT-Stereo demonstrates that cost volumes, a common design used in many leading methods, are not necessary for strong performance. WAFT-Stereo ranks first on ETH3D, KITTI and Middlebury public benchmarks, reducing the zero-shot error by 81% on ETH3D benchmark, while being 1.8-6.7x faster than competitive methods.
If you find WAFT-Stereo useful for your work, please consider citing our academic paper:
@misc{wang2026waftstereowarpingalonefieldtransforms,
title={WAFT-Stereo: Warping-Alone Field Transforms for Stereo Matching},
author={Yihan Wang and Jia Deng},
year={2026},
eprint={2603.24836},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2603.24836},
}
conda create --name waft-stereo python=3.12
conda activate waft-stereo
pip install -r requirements.txtPlease also install xformers following instructions.
All experiments are driven by config files in configs/.
Current examples:
- Synthetic training:
configs/SynLarge/DAv2S-4.yamlconfigs/SynLarge/DAv2B-4.yamlconfigs/SynLarge/DAv2L-5.yaml
- Real-domain finetuning:
configs/Real/kitti.yamlconfigs/Real/middlebury.yaml
- Evaluation:
configs/eval/kitti2012.yamlconfigs/eval/kitti2015.yamlconfigs/eval/eth3d.yamlconfigs/eval/middlebury-Q.yaml
Please check README for datasets preparation.
Please check the link. We recommend using the checkpoints in the SynLarge folder for downstream applications due to their strong sim-to-real generalization. Several of our main results and demos are based on these checkpoints. For more details, please refer to the paper.
python main.py --num-gpus 8 --config-file configs/SynLarge/DAv2L-5.yamlpython main.py --num-gpus 1 --eval-only --config-file configs/eval/kitti2015.yaml --ckpt ckpts/SynLarge/DAv2L-5.pthValidation metrics are computed through eval_disp.
python submission.py --config-file configs/eval/eth3d.yaml --ckpt ckpts/SynLarge/DAv2L-5.pth --dataset eth3d --output eth3d_submission/Use profiler.py to inspect parameter count, forward MACs, and memory usage:
python profiler.py --config-file configs/SynLarge/DAv2L-5.yamlFor custom stereo pair visualization, please check the demo folder. You must comply with the NVIDIA license before using it.
Dataset inspection:
python view_dataset.py --dataset fsdThis project relies on code from existing repositories: BridgeDepth, FoundationStereo, RAFT-Stereo, MonSter++, Depth-Anything-V2 and DINOv3. We thank the original authors for their excellent work.
