Depth-Anything-3 README

The project's README from github.com/ByteDance-Seed/Depth-Anything-3. As one markdown file: README.md.

Depth Anything 3: Recovering the Visual Space from Any Views

Haotong Lin* · Sili Chen* · Jun Hao Liew* · Donny Y. Chen* · Zhenyu Li · Guang Shi · Jiashi Feng
Bingyi Kang*†

†project lead *Equal Contribution

Paper PDF Project Page

This work presents Depth Anything 3 (DA3), a model that predicts spatially consistent geometry from arbitrary visual inputs, with or without known camera poses. In pursuit of minimal modeling, DA3 yields two key insights:

🏆 DA3 significantly outperforms DA2 for monocular depth estimation, and VGGT for multi-view depth estimation and pose estimation. All models are trained exclusively on public academic datasets.

Depth Anything 3 - Left

Depth Anything 3

📰 News

✨ Highlights

🏆 Model Zoo

We release three series of models, each tailored for specific use cases in visual geometry.

🔗 Leveraging these available models, we developed a nested series (DA3Nested-Giant-Large). This series combines a any-view giant model with a metric model to reconstruct visual geometry at a real-world metric scale.

🛠️ Codebase Features

Our repository is designed to be a powerful and user-friendly toolkit for both practical application and future research.

🚀 Quick Start

📦 Installation

pip install xformers torch\>=2 torchvision
pip install -e . # Basic
pip install --no-build-isolation git+https://github.com/nerfstudio-project/gsplat.git@0b4dddf04cb687367602c01196913cde6a743d70 # for gaussian head
pip install -e ".[app]" # Gradio, python>=3.10
pip install -e ".[all]" # ALL

For detailed model information, please refer to the Model Cards section below.

💻 Basic Usage

import glob, os, torch
from depth_anything_3.api import DepthAnything3
device = torch.device("cuda")
model = DepthAnything3.from_pretrained("depth-anything/DA3NESTED-GIANT-LARGE")
model = model.to(device=device)
example_path = "assets/examples/SOH"
images = sorted(glob.glob(os.path.join(example_path, "*.png")))
prediction = model.inference(
    images,
)
# prediction.processed_images : [N, H, W, 3] uint8   array
print(prediction.processed_images.shape)
# prediction.depth            : [N, H, W]    float32 array
print(prediction.depth.shape)  
# prediction.conf             : [N, H, W]    float32 array
print(prediction.conf.shape)  
# prediction.extrinsics       : [N, 3, 4]    float32 array # opencv w2c or colmap format
print(prediction.extrinsics.shape)
# prediction.intrinsics       : [N, 3, 3]    float32 array
print(prediction.intrinsics.shape)

export MODEL_DIR=depth-anything/DA3NESTED-GIANT-LARGE
# This can be a Hugging Face repository or a local directory
# If you encounter network issues, consider using the following mirror: export HF_ENDPOINT=https://hf-mirror.com
# Alternatively, you can download the model directly from Hugging Face
export GALLERY_DIR=workspace/gallery
mkdir -p $GALLERY_DIR

# CLI auto mode with backend reuse
da3 backend --model-dir ${MODEL_DIR} --gallery-dir ${GALLERY_DIR} # Cache model to gpu
da3 auto assets/examples/SOH \
    --export-format glb \
    --export-dir ${GALLERY_DIR}/TEST_BACKEND/SOH \
    --use-backend

# CLI video processing with feature visualization
da3 video assets/examples/robot_unitree.mp4 \
    --fps 15 \
    --use-backend \
    --export-dir ${GALLERY_DIR}/TEST_BACKEND/robo \
    --export-format glb-feat_vis \
    --feat-vis-fps 15 \
    --process-res-method lower_bound_resize \
    --export-feat "11,21,31"

# CLI auto mode without backend reuse
da3 auto assets/examples/SOH \
    --export-format glb \
    --export-dir ${GALLERY_DIR}/TEST_CLI/SOH \
    --model-dir ${MODEL_DIR}

The model architecture is defined in DepthAnything3Net, and specified with a Yaml config file located at src/depth_anything_3/configs. The input and output processing are handled by DepthAnything3. To customize the model architecture, simply create a new config file (e.g., path/to/new/config) as:

__object__:
  path: depth_anything_3.model.da3
  name: DepthAnything3Net
  args: as_params

net:
  __object__:
    path: depth_anything_3.model.dinov2.dinov2
    name: DinoV2
    args: as_params

  name: vitb
  out_layers: [5, 7, 9, 11]
  alt_start: 4
  qknorm_start: 4
  rope_start: 4
  cat_token: True

head:
  __object__:
    path: depth_anything_3.model.dualdpt
    name: DualDPT
    args: as_params

  dim_in: &head_dim_in 1536
  output_dim: 2
  features: &head_features 128
  out_channels: &head_out_channels [96, 192, 384, 768]

Then, the model can be created with the following code snippet.

from depth_anything_3.cfg import create_object, load_config

Model = create_object(load_config("path/to/new/config"))

📚 Useful Documentation

🗂️ Model Cards

Generally, you should observe that DA3-LARGE achieves comparable results to VGGT.

The Nested series uses an Any-view model to estimate pose and depth, and a monocular metric depth estimator for scaling.

