depth anything small hf

提供商LiheYoung
分类depth-estimation
许可证apache-2.0
下载量57.0K
星标0

简介

Depth Anything Small 是一个轻量级的单目深度估计模型,旨在从单张 RGB 图像中精准推断场景的深度信息。相比于大型模型,它在保持极高泛化能力的同时,大幅降低了计算开销,能够快速生成高质量的深度图。对于开发者而言,它非常适合集成到需要实时性或端侧运行的 AI 应用中,如 3D 场景重建、虚拟背景虚化或简单的视觉避障,上手门槛低,且能与多种图像处理管线无缝衔接。

核心亮点

  • 单图即可快速生成高精度深度图
  • 模型体积小,推理速度快,适合端侧部署
  • 泛化能力强,适配多种复杂自然场景
  • Apache-2.0 协议,商业化集成无压力

使用方法

安装依赖
# 安装 Hugging Face transformers
pip install transformers torch
SDK 使用
# 使用 transformers 加载模型
from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained("LiheYoung/depth-anything-small-hf")
tokenizer = AutoTokenizer.from_pretrained("LiheYoung/depth-anything-small-hf")

Hugging Face 下载

我们推荐使用命令行或者 Hugging Face Hub SDK 来进行模型的下载。

操作指引:在下载前,请先通过如下命令安装 huggingface_hub:

操作指引
pip install -U huggingface_hub

命令行下载

下载完整模型库

下载完整模型库
huggingface-cli download LiheYoung/depth-anything-small-hf

下载单个文件到指定本地文件夹(以下载 config.json 到当前路径下 ./dir 目录为例)

下载单个文件到指定本地文件夹(以下载 config.json 到当前路径下 ./dir 目录为例)
huggingface-cli download LiheYoung/depth-anything-small-hf config.json --local-dir ./dir

更多命令行下载选项,可参见官方文档

SDK 下载

SDK 下载
# 模型下载
from huggingface_hub import snapshot_download
model_dir = snapshot_download('LiheYoung/depth-anything-small-hf')

Git 下载

请确保 lfs 已经被正确安装

Git 下载
git lfs install
git clone https://huggingface.co/LiheYoung/depth-anything-small-hf

如果您希望跳过 lfs 大文件下载,可以使用如下命令

跳过 LFS
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/LiheYoung/depth-anything-small-hf

模型文件托管在 Hugging Face Hub,使用 HF CLI / SDK / Git 直接下载,不经过本站。

PyTorch / Transformers 使用

安装 Transformers

安装 Transformers
pip install -U transformers torch

模型加载和推理

模型加载和推理
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained('LiheYoung/depth-anything-small-hf')
tokenizer = AutoTokenizer.from_pretrained('LiheYoung/depth-anything-small-hf')

完整文档

来源: HuggingFace

---
license: apache-2.0
tags:

  • vision

pipeline_tag: depth-estimation
widget:
  • inference: false

---

Depth Anything (small-sized model, Transformers version)

Depth Anything model. It was introduced in the paper Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data by Lihe Yang et al. and first released in this repository.

Online demo is also provided.

Disclaimer: The team releasing Depth Anything did not write a model card for this model so this model card has been written by the Hugging Face team.

Model description

Depth Anything leverages the DPT architecture with a DINOv2 backbone.

The model is trained on ~62 million images, obtaining state-of-the-art results for both relative and absolute depth estimation.

<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/depth_anything_overview.jpg"
alt="drawing" width="600"/>

<small> Depth Anything overview. Taken from the <a href="https://arxiv.org/abs/2401.10891">original paper</a>.</small>

Intended uses & limitations

You can use the raw model for tasks like zero-shot depth estimation. See the model hub to look for
other versions on a task that interests you.

How to use

Here is how to use this model to perform zero-shot depth estimation:

python
from transformers import pipeline
from PIL import Image
import requests

load pipe

pipe = pipeline(task="depth-estimation", model="LiheYoung/depth-anything-small-hf")

load image

url = 'http://images.cocodataset.org/val2017/000000039769.jpg' image = Image.open(requests.get(url, stream=True).raw)

inference

depth = pipe(image)["depth"]

Alternatively, one can use the classes themselves:

python
from transformers import AutoImageProcessor, AutoModelForDepthEstimation
import torch
import numpy as np
from PIL import Image
import requests

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)

image_processor = AutoImageProcessor.from_pretrained("LiheYoung/depth-anything-small-hf")
model = AutoModelForDepthEstimation.from_pretrained("LiheYoung/depth-anything-small-hf")

prepare image for the model

inputs = image_processor(images=image, return_tensors="pt")

with torch.no_grad():
outputs = model(**inputs)
predicted_depth = outputs.predicted_depth

interpolate to original size

prediction = torch.nn.functional.interpolate( predicted_depth.unsqueeze(1), size=image.size[::-1], mode="bicubic", align_corners=False, )
For more code examples, we refer to the documentation.

BibTeX entry and citation info

bibtex
@misc{yang2024depth,
      title={Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data}, 
      author={Lihe Yang and Bingyi Kang and Zilong Huang and Xiaogang Xu and Jiashi Feng and Hengshuang Zhao},
      year={2024},
      eprint={2401.10891},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}