Loading...

文章背景图

Depth Anything:单目图像深度估计模型|部署与使用全指南

2026-11-02
0
- 字
- 分钟
|

图1 Depth Anything 单目深度估计示例(官方 README 效果图)

Depth Anything:单目图像深度估计模型|部署与使用全指南

项目仓库: https://github.com/LiheYoung/Depth-Anything

论文:CVPR 2024 · 维护方:HKU / TikTok · 语言:Python · 框架:PyTorch · 形态:命令行 + Python 库 · 最新版本:Depth Anything V2(独立仓库)


1 项目简介

Depth Anything 是一个单目深度估计模型:输入一张普通 RGB 图片,输出对应的相对深度图(越近越亮、越远越暗)。它在 150 万张标注图 + 6200 万张无标注图上训练,在 KITTI、NYUv2、Sintel 等多个基准上超过之前的 MiDaS v3.1。

项目提供三种尺寸:Small(24.8M)、Base(97.5M)、Large(335.3M);并提供基于 Depth Anything 重训的 ControlNet 深度控制模型、度量深度(metric depth)微调版、以及下游语义分割能力。官方已发布更新版本 Depth Anything V2。

1.1 核心信息一览

项目项 内容
项目名称 Depth Anything
仓库地址 github.com/LiheYoung/Depth-Anything
项目定位 鲁棒的单目深度估计模型
论文 CVPR 2024,arXiv:2401.10891
模型权重 Hugging Face Spaces
在线 Demo huggingface.co/spaces/LiheYoung/Depth-Anything
形态 命令行脚本 + Python 库
端口 无

1.2 适用场景

  • 给图像/视频生成深度图,作为 ControlNet 深度条件输入。
  • 3D 摄影、景深合成、AR 背景虚化。
  • 作为下游视觉任务(语义分割等)的预训练编码器。

1.3 能力边界(官方口径)

  • 基础版输出的是相对深度,不是绝对距离(米);需要绝对距离请用 metric_depth/ 目录下的 NYUv2 / KITTI 微调版。
  • 官方提供的推理时间(V100/A100)不含前后处理;RTX 4090 + TensorRT 含前后处理。

2 功能特性

  • 相对深度估计:任意输入图输出鲁棒深度图。
  • 度量深度:NYUv2 / KITTI 微调版支持 in-domain 与 zero-shot 度量深度。
  • 深度控制 ControlNet:比 MiDaS 版更精准的深度条件。
  • 视频深度可视化:run_video.py 支持视频逐帧深度。
  • 多尺寸:vits / vitb / vitl 三种。
  • ONNX / TensorRT:社区已提供导出。
  • Transformers 集成:Hugging Face Transformers 三行代码调用。

3 官方界面预览

官方在线 Demo:huggingface.co/spaces/LiheYoung/Depth-Anything。

4 官方跳转链接汇总

类别 链接 说明
仓库 github.com/LiheYoung/Depth-Anything 源码
项目主页 depth-anything.github.io 论文与示例
V2 仓库 Depth-Anything-V2 最新版
模型权重 checkpoints vits/vitb/vitl
在线 Demo Hugging Face Space 在线试玩
视频 Demo JohanDL/Depth-Anything-Video 视频深度

5 前置要求与服务器配置

5.1 软件前提

  • Python 3.8+、PyTorch。
  • 克隆仓库后 pip install -r requirements.txt。

5.2 硬件建议

模型 参数量 推理时间(V100)
Small (vits) 24.8M 12 ms
Base (vitb) 97.5M 13 ms
Large (vitl) 335.3M 20 ms

GPU 显存需求低(几百 MB 即可),CPU 也可跑。

6 方式一:官方脚本推理(推荐)

git clone https://github.com/LiheYoung/Depth-Anything
cd Depth-Anything
pip install -r requirements.txt

# 对图片目录跑深度估计
python run.py --encoder vitl --img-path assets/examples --outdir depth_vis

# 只输出预测深度图
python run.py --encoder vitl --img-path ./your_images --outdir depth_out --pred-only

# 灰度深度图(不加色板)
python run.py --encoder vitl --img-path ./your_images --outdir depth_out --grayscale

参数:

  • --encoder:vits / vitb / vitl。
  • --img-path:图片目录 / 单图 / 文本文件。
  • --outdir:输出目录。
  • --pred-only:只保存深度图。
  • --grayscale:灰度深度图。

7 方式二:Python 库 / Transformers 调用

from depth_anything.dpt import DepthAnything

encoder = 'vits'  # 或 'vitb' / 'vitl'
depth_anything = DepthAnything.from_pretrained(
    'LiheYoung/depth_anything_{:}14'.format(encoder)
)

无网络环境可手动下载 checkpoint 后本地加载:

model_configs = {
    'vitl': {'encoder': 'vitl', 'features': 256, 'out_channels': [256, 512, 1024, 1024]},
    'vitb': {'encoder': 'vitb', 'features': 128, 'out_channels': [96, 192, 384, 768]},
    'vits': {'encoder': 'vits', 'features': 64, 'out_channels': [48, 96, 192, 384]}
}
depth_anything = DepthAnything(model_configs['vitl'])
depth_anything.load_state_dict(torch.load('./checkpoints/depth_anything_vitl14.pth'))

视频深度:

python run_video.py --encoder vitl --img-path your_video.mp4 --outdir video_depth

8 配置项

参数 说明
--encoder vits / vitb / vitl,模型规模
--pred-only 只输出深度图,不并排对比
--grayscale 灰度而非彩色深度图

9 常用运维命令

# 查看 GPU
nvidia-smi

# 更新代码
git pull

# 查看输出
ls -lh depth_vis/

10 常见故障排查

  • 模型加载失败 / 无网络:手动从 Hugging Face 下载 depth_anything_vitl14.pth 等权重,用本地加载方式。
  • 想输出绝对距离:基础模型是相对深度;用 metric_depth/ 目录下的 NYUv2 / KITTI 微调版。
  • 想接入 ComfyUI:社区已有 comfyui_controlnet_aux 集成。

11 风险与合规说明

  • 模型遵循仓库 LICENSE;商用前需核对。
  • 深度图是中间产物,不直接产生版权问题;但生成的下游图像版权归使用者。
  • 官方已发布 V2,新项目建议优先用 V2。

本文基于官方 README 整理,仅供学习与部署参考;以仓库最新说明为准。

评论交流

文章目录