InfiniDepth Depth Estimation
The depth node that asks 'how big?' instead of settling for 'how good?'
- model
- image
- depth_raw
- depth_colored
Every depth model you've used so far has one unspoken limitation: it makes a map at a fixed internal resolution, and if you want a bigger one you upscale after the fact. InfiniDepth Depth Estimation is the node that refuses to play that game. It's a wrapper around InfiniDepth (a CVPR 2026 model from Tianyu Li et al.) whose whole selling point is arbitrary-resolution depth - you ask for the map at whatever size you need, and the model samples it directly instead of you stretching a small one.
Where does that matter? Mostly when a depth map is going to be consumed at a specific size: feeding depth ControlNet at the exact resolution of your generation, or building a displacement map for a parallax pass where soft interpolation blur shows up as wobbling edges. If you just need a quick depth preview, honestly, Depth Anything V2 Large is still the ecosystem's default for a reason - it's light, fast, and everywhere. This is the heavier, newer alternative you reach for when you want the higher-res output, metric-scale grounding, and don't mind a fussier install.
How it works
The estimator resizes your input to a fixed 768×1024 working size internally, then does something clever: it runs MoGe-2 (Microsoft's geometry model) on the image to recover metric depth and camera intrinsics, and uses that to seed the InfiniDepth prediction. The depth is then sampled on a uniform query grid at the output resolution you chose - that sampling step is the "arbitrary resolution" trick. Your input resolution isn't the constraint; the grid you request is.
A couple of honest notes on what you get out. The node normalizes the depth map to 0–1 before emitting it, so depth_raw is relative depth, not meters - the metric recovery happens internally to keep the geometry consistent, it doesn't leak metric units to your wire. And while the upstream pipeline has a sky-mask stage, this node's code imports it but doesn't run it at this level, so don't assume sky is carved out for you.
The inputs that matter
- model - the
INFINIDEPTH_MODELfrom the Load InfiniDepth Model node. Wire it up first. - image - your input, any resolution. Batches work: it steps through each frame with a progress bar.
- output_resolution_mode - the one you'll actually touch:
original- match the input image's size. Sensible default.upsample- multiply the working size by upsample_ratio (1–8).specific- an exact output_height/output_width (both in 8px steps, up to 8192), handy for matching a target latent exactly.
Outputs
Two IMAGE outputs: depth_raw (grayscale, normalized 0–1) and depth_colored (a Spectral colormap for eyeballing). Both wire straight into a Preview Image, and depth_raw feeds directly into depth ControlNet or a parallax node - no conversion needed.
Installing it
This node ships in snomiao/ComfyUI-InfiniDepth, and it is not a one-click affair. ComfyUI Manager will grab the pack folder, but you also need the upstream InfiniDepth repo cloned, an INFINIDEPTH_ROOT environment variable pointing at it, git-installed deps, and checkpoints from HuggingFace. The full walkthrough lives on the Load InfiniDepth Model page - read it before you queue this node, because none of the two-node workflow runs without that setup.
Where people get burned
The usual suspects: forgetting that the output is normalized relative depth (don't go hunting for meter values), and underestimating the 768×1024 internal pass on CPU - the README is candid that CPU "works but is slow," and MPS on Apple Silicon is fine. If the node errors on load, it's almost always the setup upstream of it, not this node - start at the loader.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | INFINIDEPTH_MODEL | — | |
| image | IMAGE | — | |
| output_resolution_mode | COMBO | 3 options: upsample, original, specific | |
| upsample_ratio | INT | 11–8 | Scale factor when output_resolution_mode is 'upsample'. |
| output_height | INT | 76864–8192 | Height when output_resolution_mode is 'specific'. |
| output_width | INT | 102464–8192 | Width when output_resolution_mode is 'specific'. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| depth_raw | IMAGE | — |
| depth_colored | IMAGE | — |