Models · Stereo matching

DLNR

A stereo network in the RAFT-Stereo style with a decoupled LSTM and normalization refinement. Commercially usable.

Commercial use: yes.

variantinputbackendtime (ms)peak memory (MiB, allocated / reserved)
dlnr-sceneflowMiddlebury 2014 half (994x1482)original (fp32)
original
portable
kernels
portable + torch.compile
TensorRT fp16
978
598
398
214
301
241
3191 / 3608
3004 / 3552
2635 / 3142
1236 / 1606
1343 / 1672
1492 (engine)
Details
  • Original code: https://github.com/David-Zhao-1997/High-frequency-Stereo-Matching-Network at c10475fe30ff
  • Code licence: MIT (permissive); files: LICENSE
  • Weights licence: MIT (assumed from code)
  • Licence evidence: https://github.com/David-Zhao-1997/High-frequency-Stereo-Matching-Network/blob/c10475fe30ff198781ecc7c712c24c781ff05096/README.md#L84
  • Training data: Freiburg SceneFlow (FlyingThings3D, Driving, Monkaa)
    • dlnr-middlebury: Freiburg SceneFlow (FlyingThings3D, Driving, Monkaa), Middlebury stereo (2014) (SceneFlow, then fine-tuned on Middlebury (README; the training set is not stated))
  • Options: iters = 10 (>= 1)
  • Kernel libraries: raft, igev, cutlass_conv, cudnn_hacc, fastbb
  • Variants: dlnr-sceneflow, dlnr-middlebury
  • 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): dlnr-sceneflow 1988x2880 (10.1 GiB peak allocated, 12.7 reserved); dlnr-middlebury 1988x2880 (10.1 GiB peak allocated, 12.7 reserved)
  • dlnr-middlebury: same network and settings as dlnr-sceneflow, measured once (rows not repeated).
  • dlnr-sceneflow 994x1482, first call: portable + torch.compile 69 s (cold Inductor cache), TensorRT fp16 161 s (ONNX + engine).
  • dlnr-sceneflow load / first call: original 0.83 s / 1.712 s (375x1242), portable 0.63 s / 0.399† s, kernels 0.26† s / 0.213† s
  • dlnr-middlebury load / first call: original 0.83 s / 1.712 s (375x1242), portable 0.63 s / 0.399† s, kernels 0.26† s / 0.213† 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.

variantdatasetoriginal fp32original fp16portablekernelsnote
dlnr-sceneflowETH3D two-view train, bad > 1 px % / EPE30.26 / 5.93130.27 / 5.92430.26 / 5.93530.27 / 5.944
dlnr-sceneflowMiddlebury 2014 trainingH, bad > 2 px % / EPE11.42 / 1.65011.43 / 1.65011.42 / 1.65111.42 / 1.650
dlnr-middleburyETH3D two-view train, bad > 1 px % / EPE34.41 / 5.84534.41 / 5.85334.40 / 5.84834.38 / 5.868
dlnr-middleburyMiddlebury 2014 trainingH, bad > 2 px % / EPE7.17 / 0.9897.18 / 0.9887.18 / 0.9887.18 / 0.992trained on this dataset's public images; not a zero-shot result

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.

variantkernels error vs original, mean / p99GPU, torchkernels used
dlnr-sceneflow0.00216 / 0.03303RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, fastbb@7d058322634d:sm_120, igev@f075827d68c6:sm_120, raft@9524a68234cc:sm_120
dlnr-middlebury0.00161 / 0.02686RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, fastbb@7d058322634d:sm_120, igev@f075827d68c6:sm_120, raft@9524a68234cc:sm_120