bigshanedogg's picture
Upload Depth-Anything-V2-Base (transformers port, original code)
299b331 verified
|
Raw History Blame Contribute Delete
4.35 kB
---
license: cc-by-nc-4.0
library_name: transformers
base_model: depth-anything/Depth-Anything-V2-Base
tags:
- depth-anything-v2
- depth-estimation
pipeline_tag: depth-estimation
---
# Depth-Anything-V2-Base — transformers format (original code)
Unofficial transformers port of **Depth Anything V2** Base (`depth-anything/Depth-Anything-V2-Base`, `depth_anything_v2_vitb.pth`) that
runs the **original** code. Loads with `trust_remote_code`. `model.safetensors` holds the checkpoint's tensors under
their original names, converted from `.pth` (every tensor checked equal).
> **Not an official release.** Depth Anything V2 was created by Lihe Yang, Bingyi Kang, Zilong Huang, Zhen Zhao,
> Xiaogang Xu, Jiashi Feng and Hengshuang Zhao — https://github.com/DepthAnything/Depth-Anything-V2, paper
> *"Depth Anything V2"* (arXiv 2406.09414).
## What it is
`DepthAnythingV2ForDepthEstimation` holds the official `DepthAnythingV2`'s submodules (`pretrained`: DINOv2 ViT-B/14,
`depth_head`: DPT) and computes depth with that class's own `forward`, returning the standard `DepthEstimatorOutput`
(`predicted_depth`); the official `infer_image` and `image2tensor` are kept. Code vendored from
DepthAnything/Depth-Anything-V2 @ a561b849 into `dav2_dinov2.py` / `dav2_dpt.py` (relative depth) and
`dav2_metric_dinov2.py` / `dav2_metric_dpt.py` (metric_depth/); edits: imports, and `Block` → `NestedTensorBlock`
where the original imported `NestedTensorBlock as Block`. `DepthAnythingV2Processor` (`processing_depth_anything_v2.py`,
`processor_config.json`) wraps `DepthAnythingV2ImageProcessor`, the `image2tensor` transform.
transformers' own `DepthAnythingForDepthEstimation` (the `-hf` repos) is a re-implementation: on the same input it
matches the original only for square inputs; for non-square inputs its DINOv2 position-embedding interpolation differs
(0.8–1.9 % max relative depth difference measured on Small). This package runs the original modules instead.
Verified against the official code (same process, V100, 3 images incl. non-square): preprocessing, `predicted_depth`
(also as a tuple), the hidden states, `infer_image`, the processor's post-processing and fp16 autocast outputs are
**bit-identical**.
## Usage
```python
import torch
from PIL import Image
from transformers import AutoModelForDepthEstimation, AutoProcessor
model = AutoModelForDepthEstimation.from_pretrained("Depth-Anything-V2-Base", trust_remote_code=True).eval().cuda()
processor = AutoProcessor.from_pretrained("Depth-Anything-V2-Base", trust_remote_code=True)
image = Image.open("image.jpg") # or a path (read with cv2, as the original scripts)
inputs = processor(images=image, return_tensors="pt").to("cuda")
with torch.no_grad():
outputs = model(**inputs) # outputs.predicted_depth: (1, H', W') relative inverse depth
depth = processor.post_process_depth_estimation(outputs, target_sizes=[image.size[::-1]])[0]["predicted_depth"]
# or, exactly as the original scripts: model.infer_image(cv2.imread("image.jpg"))
```
- `AutoModel` loads the same class. `output_hidden_states=True` adds the DINOv2 features the DPT head reads; `return_dict=False` returns a tuple.
- `post_process_depth_estimation` resizes as the original `infer_image` (bilinear, `align_corners=True`), not with transformers' bicubic.
Runtime packages beyond torch / transformers: `opencv-python`, `torchvision` (as the original).
## Licensing
- Weights (`depth-anything/Depth-Anything-V2-Base`): **CC-BY-NC-4.0** (non-commercial) — [`LICENSE`](LICENSE).
- Code (vendored files and the port): **Apache-2.0** — [`LICENSE.code`](LICENSE.code).
- Attribution, sources and the changes made here: [`NOTICE`](NOTICE).
## Citation
If you use this model, please cite the original work, as its authors ask:
```bibtex
@article{depth_anything_v2,
title={Depth Anything V2},
author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Zhao, Zhen and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
journal={arXiv:2406.09414},
year={2024}
}
@inproceedings{depth_anything_v1,
title={Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data},
author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
booktitle={CVPR},
year={2024}
}
```