Skip to content

Depth Anything V2 vs DINOv3

DepthWizard retained DINOv3 ViT-L/16 SAT-493M as its encoder. In the completed Depth Anything V2 Base experiment (DAV2_V1), DINOv3’s v4-modal configuration had lower overall GAMUS test RMSE with plain inference and TTA, and lower India validation RMSE. Its satellite pretraining also matches the imagery DepthWizard processes.

The advantage is modest and depends on the inference setting: GAMUS test TTA RMSE is 3.321 m for DINOv3 versus 3.396 m for DAv2, a 0.074 m (2.19%) reduction from the unrounded metrics. DAv2 wins with sliding-window TTA. The choice therefore reflects the deployment target and measured trade-offs, rather than a win on every metric.

The DAv2 variant reused the v4 training and evaluation pipeline, retaining DepthWizard’s metric height, segmentation and normal heads. It kept DAv2’s pretrained encoder and DPT neck, removed its original relative-depth head, and fine-tuned for height above ground in metres (nDSM). Both variants predict metric heights after training; this is a comparison of adapted DepthWizard models.

Property Depth Anything V2 Base · DAV2/V1 DINOv3 · v4-modal
Encoder DINOv2 ViT-B/14 DINOv3 ViT-L/16 SAT-493M
Encoder parameters, approximately 86 M 303 M
Pretraining emphasis Monocular depth with synthetic labels and real pseudo-labels Self-supervised satellite imagery
DPT neck at the start of training Pretrained for depth Randomly initialised
Patch / input tile 14 px / 518 × 518 px 16 px / 512 × 512 px
Decoder channels 128 256
Completed epochs 40 30
Unfrozen encoder blocks All 12 Top 16 of 24
Layer-wise LR decay 0.85 0.90
Stratum weighting β / clip 0.5 / 5.0 0.7 / 8.0

Architecture details come from DAV2_V1/README.md and models/dav2.py; the run settings above come from the completed metrics files. The upstream DAv2 model card describes its DINOv2/DPT architecture and depth training, while Meta’s DINOv3 model card records SAT-493M’s 493 million satellite images.

Lower is better. Plain and TTA score the full 2,861-tile GAMUS test split; sliding-window TTA scores the first 400 test tiles. India is a separate 35-tile validation split, not an independent test split. TTA uses rotations/reflections and input scales of 1.0× and 1.25×.

RMSE in metres. DINOv3 v4-modal leads on GAMUS plain/TTA and India plain; DAv2 leads on the 400-tile sliding-window test. Each row is a separate evaluation setting.Source: /evidence/encoder-comparison.json; India from v3_vs_v4_vs_dav2.md
Split · inferenceDAv2 RMSE (m) ↓DINOv3 RMSE (m) ↓
GAMUS test · Plain3.4243.373
GAMUS test · TTA3.3963.321
GAMUS test · Sliding + TTA3.7593.873
India val · plain3.0272.780

Best RMSE in each row is highlighted. India values are available only to three decimal places in the shared report. Source: /evidence/encoder-comparison.json

On GAMUS test, DINOv3 reduces plain RMSE by 0.051 m (1.48%) and TTA RMSE by 0.074 m (2.19%). On India validation, the reduction is 0.247 m (8.16%). DAv2 reduces sliding-window TTA RMSE by 0.114 m (2.95%) relative to DINOv3. No repeated-seed results or confidence intervals are recorded, so these are observed differences rather than established statistical significance.

GAMUS test metricDAv2 · plainDINOv3 · plainDAv2 · TTADINOv3 · TTA
MAE (m) ↓1.5141.5491.5511.511
Balanced RMSE (m) ↓4.7134.6134.6634.556
Pearson r ↑0.8850.8860.8860.890
δ1 ↑0.6460.6270.6070.629

Arrows show the preferred direction. Balanced RMSE gives each height band equal weight; δ1 is the shifted height-ratio accuracy defined on the Metrics page. Source: test_gamus_test_plain and test_gamus_test_tta in both completed metrics files

