--- 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} } ```