Models · Monocular depth

UniK3D

UniK3D: metric 3D from one image for any camera type, using a spherical-harmonic ray model. Non-commercial licence.

Commercial use: no (code: CC-BY-NC-SA-4.0 (noncommercial); weights: CC-BY-NC-SA-4.0 (assumed from code)).

variantinputbackendtime (ms)peak memory (MiB, allocated / reserved)
unik3d-vitlMiddlebury 2014 half (994x1482)original (fp32)
original
portable
kernels
portable + torch.compile
TensorRT fp16
134
134
108
62.9
94.4
58.0
3307 / 3570
3307 / 3570
1219 / 1492
1166 / 1266
1258 / 1312
846 (engine)
Details
  • Original code: https://github.com/lpiccinelli-eth/UniK3D at 29f7862
  • Code licence: CC-BY-NC-SA-4.0 (noncommercial); files: LICENSE
  • Weights licence: CC-BY-NC-SA-4.0 (assumed from code)
  • Licence evidence: https://github.com/lpiccinelli-eth/UniK3D/blob/29f7862f3c3ee79c53ef0153dfc901ce511df575/LICENSE
  • Training data: Mixture of public metric-depth datasets (pinhole, fisheye and panoramic cameras) per the UniK3D paper (arXiv 2503.16591)
  • Options: resolution_level = 9 (0 to 9), confidence = True
  • Kernel libraries: fastbb, dpt_fused
  • Variants: unik3d-vitl
  • Outputs: depth, points, confidence; kind: metric
  • Input size: any H x W >= 8, resized or padded inside the model (ViT patch 14)
  • Tested up to (portable, fp16, RTX 5060 Ti 16 GB): unik3d-vitl 3000x4000 (2.2 GiB peak allocated, 2.4 reserved)
  • unik3d-vitl 994x1482, first call: portable + torch.compile 33 s (cold Inductor cache), TensorRT fp16 105 s (ONNX + engine).
  • unik3d-vitl original 994x1482: torch.autocast(fp16) around the forward
  • unik3d-vitl load / first call: original 7.28 s / 0.575 s, portable 4.16 s / 0.136 s, kernels 0.84† s / 0.067 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

AbsRel / delta1 after a least-squares scale + shift fit (in disparity space for inverse-depth models), mean over images. Original = the original code named under Details, same checkpoint and protocol.

variantdatasetoriginal fp32original fp16portablekernelsnote
unik3d-vitlNYUv2 test, AbsRel / delta10.0346 / 0.98430.0346 / 0.98430.0346 / 0.98430.0346 / 0.9843
unik3d-vitliBims-1, AbsRel / delta10.0277 / 0.98660.0277 / 0.98660.0277 / 0.98660.0277 / 0.9866
unik3d-vitlETH3D two-view train left, AbsRel / delta10.0630 / 0.96240.0630 / 0.96240.0630 / 0.96260.0630 / 0.9628possibly in the training data
unik3d-vitlMiddlebury 2014 trainingH left, AbsRel / delta10.0210 / 0.99660.0210 / 0.99660.0210 / 0.99660.0210 / 0.9966possibly in the training data

Measured on NVIDIA GeForce RTX 5060 Ti, torch 2.14.1+cu130, fastforks 939adfe8, 2026-11-06.

Parity

CPU, float32: max |diff| <= 0.002 vs the original. GPU, float16 (the default), portable and kernels: mean |diff| <= 1 % and p99 <= 2 % of the reference's median |value| (absolute error of the output depth).

variantkernels error vs original, mean / p99GPU, torchkernels used
unik3d-vitl0.00257 / 0.00355RTX 5060 Ti, torch 2.14.1+cu130dpt_fused@48e0065bb7cf:sm_120, fastbb@7d058322634d:sm_120