DAv2 has lower plain MAE (1.514 vs 1.549 m) and higher plain δ1 (0.646 vs 0.627) even though DINOv3 has lower plain RMSE. With TTA, DINOv3 leads on all four metrics above. See metric definitions for how RMSE, balanced RMSE and δ1 measure different aspects of height error.

GAMUS test with TTA, grouped by ground-truth landscape. DINOv3 has lower urban and forested RMSE; DAv2 has lower sparse RMSE. These are landscape subsets of the test split, not additional datasets.Source: test_gamus_test_tta.per_landscape in /evidence/encoder-comparison.json
Landscape · TTADAv2 RMSE (m) ↓DINOv3 RMSE (m) ↓
Urban3.5253.506
Sparse1.0961.276
Forested3.7123.505

Source: /evidence/encoder-comparison.json

The largest landscape advantage for DINOv3 is forested tiles: 3.505 vs 3.712 m, a 5.58% RMSE reduction. Sparse tiles favour DAv2 (1.096 vs 1.276 m). For pixels with true height above 15 m, DINOv3 also has lower TTA RMSE (8.253 vs 8.591 m), though both underestimate tall structures on average (bias −3.052 vs −3.235 m).

  1. Better overall accuracy in the principal test modes. The v4-modal DINOv3 configuration had lower GAMUS test RMSE in plain and TTA inference, lower balanced RMSE, and lower India validation RMSE. This favours DINOv3 when the goal is overall metric height accuracy under these settings.
  2. Pretraining matches the input domain. SAT-493M uses satellite imagery, whereas DAv2’s pretrained neck is specialised for monocular depth. Overhead height estimation depends on cues such as roof structure, shadows and canopy texture. Satellite pretraining is a plausible reason to prefer DINOv3’s features for this task; the experiment does not isolate or prove that mechanism.
  3. The test supports the project’s canopy and tall-height priorities. DINOv3 v4-modal had lower forested and tall-pixel TTA RMSE. The later v5 training choices continue this encoder while addressing canopy errors through data and loss changes. Those later v5 results are separate from this experiment.

DAv2 remains a credible alternative: its encoder is roughly 3.5× smaller, its neck starts with depth-specific weights, and it wins on sliding-window RMSE and sparse landscapes. Parameter count alone does not establish a latency or memory advantage in deployment; this comparison did not record a matched inference-speed benchmark.

The tested DAv2 Base weights also carry a CC-BY-NC-4.0 licence, as documented in the upstream repository. This is an additional deployment consideration. DINOv3 uses Meta’s DINOv3 licence; it should not be described as Apache-2.0. DAv2 Small has a different licence and was not the model tested here.

  • Completed DAv2 result: Model_Traning/DAV2_V1/outputs/dav2-v1/metrics.json, 40 epochs. DAV2_V1/Logs/metrics.json is the earlier 24-epoch snapshot and is not used here.
  • DINOv3 comparator: Model_Traning/V4_modal/Output/metrics.json, 30 epochs. The labels “v4” in the shared report and “v4-modal” on this page refer to this run.
  • Shared evaluation report: Model_Traning/v3/outputs/v3_vs_v4_vs_dav2.md. India values come from this report; it contains no DAv2 DFC23 result, so no DAv2-versus-DINOv3 DFC23 comparison is claimed.
  • Download: metrics extract with source paths, SHA-256 hashes, run settings and pixel counts. The extract retains full precision from the GAMUS metrics files.

Regenerate the extract from the local experiment artefacts:

Terminal window
python3 scripts/extract_encoder_comparison.py

The earlier DINOv3 v3 run achieved 2.605 m validation TTA RMSE, compared with DAv2’s 3.432 m and v4-modal’s 3.631 m. These validation results used different tile packings and were used for checkpoint selection. They are not the basis for the test graphs above. See Benchmarks and validation-set differences for context.