See our collection for all versions of Depth Anything V2.
Run Depth Anything V2 with Keras 3: JAX, PyTorch, or TensorFlow
zeromodels/depth_anything_v2_metric_indoor_small
Paper: Depth Anything V2 (arXiv:2406.09414) · HF Papers
Depth Anything V2 keeps V1's architecture and improves data (synthetic labels plus large-scale pseudo-labeling). Relative heads return unitless inverse depth; metric indoor/outdoor heads return metres.
For more details on the model, please go to the upstream model card.
Pure-Keras 3 conversion of depth-anything/Depth-Anything-V2-Metric-Indoor-Small-hf for zeromodels. One implementation runs unmodified on TensorFlow / Torch / JAX.
This is a monocular depth checkpoint (DepthAnythingV2DepthEstimation, metric indoor (20m)).
✨ Quick start
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
from PIL import Image
from zeromodels.models.depth_anything_v2 import DepthAnythingV2DepthEstimation, DepthAnythingV2ImageProcessor
model = DepthAnythingV2DepthEstimation.from_weights("zeromodels/depth_anything_v2_metric_indoor_small")
processor = DepthAnythingV2ImageProcessor.from_weights("zeromodels/depth_anything_v2_metric_indoor_small")
image = Image.open("your_image.jpg").convert("RGB")
output = model(processor(image)["pixel_values"], training=False)
depth = processor.post_process_depth_estimation(
output, original_size=(image.height, image.width)
)
print(depth.shape)
Load any Depth Anything V2 variant the same way with from_weights("zeromodels/<variant>"):
| Variant | Hub | Output |
|---|---|---|
depth_anything_v2_small |
zeromodels/depth_anything_v2_small |
relative |
depth_anything_v2_base |
zeromodels/depth_anything_v2_base |
relative |
depth_anything_v2_large |
zeromodels/depth_anything_v2_large |
relative |
depth_anything_v2_metric_indoor_small |
zeromodels/depth_anything_v2_metric_indoor_small |
metric indoor |
depth_anything_v2_metric_indoor_base |
zeromodels/depth_anything_v2_metric_indoor_base |
metric indoor |
depth_anything_v2_metric_indoor_large |
zeromodels/depth_anything_v2_metric_indoor_large |
metric indoor |
depth_anything_v2_metric_outdoor_small |
zeromodels/depth_anything_v2_metric_outdoor_small |
metric outdoor |
depth_anything_v2_metric_outdoor_base |
zeromodels/depth_anything_v2_metric_outdoor_base |
metric outdoor |
depth_anything_v2_metric_outdoor_large |
zeromodels/depth_anything_v2_metric_outdoor_large |
metric outdoor |
Tips
- Set
KERAS_BACKENDbefore importing Keras / zeromodels. - Indoor and outdoor metric heads are not interchangeable.
- See Depth Anything V2 docs and Loading Weights.
- Community / upstream weights:
DepthAnythingV2DepthEstimation.from_weights("hf:depth-anything/Depth-Anything-V2-Metric-Indoor-Small-hf").
Special Thanks
A huge thank you to the Depth Anything authors for creating and releasing these models.
License: Apache 2.0.