| --- |
| license: apache-2.0 |
| library_name: ggml |
| pipeline_tag: depth-estimation |
| tags: |
| - depth-anything |
| - depth-anything-3 |
| - depth-anything-2 |
| - depth-estimation |
| - monocular-depth |
| - camera-pose |
| - gguf |
| - ggml |
| - cpp |
| - localai |
| base_model: |
| - depth-anything/DA3-SMALL |
| - depth-anything/DA3-BASE |
| - depth-anything/DA3-LARGE |
| - depth-anything/DA3-GIANT |
| - depth-anything/DA3MONO-LARGE |
| - depth-anything/DA3METRIC-LARGE |
| - depth-anything/DA3NESTED-GIANT-LARGE |
| - depth-anything/Depth-Anything-V2-Small |
| - depth-anything/Depth-Anything-V2-Base |
| - depth-anything/Depth-Anything-V2-Large |
| - depth-anything/Depth-Anything-V2-Metric-Hypersim-Small |
| - depth-anything/Depth-Anything-V2-Metric-Hypersim-Base |
| - depth-anything/Depth-Anything-V2-Metric-Hypersim-Large |
| - depth-anything/Depth-Anything-V2-Metric-VKITTI-Small |
| - depth-anything/Depth-Anything-V2-Metric-VKITTI-Base |
| - depth-anything/Depth-Anything-V2-Metric-VKITTI-Large |
| --- |
| |
| # Depth Anything 3 — GGUF weights for [depth-anything.cpp](https://github.com/mudler/depth-anything.cpp) |
|
|
| **Brought to you by the [LocalAI](https://github.com/mudler/LocalAI) team.** |
|
|
| GGUF conversions of [ByteDance Depth Anything 3](https://github.com/bytedance-seed/depth-anything-3), |
| for use with **[depth-anything.cpp](https://github.com/mudler/depth-anything.cpp)** — a from-scratch |
| C++17 / [ggml](https://github.com/ggml-org/ggml) port. No Python, no PyTorch, no CUDA toolkit at |
| inference: one self-contained GGUF file plus a small native library and CLI, **faster than PyTorch |
| on CPU** and **bit-exact** against the original (correlation 1.0, verified component by component). |
|
|
| Given an image, the engine recovers a dense **depth** map, per-pixel **confidence**, camera |
| **extrinsics (3×4)** and **intrinsics (3×3)**, an optional **sky** mask, a back-projected **3D point |
| cloud**, and exports to **glb / COLMAP / PLY**. |
|
|
| ## Files in this repo |
|
|
| Each GGUF is fully self-contained — every dimension, hyperparameter and preprocessing constant is |
| baked into the file; the loader reads them, nothing is hardcoded. |
|
|
| | File | Source checkpoint | Backbone | Depth type | Output | |
| |------|-------------------|----------|-----------|--------| |
| | `depth-anything-small-f32.gguf` | `DA3-SMALL` | ViT-S | relative | depth + conf + pose | |
| | `depth-anything-base-f32.gguf` | `DA3-BASE` | ViT-B | relative | depth + conf + pose | |
| | `depth-anything-base-f16.gguf` | `DA3-BASE` | ViT-B | relative | depth + conf + pose | |
| | `depth-anything-base-q8_0.gguf` | `DA3-BASE` | ViT-B | relative | depth + conf + pose (near-lossless) | |
| | `depth-anything-base-q4_k.gguf` | `DA3-BASE` | ViT-B | relative | depth + conf + pose (**99 MB**) | |
| | `depth-anything-large-f32.gguf` | `DA3-LARGE` | ViT-L | relative | depth + conf + pose | |
| | `depth-anything-giant-f32.gguf` | `DA3-GIANT` | ViT-g | relative | depth + conf + pose + 3D Gaussians | |
| | `depth-anything-mono-large-f32.gguf` | `DA3MONO-LARGE` | ViT-L | relative (monocular) | depth + sky | |
| | `depth-anything-metric-large-f32.gguf` | `DA3METRIC-LARGE` | ViT-L | **metric** | metric depth + sky | |
| | `depth-anything-nested-anyview.gguf` | `DA3NESTED-GIANT-LARGE` (anyview branch) | ViT-g | relative | depth + conf + pose | |
| | `depth-anything-nested-metric.gguf` | `DA3NESTED-GIANT-LARGE` (metric branch) | ViT-L | **metric** | depth + sky | |
|
|
| > The nested model is a **two-file pair**: the engine loads the anyview (ViT-g) branch and the |
| > metric (ViT-L) branch together and aligns them to produce metric-scale depth + pose. Download |
| > both `depth-anything-nested-anyview.gguf` and `depth-anything-nested-metric.gguf`. |
|
|
| ### Depth Anything V2 |
|
|
| The same engine also runs [Depth Anything **V2**](https://github.com/DepthAnything/Depth-Anything-V2) |
| checkpoints. DA2 is **depth only** — no confidence, pose or sky. **Relative** models output an inverse |
| depth map through a `ReLU` head; **metric** models output depth in **metres** through a |
| `Sigmoid × max_depth` head (`max_depth=20` for the indoor Hypersim variants, `max_depth=80` for the |
| outdoor VKITTI variants). The ViT-g (Giant) DA2 checkpoint is not shipped (its `Depth-Anything-V2-Giant` |
| HF repo is gated/unreleased). |
|
|
| Each model below ships in f32 plus f16 / q8_0 / q6_k / q5_k / q4_k quants (only the f32 + a representative |
| quant are listed for brevity; the full set is in `SHA256SUMS`). |
|
|
| | File | Source checkpoint | Backbone | Depth type | Output | |
| |------|-------------------|----------|-----------|--------| |
| | `depth-anything2-small-f32.gguf` | `Depth-Anything-V2-Small` | ViT-S | relative | inverse depth | |
| | `depth-anything2-small-q8_0.gguf` | `Depth-Anything-V2-Small` | ViT-S | relative | inverse depth (near-lossless) | |
| | `depth-anything2-base-f32.gguf` | `Depth-Anything-V2-Base` | ViT-B | relative | inverse depth | |
| | `depth-anything2-large-f32.gguf` | `Depth-Anything-V2-Large` | ViT-L | relative | inverse depth | |
| | `depth-anything2-large-q4_k.gguf` | `Depth-Anything-V2-Large` | ViT-L | relative | inverse depth (smallest) | |
| | `depth-anything2-metric-hypersim-small-f32.gguf` | `Depth-Anything-V2-Metric-Hypersim-Small` | ViT-S | **metric** (≤20 m, indoor) | depth in metres | |
| | `depth-anything2-metric-hypersim-base-f32.gguf` | `Depth-Anything-V2-Metric-Hypersim-Base` | ViT-B | **metric** (≤20 m, indoor) | depth in metres | |
| | `depth-anything2-metric-hypersim-large-f32.gguf` | `Depth-Anything-V2-Metric-Hypersim-Large` | ViT-L | **metric** (≤20 m, indoor) | depth in metres | |
| | `depth-anything2-metric-vkitti-small-f32.gguf` | `Depth-Anything-V2-Metric-VKITTI-Small` | ViT-S | **metric** (≤80 m, outdoor) | depth in metres | |
| | `depth-anything2-metric-vkitti-base-f32.gguf` | `Depth-Anything-V2-Metric-VKITTI-Base` | ViT-B | **metric** (≤80 m, outdoor) | depth in metres | |
| | `depth-anything2-metric-vkitti-large-f32.gguf` | `Depth-Anything-V2-Metric-VKITTI-Large` | ViT-L | **metric** (≤80 m, outdoor) | depth in metres | |
|
|
| **Parity.** Every DA2 GGUF is verified against the upstream `DepthAnythingV2` forward (correlation > 0.999 |
| end-to-end at f32, q8_0 near-lossless at corr 0.99962, q4_k at 0.99944). The one exception is |
| `depth-anything2-metric-vkitti-small` at corr **0.9983** — this is **not a porting defect** (the C++ route |
| matches the reference `Sigmoid × 80` math exactly); it is the inherent ≤20× amplification of backbone |
| fp-rounding noise by the widest metric scale on the smallest backbone. Absolute error stays sub-1% |
| (mean 0.57% of 80 m), and the same ViT-S backbone scores 0.9996 in relative mode. Accepted as near-lossless. |
|
|
| ### Which one should I use? |
|
|
| - **Just trying it out / CPU:** `depth-anything-base-q4_k.gguf` (99 MB, near-lossless). |
| - **Best quality/speed default:** `depth-anything-base-q8_0.gguf`. |
| - **Smallest / fastest:** `depth-anything-small-f32.gguf`. |
| - **Highest quality + 3D reconstruction (point cloud / Gaussians):** `depth-anything-giant-f32.gguf`. |
| - **Single-image depth with sky mask:** `depth-anything-mono-large-f32.gguf`. |
| - **Metric-scale depth (meters), single model:** `depth-anything-metric-large-f32.gguf`. |
| - **Best metric-scale depth + pose:** the nested pair (`depth-anything-nested-anyview.gguf` + |
| `depth-anything-nested-metric.gguf`). |
|
|
| ## Usage |
|
|
| ### depth-anything.cpp (CLI) |
|
|
| ```bash |
| git clone https://github.com/mudler/depth-anything.cpp && cd depth-anything.cpp |
| cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j |
| |
| # download a weight from this repo |
| hf download mudler/depth-anything.cpp-gguf depth-anything-base-q4_k.gguf --local-dir models |
| |
| ./build/da3 depth models/depth-anything-base-q4_k.gguf image.jpg --out depth.png |
| ./build/da3 depth models/depth-anything-base-q4_k.gguf image.jpg --pose poses.json |
| ./build/da3 reconstruct models/depth-anything-giant-f32.gguf image.jpg --ply cloud.ply |
| |
| # metric-scale depth from the single metric model |
| ./build/da3 depth models/depth-anything-metric-large-f32.gguf image.jpg --out depth.png |
| |
| # metric-scale depth + pose from the nested pair (anyview + metric branches) |
| ./build/da3 depth models/depth-anything-nested-anyview.gguf image.jpg \ |
| --metric-model models/depth-anything-nested-metric.gguf --pfm depth.pfm |
| ``` |
|
|
| See the [README](https://github.com/mudler/depth-anything.cpp) for multi-view, glb/COLMAP export, |
| quantization and the flat C API. |
|
|
| ### LocalAI |
|
|
| ```bash |
| local-ai run depth-anything-3-base |
| ``` |
|
|
| ## Performance |
|
|
| Faster than PyTorch on CPU at half the memory, bit-exact. AMD Ryzen 9 9950X3D, `threads=16`, |
| 504×336, sustained: |
|
|
| | engine | quant | model MB | load ms | infer ms | peak RAM MB | vs PyTorch | |
| |--------|-------|---------:|--------:|---------:|------------:|-----------:| |
| | PyTorch | f32 | 516 | 749 | 416.9 | 1328 | 1.00× | |
| | **C++/ggml** | f32 | 393 | **112** | **346.4** | **614** | **1.20×** | |
| | **C++/ggml** | q8_0 | 142 | **40** | **319.4** | **363** | **1.31×** | |
| | **C++/ggml** | q4_k | **99** | **25** | 395.2 | **320** | 1.05× | |
|
|
| Full methodology in [`benchmarks/BENCHMARK.md`](https://github.com/mudler/depth-anything.cpp/blob/master/benchmarks/BENCHMARK.md). |
|
|
| ## License |
|
|
| The GGUF weights are derived from the official Depth Anything 3 checkpoints and inherit their |
| **Apache-2.0** license. The depth-anything.cpp code is MIT. |
|
|
| ## Citation |
|
|
| ```bibtex |
| @article{depthanything3, |
| title = {Depth Anything 3: Recovering the Visual Space from Any Views}, |
| author = {ByteDance Seed}, |
| year = {2025} |
| } |
| ``` |
|
|