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…

What is this?Depth Anything 3 (DA3) is a foundation model from ByteDance Seed that predicts spatially consistent geometry — depth, camera poses, even 3D Gaussians — from arbitrary visual inputs, with or without known camera poses.
Is this a model I download, a Python library, or a ready-made app?Both, in one repo: pretrained checkpoints plus a Python toolkit that wraps them in a Gradio web UI, a scriptable CLI and a Python API. The architecture is defined in DepthAnything3Net and configured via Yaml files.
How do I get it running?It is a Python project: install the dependencies, download a checkpoint from the Model Zoo, then run it via the Gradio web UI for interactive use, the CLI for batch jobs, or the Python API.
Any gotchas when grabbing the model weights?Yes: models with a -1.1 suffix were retrained after a training-bug fix and do better, especially on street scenes — prefer them; the original Giant, Large and Nested checkpoints are deprecated.
Is it free to use for commercial projects?The code is Apache-2.0 and so are the smaller checkpoints (DA3-BASE, DA3-SMALL, DA3METRIC-LARGE, DA3MONO-LARGE), but the flagship GIANT, LARGE and NESTED weights are CC BY-NC 4.0 — non-commercial only.
Do I need a powerful GPU for this?You need a GPU, and model size is your lever — from DA3-Small (0.08B) up to Giant (1.15B). DA3-Streaming handles ultra-long video sequences on under 12GB of GPU memory via sliding-window inference.
How do I get depth in real-world meters?Use DA3METRIC-LARGE and compute metricdepth = focal * netoutput / 300, where focal is the focal length in pixels (average of fx and fy from the intrinsic matrix K). The Nested series already outputs depth in meters.
What does the useraypose flag change?It makes the model derive camera pose from the ray head instead — generally slightly slower but more accurate. The default is False for faster inference.
What data were the models trained on?All models are trained exclusively on public academic datasets, per the README.
Does it plug into tools like Blender or ComfyUI?Yes — the community-curated Awesome DA3 list includes a Blender addon for reconstruction from image sets, ComfyUI nodes for single/multi-view and video-consistent depth, ROS2 wrappers for robotics, and a Three.js/WebXR video viewer.
Size
22.7 MB
Stars
6.5K
Updated
CommitJul 27
Age
11mo
Commits · 90 Days