⚠️ Models with the -1.1 suffix are retrained after fixing a training bug; prefer these refreshed checkpoints. The original DA3NESTED-GIANT-LARGE, DA3-GIANT, and DA3-LARGE remain available but are deprecated. You could expect much better performance for street scenes with the -1.1 models.

🗃️ Model Name 📏 Params 📊 Rel. Depth 📷 Pose Est. 🧭 Pose Cond. 🎨 GS 📐 Met. Depth ☁️ Sky Seg 📄 License
Nested
DA3NESTED-GIANT-LARGE-1.1 1.40B ✅ ✅ ✅ ✅ ✅ ✅ CC BY-NC 4.0
DA3NESTED-GIANT-LARGE 1.40B ✅ ✅ ✅ ✅ ✅ ✅ CC BY-NC 4.0
Any-view Model
DA3-GIANT-1.1 1.15B ✅ ✅ ✅ ✅ CC BY-NC 4.0
DA3-GIANT 1.15B ✅ ✅ ✅ ✅ CC BY-NC 4.0
DA3-LARGE-1.1 0.35B ✅ ✅ ✅ CC BY-NC 4.0
DA3-LARGE 0.35B ✅ ✅ ✅ CC BY-NC 4.0
DA3-BASE 0.12B ✅ ✅ ✅ Apache 2.0
DA3-SMALL 0.08B ✅ ✅ ✅ Apache 2.0
Monocular Metric Depth
DA3METRIC-LARGE 0.35B ✅ ✅ ✅ Apache 2.0
Monocular Depth
DA3MONO-LARGE 0.35B ✅ ✅ Apache 2.0

❓ FAQ

🏢 Awesome DA3 Projects

A community-curated list of Depth Anything 3 integrations across 3D tools, creative pipelines, robotics, and web/VR viewers, including but not limited to these. You are welcome to submit your DA3-based project via PR, and we will review and feature it if applicable.

🧑‍💻 Official Codebase Core Contributors and Maintainers


Bingyi Kang

Haotong Lin

Sili Chen

Jun Hao Liew

Donny Y. Chen

Kai Deng

📝 Citations

If you find Depth Anything 3 useful in your research or projects, please cite our work:

@article{depthanything3,
  title={Depth Anything 3: Recovering the visual space from any views},
  author={Haotong Lin and Sili Chen and Jun Hao Liew and Donny Y. Chen and Zhenyu Li and Guang Shi and Jiashi Feng and Bingyi Kang},
  journal={arXiv preprint arXiv:2511.10647},
  year={2025}
}

Depth-Anything-3 (ByteDance-Seed/Depth-Anything-3)

Searching Database…

这是做什么的?Depth Anything 3(DA3)是字节跳动 Seed 推出的一个基础模型,可以从任意视觉输入中预测空间上保持一致的几何信息——深度、相机位姿,甚至 3D 高斯——无论是否已知相机位姿都可以。
它是需要下载的模型、Python 库,还是现成的应用?两者兼有,都在同一个仓库里:预训练 checkpoint,外加一个把它们封装成 Gradio 网页界面、可脚本化命令行和 Python API 的 Python 工具包。网络结构定义在 DepthAnything3Net 中,通过 Yaml 文件进行配置。
我怎么把它跑起来?这是一个 Python 项目:先安装依赖,从 Model Zoo 下载一个 checkpoint,然后可以通过 Gradio 网页界面交互式使用、用命令行跑批量任务,或者调用 Python API。
下载模型权重时有什么要注意的坑?有:带 -1.1 后缀的模型是在修复训练 bug 之后重新训练的,效果更好,尤其在街景场景上——建议优先选这些;原来的 Giant、Large 和 Nested checkpoint 已弃用。
可以免费用于商业项目吗?代码采用 Apache-2.0 协议,较小的几个 checkpoint(DA3-BASE、DA3-SMALL、DA3METRIC-LARGE、DA3MONO-LARGE)也是;但旗舰版的 GIANT、LARGE 和 NESTED 权重采用 CC BY-NC 4.0 协议——仅限非商业用途。
需要很强劲的 GPU 吗?需要 GPU,而且模型大小可以自己选——从 DA3-Small(0.08B)到 Giant(1.15B)不等。DA3-Streaming 通过滑窗推理,在不到 12GB 显存的情况下就能处理超长视频序列。
怎么获得以现实世界米为单位的深度?使用 DA3METRIC-LARGE,按 metricdepth = focal * netoutput / 300 计算,其中 focal 是以像素为单位的焦距(取内参矩阵 K 中 fx 和 fy 的平均值)。Nested 系列本身就直接输出以米为单位的深度。
useraypose 这个参数有什么作用?它会让模型改用 ray head 来推算相机位姿——通常速度稍慢,但精度更高。默认值是 False,以便推理更快。
这些模型是用什么数据训练的?根据 README,所有模型都只在公开的学术数据集上训练。
它能接入 Blender 或 ComfyUI 这类工具吗?可以——社区维护的 Awesome DA3 列表里有:用于从图像集重建的 Blender 插件、支持单视角/多视角和视频一致性深度的 ComfyUI 节点、面向机器人领域的 ROS2 封装,以及一个 Three.js/WebXR 视频查看器。
Size
22.7 MB
Stars
6.5K
Updated
CommitJul 27
Age
11mo
Commits · 90 Days