IGEV-Stereo
An iterative stereo network by Gangwei Xu et al. (geometry encoding volume with ConvGRU updates), with several fine-tuned checkpoints. Commercially usable.
Commercial use: yes.
| variant | input | backend | time (ms) | peak memory (MiB, allocated / reserved) |
|---|---|---|---|---|
igev-stereo-sceneflow | Middlebury 2014 half (994x1482) | original (fp32) original portable kernels | 1518 941 763 288 | 2886 / 3252 1789 / 1936 1237 / 1492 1113 / 1374 |
Details
- Original code: https://github.com/gangweix/IGEV at
4a3d937aab78 - Code licence: MIT (permissive); files:
LICENSE - Weights licence: MIT (assumed from code)
- Licence evidence: https://github.com/gangweix/IGEV/blob/4a3d937aab788b3ff3ed49b7b5c81340ab46a5eb/README.md#L17
- Training data: Freiburg SceneFlow (FlyingThings3D, Driving, Monkaa)
igev-stereo-middlebury: Middlebury submission modeligev-stereo-eth3d: ETH3D submission modeligev-stereo-kitti12: Freiburg SceneFlow (FlyingThings3D, Driving, Monkaa), KITTI stereo 2012 / 2015 (SceneFlow, then fine-tuned on KITTI (KITTI 2012 submission model))igev-stereo-kitti15: Freiburg SceneFlow (FlyingThings3D, Driving, Monkaa), KITTI stereo 2012 / 2015 (SceneFlow, then fine-tuned on KITTI (KITTI 2015 submission model))
- Options:
iters= 32 (>= 1) - Kernel libraries:
igev,cutlass_conv,cudnn_hacc - Variants:
igev-stereo-sceneflow,igev-stereo-middlebury,igev-stereo-eth3d,igev-stereo-kitti12,igev-stereo-kitti15 - Outputs: disparity
- Input size: any H x W >= 32, padded to a multiple of 32
- Tested up to (portable, fp16, RTX 5060 Ti 16 GB):
igev-stereo-sceneflow3000x4000 (10.3 GiB peak allocated, 14.0 reserved);igev-stereo-middlebury3000x4000 (10.3 GiB peak allocated, 14.0 reserved);igev-stereo-eth3d3000x4000 (10.3 GiB peak allocated, 14.0 reserved);igev-stereo-kitti123000x4000 (10.3 GiB peak allocated, 14.0 reserved);igev-stereo-kitti153000x4000 (10.3 GiB peak allocated, 14.0 reserved) igev-stereo-middlebury,igev-stereo-eth3d,igev-stereo-kitti12,igev-stereo-kitti15: same network and settings asigev-stereo-sceneflow, measured once (rows not repeated).igev-stereo-scenefloworiginal (fp32) 994x1482, original 994x1482: timed with igev-stereo-eth3d (same network, other weights)igev-stereo-sceneflowportable 994x1482, kernels 994x1482: measured on igev-stereo-eth3d (same architecture, other checkpoint)igev-stereo-sceneflowload / first call: original 0.32 s / 2.565 s (375x1242), portable 0.47 s / 0.763† s, kernels 0.15† s / 0.286† sigev-stereo-middleburyload / first call: original 0.32 s / 2.565 s (375x1242), portable 0.47 s / 0.763† s, kernels 0.15† s / 0.286† sigev-stereo-eth3dload / first call: original 0.32 s / 2.565 s (375x1242), portable 0.47 s / 0.763† s, kernels 0.15† s / 0.286† sigev-stereo-kitti12load / first call: original 0.32 s / 2.565 s (375x1242), portable 0.47 s / 0.763† s, kernels 0.15† s / 0.286† sigev-stereo-kitti15load / first call: original 0.32 s / 2.565 s (375x1242), portable 0.47 s / 0.763† s, kernels 0.15† s / 0.286† s- † measured in the speed sweep after the portable load (or an earlier size) in the same process: file cache and kernels are warm, so the time is lower than a fresh start.
- Protocol, median of 5 after 3 warm-up, uint8 CUDA input (synthetic for bench_inputs sizes), card defaults; gc before each load; peak = max over the first call and the timed calls
Measured
Original = the original code named under Details, same checkpoint and protocol.
| variant | dataset | original fp32 | original fp16 | portable | kernels | note |
|---|---|---|---|---|---|---|
igev-stereo-sceneflow | ETH3D two-view train, bad > 1 px % / EPE | 4.05 / 0.333 | 4.04 / 0.333 | 4.06 / 0.333 | 4.04 / 0.333 | |
igev-stereo-sceneflow | Middlebury 2014 trainingH, bad > 2 px % / EPE | 11.92 / 2.635 | 11.89 / 2.631 | 11.89 / 2.631 | 11.93 / 2.637 | |
igev-stereo-middlebury | ETH3D two-view train, bad > 1 px % / EPE | 19.81 / 0.796 | 19.81 / 0.797 | 19.81 / 0.796 | 19.80 / 0.797 | possibly in the training data |
igev-stereo-middlebury | Middlebury 2014 trainingH, bad > 2 px % / EPE | 5.44 / 0.869 | 5.45 / 0.866 | 5.45 / 0.870 | 5.48 / 0.871 | possibly in the training data |
igev-stereo-eth3d | ETH3D two-view train, bad > 1 px % / EPE | 0.56 / 0.128 | 0.57 / 0.128 | 0.55 / 0.128 | 0.56 / 0.128 | possibly in the training data |
igev-stereo-eth3d | Middlebury 2014 trainingH, bad > 2 px % / EPE | 11.86 / 3.019 | 11.86 / 3.040 | 11.88 / 3.046 | 11.90 / 3.036 | possibly in the training data |
igev-stereo-kitti12 | ETH3D two-view train, bad > 1 px % / EPE | 26.02 / 1.701 | 26.04 / 1.728 | 26.07 / 1.733 | 26.02 / 1.735 | |
igev-stereo-kitti12 | Middlebury 2014 trainingH, bad > 2 px % / EPE | 17.30 / 4.653 | 17.33 / 4.636 | 17.28 / 4.638 | 17.33 / 4.648 | |
igev-stereo-kitti15 | ETH3D two-view train, bad > 1 px % / EPE | 24.64 / 1.722 | 24.64 / 1.726 | 24.63 / 1.740 | 24.63 / 1.734 | |
igev-stereo-kitti15 | Middlebury 2014 trainingH, bad > 2 px % / EPE | 19.32 / 4.395 | 19.29 / 4.400 | 19.35 / 4.401 | 19.32 / 4.407 |
Measured on NVIDIA GeForce RTX 5060 Ti, torch 2.14.1+cu130, fastforks 468fba10, 2026-11-05.
Parity
CPU, float32: max |diff| <= 0.002 vs the original. GPU, float16 (the default), portable and kernels: mean |diff| <= 0.02 px and p99 <= 0.25 px.
| variant | kernels error vs original, mean / p99 | GPU, torch | kernels used |
|---|---|---|---|
igev-stereo-sceneflow | 0.00359 / 0.06778 | RTX 5060 Ti, torch 2.14.1+cu130 | cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120 |
igev-stereo-middlebury | 0.00113 / 0.00579 | RTX 5060 Ti, torch 2.14.1+cu130 | cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120 |
igev-stereo-eth3d | 0.00166 / 0.00658 | RTX 5060 Ti, torch 2.14.1+cu130 | cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120 |
igev-stereo-kitti12 | 0.00108 / 0.00506 | RTX 5060 Ti, torch 2.14.1+cu130 | cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120 |
igev-stereo-kitti15 | 0.00081 / 0.00279 | RTX 5060 Ti, torch 2.14.1+cu130 | cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120 |
Limitations
- The original code's dtu.ckpt (IGEV-MVS, another architecture) is not included.