File size: 4,658 Bytes
7a655b1
 
76ea9eb
67e8621
81d1cc9
7a655b1
 
81d1cc9
67e8621
 
 
7a655b1
67e8621
 
7a655b1
 
be91c12
67e8621
 
 
be91c12
67e8621
81d1cc9
67e8621
 
 
659994d
 
67e8621
 
81d1cc9
67e8621
 
7a655b1
67e8621
7a655b1
 
67e8621
 
 
 
81d1cc9
67e8621
81d1cc9
 
67e8621
 
 
 
 
 
 
7a655b1
67e8621
81d1cc9
67e8621
 
 
81d1cc9
 
 
 
 
 
 
 
 
67e8621
 
 
81d1cc9
67e8621
81d1cc9
67e8621
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---
pipeline_tag: depth-estimation
license: cc-by-nc-4.0
base_model: depth-anything/Depth-Anything-V2-Base-hf
library_name: zeromodels
tags:
- keras
- zeromodels
- depth-anything-v2
- depth-estimation
- arxiv:2406.09414
- pytorch
- jax
- tf
---

## ***See [our collection](https://huggingface.co/collections/zeromodels/depth-anything-v1-and-v2-6a8eaf5352197613b1655ac5) for all versions of Depth Anything V2.***

# Run Depth Anything V2 with Keras 3: JAX, PyTorch, or TensorFlow

[![GitHub](https://img.shields.io/badge/GitHub-ZeroModels-black?logo=github)](https://github.com/IMvision12/ZeroModels) [![Docs](https://img.shields.io/badge/Docs-Depth--Anything--V2-blue)](https://imvision12.github.io/ZeroModels/depth_anything_v2/) [![Collection](https://img.shields.io/badge/HF-Depth--Anything--V2%20collection-yellow)](https://huggingface.co/collections/zeromodels/depth-anything-v1-and-v2-6a8eaf5352197613b1655ac5)

# zeromodels/depth_anything_v2_base

Paper: [Depth Anything V2 (arXiv:2406.09414)](https://arxiv.org/abs/2406.09414) · [HF Papers](https://huggingface.co/papers/2406.09414)

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](https://huggingface.co/depth-anything/Depth-Anything-V2-Base-hf).

Pure-**Keras 3** conversion of [`depth-anything/Depth-Anything-V2-Base-hf`](https://huggingface.co/depth-anything/Depth-Anything-V2-Base-hf) for [zeromodels](https://github.com/IMvision12/ZeroModels). One implementation runs unmodified on **TensorFlow / Torch / JAX**.

This is a **monocular depth** checkpoint (`DepthAnythingV2DepthEstimation`, relative).

## ✨ Quick start

```python
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_base")
processor = DepthAnythingV2ImageProcessor.from_weights("zeromodels/depth_anything_v2_base")

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`](https://huggingface.co/zeromodels/depth_anything_v2_small) | relative |
| `depth_anything_v2_base` | [`zeromodels/depth_anything_v2_base`](https://huggingface.co/zeromodels/depth_anything_v2_base) | relative |
| `depth_anything_v2_large` | [`zeromodels/depth_anything_v2_large`](https://huggingface.co/zeromodels/depth_anything_v2_large) | relative |
| `depth_anything_v2_metric_indoor_small` | [`zeromodels/depth_anything_v2_metric_indoor_small`](https://huggingface.co/zeromodels/depth_anything_v2_metric_indoor_small) | metric indoor |
| `depth_anything_v2_metric_indoor_base` | [`zeromodels/depth_anything_v2_metric_indoor_base`](https://huggingface.co/zeromodels/depth_anything_v2_metric_indoor_base) | metric indoor |
| `depth_anything_v2_metric_indoor_large` | [`zeromodels/depth_anything_v2_metric_indoor_large`](https://huggingface.co/zeromodels/depth_anything_v2_metric_indoor_large) | metric indoor |
| `depth_anything_v2_metric_outdoor_small` | [`zeromodels/depth_anything_v2_metric_outdoor_small`](https://huggingface.co/zeromodels/depth_anything_v2_metric_outdoor_small) | metric outdoor |
| `depth_anything_v2_metric_outdoor_base` | [`zeromodels/depth_anything_v2_metric_outdoor_base`](https://huggingface.co/zeromodels/depth_anything_v2_metric_outdoor_base) | metric outdoor |
| `depth_anything_v2_metric_outdoor_large` | [`zeromodels/depth_anything_v2_metric_outdoor_large`](https://huggingface.co/zeromodels/depth_anything_v2_metric_outdoor_large) | metric outdoor |

## Tips

- Set `KERAS_BACKEND` **before** importing Keras / zeromodels.
- Indoor and outdoor metric heads are not interchangeable.
- See [Depth Anything V2 docs]({DOCS_URL}) and [Loading Weights](https://imvision12.github.io/ZeroModels/loading_weights/).
- Community / upstream weights: `DepthAnythingV2DepthEstimation.from_weights("hf:depth-anything/Depth-Anything-V2-Base-hf")`.

## Special Thanks

A huge thank you to the Depth Anything authors for creating and releasing these models.

License: Apache 2.0.