Intrinsics-free metric monocular depth (UniDepth V2): one forward over an Image jointly recovers metric depth and camera intrinsics, emitting a deploy-time-resolved MetricDepthMap, CameraIntrinsics, or a camera-frame PointCloud.
Typical backends
A single uncalibrated photo stream is turned into absolute metric depth and shipped as structured data over HTTP for measurement.
The recovered intrinsics arm is streamed from an HTTP image source to a JSON sink to bootstrap calibration for an uncalibrated camera.
Caveats
- I/O contractExactly one arm is produced, fixed at deploy time by the connected consumer; fan into multiple instances if a graph needs more than one of the depth, intrinsics, or point-cloud arms.
- AccuracyDepth is zero-shot absolute metric depth and the intrinsics are recovered jointly, so no calibration is needed upstream; the
CameraIntrinsics arm is the full {fx, fy, cx, cy, skew, distortion} record but UniDepth recovers a pure pinhole K, so skew is zero and the distortion vector is empty; the PointCloud arm is expressed in the camera frame, not a world frame. - Hard constraintThe UniDepth checkpoint is bound to the worker as a local artifact and loaded offline at startup; there is no download at runtime, so a cold container needs no outbound network before the first frame is served.
- State lifetimeThe recompute cadence is configurable: unset recomputes every frame, zero computes once then frees the model and replays that result forever, and a positive value recomputes every N seconds, freeing the model between passes.
- Parameter interactionThe processing-resolution level bounds the megapixel area the backbone runs at, independent of the input frame size: lower values cap GPU memory and latency so an oversized frame still fits, higher values keep more edge detail; the result is upsampled back to the native input resolution.
- CostThe ViT-L backbone strongly prefers a GPU; a cuda device silently falls back to CPU when none is visible, but CPU inference is impractically slow.
- State lifetimeAll configuration is captured once at startup; runtime changes have no effect and require a redeploy.