Depth Pro
Apple's single-image model for metric depth and the camera focal length, at 1536x1536 internal resolution. Research-only licence.
Commercial use: no (weights: LicenseRef-research-only).
| variant | input | backend | time (ms) | peak memory (MiB, allocated / reserved) |
|---|---|---|---|---|
depth-pro | Middlebury 2014 half (994x1482) | original (fp32) original portable kernels portable + torch.compile TensorRT fp16 | 1776 569 518 271 488 299 | 8170 / 9020 3828 / 4294 3306 / 3498 3667 / 3778 3053 / 3198 2926 (engine) |
Details
- Original code: https://github.com/apple/ml-depth-pro at
9e65e4d - Code licence: LicenseRef-Apple-Sample-Code (permissive); files:
LICENSE - Weights licence: LicenseRef-research-only
- Licence evidence: https://github.com/apple/ml-depth-pro/blob/9e65e4d/README.md (License section: code and weights under LICENSE, the Apple sample-code licence) and https://huggingface.co/apple/DepthPro (license: apple-amlr, research use only); the stricter model-card terms are recorded for the weights
- Training data: Mixture of real and synthetic metric-depth datasets per the Depth Pro paper (Table 15); the list is not on the model card
- Licence note: The Apple sample-code licence and the model licence allow research use only.
- Kernel libraries:
fastbb,dpt_fused - Variants:
depth-pro - Outputs: depth, intrinsics; kind:
metric - Input size: any H x W >= 8, resized or padded inside the model (ViT patch 16)
- Tested up to (portable, fp16, RTX 5060 Ti 16 GB):
depth-pro3000x4000 (3.4 GiB peak allocated, 4.0 reserved) depth-pro994x1482, first call: portable + torch.compile 39 s (cold Inductor cache), TensorRT fp16 163 s (ONNX + engine).depth-prooriginal 994x1482: torch.autocast(fp16) around the forward; fp16 = original's own precision=float16 modeldepth-proload / first call: original 17.34 s / 0.745 s, portable 4.67 s / 0.584 s, kernels 1.11† s / 0.371 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.
| variant | dataset | original fp32 | original fp16 | portable | kernels | note |
|---|---|---|---|---|---|---|
depth-pro | NYUv2 test, AbsRel / delta1 | 0.0425 / 0.9810 | 0.0425 / 0.9810 | 0.0425 / 0.9810 | 0.0425 / 0.9810 | |
depth-pro | iBims-1, AbsRel / delta1 | 0.0353 / 0.9827 | 0.0353 / 0.9826 | 0.0353 / 0.9826 | 0.0353 / 0.9827 | |
depth-pro | ETH3D two-view train left, AbsRel / delta1 | 0.0651 / 0.9642 | 0.0652 / 0.9642 | 0.0652 / 0.9642 | 0.0656 / 0.9638 | possibly in the training data |
depth-pro | Middlebury 2014 trainingH left, AbsRel / delta1 | 0.0295 / 0.9966 | 0.0295 / 0.9966 | 0.0295 / 0.9966 | 0.0295 / 0.9966 | possibly 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.005 vs the original. GPU, float16 (the default), portable and kernels: mean |diff| <= 1 % and p99 <= 3 % of the reference's median |value| (absolute error of the output depth).
| variant | kernels error vs original, mean / p99 | GPU, torch | kernels used |
|---|---|---|---|
depth-pro | 0.00107 / 0.00197 | RTX 5060 Ti, torch 2.14.1+cu130 | dpt_fused@48e0065bb7cf:sm_120, fastbb@7d058322634d:sm_120 |