Skip to content

princeton-vl/WAFT-Stereo

Repository files navigation

WAFT-Stereo

[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.

demo

If you find WAFT-Stereo useful for your work, please consider citing our academic paper:

Yihan Wang, Jia Deng

@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}, 
}

Installation

conda create --name waft-stereo python=3.12
conda activate waft-stereo
pip install -r requirements.txt

Please also install xformers following instructions.

Configs

All experiments are driven by config files in configs/.

Current examples:

  • Synthetic training:
    • configs/SynLarge/DAv2S-4.yaml
    • configs/SynLarge/DAv2B-4.yaml
    • configs/SynLarge/DAv2L-5.yaml
  • Real-domain finetuning:
    • configs/Real/kitti.yaml
    • configs/Real/middlebury.yaml
  • Evaluation:
    • configs/eval/kitti2012.yaml
    • configs/eval/kitti2015.yaml
    • configs/eval/eth3d.yaml
    • configs/eval/middlebury-Q.yaml

Datasets

Please check README for datasets preparation.

Weights (on Huggingface)

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.

Training

python main.py --num-gpus 8 --config-file configs/SynLarge/DAv2L-5.yaml

Evaluation

python main.py --num-gpus 1 --eval-only --config-file configs/eval/kitti2015.yaml --ckpt ckpts/SynLarge/DAv2L-5.pth

Validation metrics are computed through eval_disp.

Submissions

python submission.py --config-file configs/eval/eth3d.yaml --ckpt ckpts/SynLarge/DAv2L-5.pth --dataset eth3d --output eth3d_submission/

Profiling

Use profiler.py to inspect parameter count, forward MACs, and memory usage:

python profiler.py --config-file configs/SynLarge/DAv2L-5.yaml

Visualization

For 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 fsd

Acknowledgments

This 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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages