Models · Stereo matching

MonSter++

The accuracy model of MonSter++, which combines mono depth and stereo matching; Autel Robotics and Huazhong University of Science and Technology. Non-commercial licence.

Commercial use: no (code: LicenseRef-noncommercial (noncommercial); weights: LicenseRef-noncommercial AND CC-BY-NC-4.0).

variantinputbackendtime (ms)peak memory (MiB, allocated / reserved)
monster-plusplus-mix-allMiddlebury 2014 half (994x1482)original (fp32)
original
portable
kernels
portable + torch.compile
TensorRT fp16
4339
4334
1633
698
1126
697
6382 / 6430
6382 / 6430
2583 / 2918
2438 / 2760
2328 / 2532
2642 (engine)
Details
  • Original code: https://github.com/Junda24/MonSter-plusplus at 9167101af8fb
  • Code licence: LicenseRef-noncommercial (noncommercial); files: LICENSE
  • Weights licence: LicenseRef-noncommercial AND CC-BY-NC-4.0
  • Licence evidence: https://github.com/Junda24/MonSter-plusplus/blob/9167101af8fbe93c706707daa7a8181089c8b1b4/LICENSE#L34
  • Training data: mix_all: 'all the datasets we collect over 2M image pairs' (README), not listed
  • Options: iters = 32 (>= 1)
  • Kernel libraries: igev, igevpp, cutlass_conv, cudnn_hacc, fastbb
  • Variants: monster-plusplus-mix-all
  • 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): monster-plusplus-mix-all 1988x2880 (7.7 GiB peak allocated, 9.6 reserved)
  • monster-plusplus-mix-all 994x1482, first call: portable + torch.compile 109 s (cold Inductor cache), TensorRT fp16 416 s (ONNX + engine).
  • monster-plusplus-mix-all load / first call: original 8.37 s / 1.233 s (375x1242), portable 2.45 s / 1.633† s, kernels 0.79† s / 0.698† 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
monster-plusplus-mix-allETH3D two-view train, bad > 1 px % / EPE1.08 / 0.1751.08 / 0.1751.08 / 0.1751.08 / 0.175possibly in the training data
monster-plusplus-mix-allMiddlebury 2014 trainingH, bad > 2 px % / EPE3.77 / 0.6303.78 / 0.6303.75 / 0.6303.75 / 0.630possibly in the training data

Measured on NVIDIA GeForce RTX 5060 Ti, torch 2.14.1+cu130, fastforks 468fba10, 2026-11-05.

Parity

CPU, float32: max |diff| <= 0.2 vs the original. GPU, float16 (the default), portable and kernels: mean |diff| <= 0.03 px and p99 <= 0.25 px.

variantkernels error vs original, mean / p99GPU, torchkernels used
monster-plusplus-mix-all0.02547 / 0.13171RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, fastbb@7d058322634d:sm_120, igev@f075827d68c6:sm_120, igevpp@df1bb4dbe09a:sm_120