Models · Stereo matching

AANet

A stereo network that aggregates matching costs with sparse deformable sampling across scales, trained on synthetic SceneFlow data. Commercially usable.

Commercial use: yes.

variantinputbackendtime (ms)peak memory (MiB, allocated / reserved)
aanet-sceneflowMiddlebury 2014 half (994x1482)original (fp32)
original
portable
kernels
portable + torch.compile
TensorRT fp16
289
178
140
101
91.8
91.2
1785 / 1962
1000 / 1126
845 / 986
536 / 644
754 / 928
482 (engine)
aanet-plus-sceneflowMiddlebury 2014 half (994x1482)original (fp32)
original
portable
kernels
263
194
159
88.9
3618 / 3896
3652 / 3784
1142 / 1278
813 / 920
Details
  • Original code: https://github.com/haofeixu/aanet at 8d0d747e69bb
  • Code licence: Apache-2.0 (permissive); files: LICENSE
  • Weights licence: Apache-2.0 (assumed from code)
  • Licence evidence: https://github.com/haofeixu/aanet/blob/8d0d747e69bbdba43e2578b60ad7df63ba7fdac2/LICENSE
  • Training data: Freiburg SceneFlow (FlyingThings3D, Driving, Monkaa)
  • Kernel libraries: deform_conv, igev, cutlass_conv, cudnn_hacc
  • Variants: aanet-sceneflow, aanet-plus-sceneflow
  • Outputs: disparity
  • Input size:
    • aanet-sceneflow: any H x W >= 48, padded to a multiple of 48
    • aanet-plus-sceneflow: any H x W >= 96, padded to a multiple of 96
  • Tested up to (portable, fp16, RTX 5060 Ti 16 GB): aanet-sceneflow 3000x4000 (9.4 GiB peak allocated, 12.5 reserved); aanet-plus-sceneflow 1024x2048 (7.1 GiB peak allocated, 8.1 reserved)
  • aanet-sceneflow 994x1482, first call: portable + torch.compile 80 s (cold Inductor cache), TensorRT fp16 211 s (ONNX + engine).
  • aanet-sceneflow original (fp32) 994x1482: deformable conv via torchvision.ops.deform_conv2d (original CUDA extension not built)
  • aanet-sceneflow original 994x1482: torch.autocast(fp16) around the forward; deformable conv via torchvision.ops.deform_conv2d (original CUDA extension not built)
  • aanet-plus-sceneflow original (fp32) 994x1482: deformable conv via torchvision.ops.deform_conv2d (original CUDA extension not built)
  • aanet-plus-sceneflow original 994x1482: torch.autocast(fp16) around the forward; deformable conv via torchvision.ops.deform_conv2d (original CUDA extension not built)
  • aanet-sceneflow load / first call: original 0.12 s / 0.067 s (375x1242), portable 0.19 s / 0.143† s, kernels 0.27† s / 0.101† s
  • aanet-plus-sceneflow load / first call: original 0.15 s / 0.701 s (375x1242), portable 0.16 s / 0.166† s, kernels 0.2† s / 0.09† 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
aanet-sceneflowETH3D two-view train, bad > 1 px % / EPE14.64 / 0.69714.63 / 0.69714.63 / 0.69714.64 / 0.698
aanet-sceneflowMiddlebury 2014 trainingH, bad > 2 px % / EPE32.15 / 6.30532.15 / 6.30132.16 / 6.30132.16 / 6.303
aanet-plus-sceneflowETH3D two-view train, bad > 1 px % / EPE18.48 / 0.81118.50 / 0.81218.50 / 0.81118.50 / 0.812
aanet-plus-sceneflowMiddlebury 2014 trainingH, bad > 2 px % / EPE29.84 / 6.23729.85 / 6.23629.86 / 6.23729.86 / 6.232

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
aanet-sceneflow0.00403 / 0.04845RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, deform_conv@a38662ea1bfc:sm_120, igev@f075827d68c6:sm_120
aanet-plus-sceneflow0.00295 / 0.02185RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, deform_conv@a38662ea1bfc:sm_120, igev@f075827d68c6:sm_120

Limitations

  • Only the SceneFlow checkpoints of AANet and AANet+ are included; the original code's KITTI fine-tunes are not.
  • At 375x1242 AANet is launch-bound: portable is about as fast as the original code. At 994x1482 portable is faster but allocates more memory.