Foundational visual features such as DINO have played a critical role across modern computer vision, and have recently become key components in multi-view feed-forward geometry estimators. In this work, we demonstrate that by re-distilling these multi-view models—their internal knowledge of 3D geometry—into a single-view estimator, we can obtain enhanced 3D consistent foundational features. Our key idea is to construct a multi-view teacher by fusing pretrained 2D foundation features with multi-view geometric features, and refining the fused representation with a discriminative ranking objective. Through our discriminative distillation framework, we enforce the learned features to be both 3D consistent and locally distinctive, while keeping them aligned with the feature space of the original foundation model to preserve the semantic structure of the pretrained representation. Consistency and local discriminability are critical for 3D computer vision problems such as forming semantic and geometric correspondences across images. To demonstrate the effectiveness of our method, we perform comprehensive experiments spanning multiple angles: direct feature analysis, dense prediction transfer, and explicit 3D lifting and rendering. Across these evaluations, our method consistently produces stronger 3D-aware foundation features that improve multi-view consistency and local discriminability while preserving the semantic transferability of the original representation.
We compare against other 3D-aware fine-tunings of DINOv2 (Fit3D, MEF, SnD) on direct feature quality, dense prediction by linear probing, and after lifting the features to 3D. SnD is reported with both of its released checkpoints, without SAM-mask blending (SnD) and with it (SnD (+blending)). In the tables, the best result in each column is bold and the second best is underlined, within each backbone group.
On ScanNet, nearest-neighbor matching accuracy goes from 21.7 (DINOv2) to 66.0 PCK@10px, and the advantage holds as the viewpoint change between the two images grows.
| Separation | Geometric correspondence | Semantic matching | ||||||
|---|---|---|---|---|---|---|---|---|
| Method | ScanNet | ScanNet | Navi-W | DAVIS | SPair-71k | |||
| Margin↑ | @10px↑ | @20px↑ | @0.05↑ | @0.1↑ | J&F↑ | @0.05↑ | @0.1↑ | |
| ViT-B | ||||||||
| DINOv2 (baseline) | 0.4108 | 21.72 | 36.11 | 57.97 | 75.94 | 67.82 | 52.98 | 68.56 |
| Fit3D (ECCV'24) | 0.3494 | 22.89 | 39.50 | 31.26 | 53.81 | 66.70 | 30.25 | 44.86 |
| MEF (ICLR'25) | 0.4288 | 39.17 | 55.06 | 67.71 | 80.87 | 66.82 | 56.78 | 72.07 |
| SnD (ICLR'26) | 0.4520 | 28.65 | 45.67 | 59.53 | 76.86 | 68.05 | 53.68 | 69.65 |
| SnD (+blending) | 0.3526 | 24.37 | 40.79 | 56.33 | 75.11 | 69.11 | 52.25 | 68.14 |
| Ours | 0.4632 | 66.01 | 78.48 | 65.66 | 79.40 | 68.95 | 61.52 | 75.46 |
| ViT-S | ||||||||
| DINOv2 (baseline) | 0.3967 | 23.00 | 38.16 | 53.72 | 73.03 | 65.78 | 51.11 | 67.16 |
| Fit3D (ECCV'24) | 0.3001 | 22.27 | 39.29 | 26.60 | 47.87 | 66.01 | 21.12 | 34.21 |
| MEF (ICLR'25) | 0.4170 | 38.54 | 54.30 | 61.67 | 76.31 | 66.16 | 51.64 | 67.32 |
| SnD (ICLR'26) | 0.3819 | 28.65 | 46.24 | 54.13 | 73.30 | 67.10 | 51.13 | 67.83 |
| SnD (+blending) | 0.3147 | 23.26 | 39.39 | 50.22 | 70.42 | 68.20 | 49.43 | 66.17 |
| Ours | 0.4314 | 61.35 | 74.24 | 59.57 | 74.55 | 67.68 | 54.09 | 68.70 |
Direct feature evaluation. Separation: gap between the cosine similarity of corresponding points and of non-corresponding points. Correspondence: PCK of nearest-neighbor matches (ScanNet in pixels, NAVI-Wild and SPair-71k in normalized units); DAVIS: mask propagation.
With a linear probe on frozen features, semantic segmentation is on par with SnD (+blending), the strongest baseline here, and depth is competitive, while the correspondence is far ahead of both SnD checkpoints.
| Semantic segmentation | Depth estimation | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ScanNet | ScanNet++ | ScanNet | NYUv2 | |||||||||
| Method | mIoU↑ | mAcc↑ | aAcc↑ | mIoU↑ | mAcc↑ | aAcc↑ | AbsRel↓ | RMSE↓ | δ1↑ | AbsRel↓ | RMSE↓ | δ1↑ |
| ViT-B | ||||||||||||
| DINOv2 | 53.69 | 66.29 | 77.63 | 31.69 | 41.41 | 81.47 | 0.1553 | 0.3718 | 78.12 | 0.1705 | 0.6566 | 74.90 |
| Fit3D | 51.35 | 63.37 | 76.96 | 30.58 | 38.31 | 84.06 | 0.2045 | 0.4599 | 66.70 | 0.1975 | 0.7426 | 68.03 |
| MEF | 52.49 | 65.17 | 76.93 | 29.40 | 38.62 | 81.43 | 0.1677 | 0.3937 | 75.06 | 0.1661 | 0.6222 | 75.98 |
| SnD | 56.36 | 69.40 | 79.43 | 31.95 | 41.67 | 82.62 | 0.1449 | 0.3446 | 80.89 | 0.1537 | 0.6018 | 78.56 |
| SnD (+blending) | 57.64 | 70.35 | 80.52 | 33.37 | 42.73 | 84.13 | 0.1454 | 0.3459 | 80.54 | 0.1464 | 0.5777 | 80.70 |
| Ours | 57.00 | 70.51 | 80.61 | 33.53 | 43.00 | 84.34 | 0.1450 | 0.3453 | 80.48 | 0.1490 | 0.5835 | 79.78 |
| ViT-S | ||||||||||||
| DINOv2 | 50.18 | 62.81 | 75.06 | 27.80 | 37.06 | 79.52 | 0.1709 | 0.3950 | 74.70 | 0.1699 | 0.6465 | 75.26 |
| Fit3D | 44.62 | 56.41 | 72.56 | 26.19 | 33.49 | 81.97 | 0.2171 | 0.4821 | 64.44 | 0.2120 | 0.7691 | 65.20 |
| MEF | 47.22 | 59.70 | 73.29 | 24.53 | 32.96 | 78.69 | 0.1925 | 0.4319 | 69.72 | 0.1792 | 0.6541 | 73.39 |
| SnD | 51.38 | 64.11 | 76.10 | 27.90 | 36.90 | 81.00 | 0.1612 | 0.3780 | 76.45 | 0.1536 | 0.5882 | 79.32 |
| SnD (+blending) | 52.61 | 65.23 | 77.07 | 29.18 | 38.14 | 82.40 | 0.1631 | 0.3777 | 76.22 | 0.1531 | 0.5842 | 79.46 |
| Ours | 52.23 | 64.96 | 77.12 | 29.29 | 38.53 | 82.17 | 0.1628 | 0.3786 | 76.25 | 0.1582 | 0.6036 | 78.13 |
Linear probes on frozen features. Segmentation: ScanNet and ScanNet++. Depth: ScanNet and NYUv2.
We lift image features to 3D in two ways. For ScanNet point clouds, features are averaged over the views in which a point is visible, and a linear classifier is trained on the averaged features. Since averaging can hide disagreement between views, the same classifier is also applied to the feature of each view separately. For Mip-NeRF 360 scenes, features are assigned to pretrained 3D Gaussians and rendered from held-out views.
| Method | mIoU↑ | mAcc↑ | aAcc↑ | Per-view mIoU↑ | Multi-view agree.↑ |
|---|---|---|---|---|---|
| DINOv2 | 62.30 | 74.30 | 82.69 | 54.49 | 77.34 |
| Fit3D | 59.54 | 71.04 | 81.45 | 54.21 | 80.73 |
| MEF | 61.54 | 73.73 | 82.24 | 54.07 | 77.71 |
| SnD | 62.79 | 74.57 | 82.99 | 56.51 | 80.28 |
| SnD (+blending) | 63.26 | 75.18 | 83.25 | 57.14 | 80.80 |
| Ours | 63.32 | 74.85 | 83.36 | 57.79 | 82.49 |
3D point segmentation on ScanNet. Per-view mIoU applies the probe to each view’s feature without averaging; multi-view agreement is the rate at which two views of the same point predict the same class.
import torch
from ddms import DDMS
model = DDMS.from_checkpoint("ddms_vitb14.pt").eval().cuda()
x = ... # (B, 3, H, W) RGB, ImageNet mean/std normalised
with torch.no_grad():
feats = model(x) # (B, 768, H/14, W/14)
dense = model(x, out_hw=x.shape[-2:]) # bilinearly upsampled to the input size
# features are not L2-normalised; use cosine similarity for matching
@article{kwak2026ddms,
title = {DDMS: Discriminative Distillation of Multi-view Foundational Features
into Single-view Models},
author = {Kwak, Jeong-gi and Kagami, Sho and Ono, Yuki and Yi, Kwang Moo},
journal = {arXiv preprint arXiv:2608.23850},
year = {2026}
}