Downloads · 30 days
19
3% of all-time downloads
jgaubil/und3rstand-dust3r-224-linear
und3rstand-dust3r-224-linear is a image-to-3d model from jgaubil. Use it for the image-to-3d task on the model card, and read the license before you ship it in a product. It is set up for und3rstand.
This model provides pretrained probes for analyzing the internal representations of multi-view transformers, specifically DUSt3R (checkpoint trained at resolution 224 with a linear output head). The probes decode 3D p…
Downloads · 30 days
19
3% of all-time downloads
All-time downloads
658
Public
Parameters
261M
1 GB on disk
Likes
1
Public
Click a slice to open those files.
.safetensors1 GB · 100%
From the Hugging Face model README
This model provides pretrained probes for analyzing the internal representations of multi-view transformers, specifically DUSt3R
(checkpoint trained at resolution 224 with a linear output head).
The probes decode 3D pointmaps from intermediate transformer features, enabling layer-wise study of geometric reasoning.
This work accompanies the paper:
Understanding Multi-View Transformers
ICCV 2025 E2E3D Workshop
(B, 3, H, W) normalized to [-1, 1]pts3d: (B, H, W, 3) 3D pointmapconf: (B, H, W) confidence mapimport requests
from PIL import Image
import torchvision.transforms as T
from src.models.probes import PointmapProbes
model, probes = PointmapProbes.load_backbone_and_probe(
"jgaubil/und3rstand-dust3r-224-linear"
)
model.eval()
probes.eval()
view1_path = "https://raw.githubusercontent.com/JulienGaubil/und3rstand/main/assets/samples/example_view1.jpg"
view2_path = "https://raw.githubusercontent.com/JulienGaubil/und3rstand/main/assets/samples/example_view2.jpg"
transform = T.Compose([
T.Resize(224),
T.CenterCrop(224),
T.ToTensor(),
T.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
])
view1_images = transform(
Image.open(requests.get(view1_path, stream=True).raw).convert("RGB")
).unsqueeze(0)
view2_images = transform(
Image.open(requests.get(view2_path, stream=True).raw).convert("RGB")
).unsqueeze(0)
feat_list = model(view1_images, view2_images)
outputs = probes(feat_list)
for layer_id, (pred1, pred2) in zip(model.probed_layers.layer_ids, outputs):
print(f"{layer_id}: pts3d={pred1['pts3d'].shape}, conf={pred1['conf'].shape}")
@inproceedings{stary2025understanding,
title={{Understanding Multi-View Transformers}},
author={Star{\'y}, Michal and Gaubil, Julien and Tewari, Ayush and Sitzmann, Vincent},
booktitle={ICCV 2025 E2E3D Workshop},
year={2025}
}