YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
license: cc-by-nc-4.0 tags: - monocular-depth-estimation - depth-estimation - gaming - fps - stereo - vr - 2d-to-3d - knowledge-distillation - pytorch
Ultimate DAV2 ViT-S (UL/Quality) β Depth Estimation Built for Gaming
Single-image monocular depth estimation distilled from a DAV2-L teacher into a fast DAV2-S (ViT-S/14 + official DPT head) student, tuned for 2Dβ3D / VR stereo conversion of gaming content. Output is relative depth in [0, 1] (min-max normalized) β not metric.
Variants
| Variant | Checkpoint | ViT blocks | Size | Notes |
|---|---|---|---|---|
| Quality | ultimate_dav2_vits_rgb_quality.safetensors |
12 (full) | ~95 MB | Highest quality; DPT taps at native [2, 5, 8, 11] |
| UL | ultimate_dav2_vits_rgb_UL.safetensors |
10 | ~81 MB | Fastest; DPT taps re-indexed to [2, 5, 8, 9] |
Both take raw sRGB input in [0, 1] (no color-space conversion) and use the official DAV2 dynamic-aspect-ratio preprocessing (short side β lower bound, aspect-ratio cap 4, snap to 14, no padding). Recommended lower bounds: 392 px (UL), 518 px (Quality).
Training
Teacher: Depth Anything V2 Large (DAV2-L), used only for distillation (scale-invariant, normalized-space distillation).
Student: DAV2 Small (ViT-S/14) backbone + official DPT head; only the small student weights are released.
Training / fine-tuning data: a mixture of
- COCO,
- Unsplash,
- high-resolution first-person shooter game screenshots.
This is a custom dataset mix, not the DAV2 official training set, so behaviour (especially on out-of-distribution content, text/UI-heavy game screenshots, and extreme aspect ratios) may differ from stock DAV2-S and the DAV2-L teacher.
Pipeline: custom training/finetuning script adapted for the DAV2-S backbone, multi-stage 392 px β 518 px. Not the upstream DAV2 training code.
Usage
The inference driver (dav2_infer.py) runs both variants through the iw3
depth-model factory.
from dav2_infer import run_dav2
# Quality (full 12-block student)
depth = run_dav2("Ultimate_DAV2_ViTS_RGB_QUALITY", "input.png", "depth.png", save_viz=True)
# UL (10-block student, fastest)
depth = run_dav2("Ultimate_DAV2_ViTS_RGB_UL", "input.png", "depth_ul.png", save_viz=True)
Or from the command line:
python dav2_infer.py --model Ultimate_DAV2_ViTS_RGB_QUALITY --image in.png --out depth.png --viz
python dav2_ul_infer.py in.png out.png
python dav2_quality_infer.py in.png out.png
depth is a [1, H, W] tensor in [0, 1]; --out writes a 16-bit grayscale
PNG, --viz an 8-bit colormap image. --resolution overrides the lower bound
(e.g. 392 or 518); --raw returns unnormalized depth; --no-amp disables
autocast.
Requirements
- PyTorch (CUDA optional; falls back to CPU)
nunif+iw3(depth-model factory, depth scaler, DAV2 wrappers)- Local DINOv2 torchhub copy +
depth_anything_v2_vits.pth(inference never downloads; the DINOv2 backbone is vendored and the student checkpoint is self-contained)
Intended use
- 2D β 3D conversion of images for 3D headsets (side-by-side stereo).
- Relative depth visualization of game screenshots.
Not intended for SLAM, robotics, AR reconstruction, autonomous driving, or any task requiring metric accuracy or safety guarantees.
Disclaimer
These are distillation student checkpoints, not stock Depth-Anything-V2 releases. A DAV2-L model is used only as the teacher; only the DAV2-S student weights are shipped and inferred. The model outputs relative depth only (no metric units). The base DINOv2 / DAV2 components remain subject to their own upstream licenses; the "Ultimate DAV2" student checkpoints are provided "as-is", without warranty of any kind.
License
Non-commercial, personal use only. Not for commercial products, services, or redistribution for profit. The underlying DINOv2 / DAV2 components are subject to their respective upstream licenses.