GeoHead β€” millimeter geometry from frozen DINOv3, on MimicGen threading_d0

Decode metric 3D object position from vision features on MimicGen threading_d0. Task requirement for reliable insertion is ~4 mm; the offset target (needle βˆ’ tripod) is the decision metric, because relative pose is what the controller consumes.

All numbers are RMSE in millimetres on held-out episodes, dual-form ridge (closed form, Ξ» swept, best-val) unless stated. Camera geometry: 45Β° fovy, 0.762 m to the target plane, 631 mm view height β†’ 2.82 mm per pixel at 224 px; one patch-16 token spans β‰ˆ39.5 mm.

Headline

readout on frozen DINOv3-S/16 needle offset
linear ridge probe (the campaign's baseline) 11.3 19.3
GeoHead, 9.6k train windows 8.9 13.9
GeoHead, 25k 7.7 12.7
GeoHead, 60k 6.6 10.6
GeoHead @448 px, 25k 6.6 10.5
target 4.0 4–6

The geometry was never missing from frozen DINOv3 features β€” it was not linearly decodable. A 3.8M-parameter decoder recovers 2.4 mm on needle and 5.4 mm on offset at matched sample size, and keeps improving with data (~1.15 mm per 2.5Γ— data, no saturation observed).

The encoder already resolves 1 mm

Decoder removed from the loop entirely: replay a stored sim_state, re-render, displace one object by a known amount, re-render, and measure the feature change. The renderer is deterministic, so re-rendering an identical state gives a bit-identical feature vector β€” a true zero noise floor.

displacement β€–Ξ”featuresβ€– dβ€²
0 mm 0.0000 β€”
1 mm 10.52 4.85
2 mm 14.01 5.99
4 mm 17.88 5.64
8 mm 23.60 6.59
32 mm 45.32 6.74

A 1 mm displacement produces a large, consistent response. Every remaining millimetre is a decoding problem, not an information limit. Caveat: this measures signal in isolation, not signal against nuisance variation (arm motion, occlusion), so "present" β‰  "easily recoverable".

What does NOT help (all measured, all negative)

intervention result
model capacity β€” DINOv3 S / B / L (22M β†’ 303M) needle 11.3 / 11.4 / 11.8 β€” flat
patch size β€” DINO v1 s16 vs s8, identical pretraining 12.5 vs 12.9 β€” flat/worse
native patch-8 at 28Γ—28 (4Γ— tokens) needle 12.0, offset 19.4 β€” same as patch-14
input resolution 224 β†’ 896 px (16Γ— tokens, upsampled) needle 14.1 β†’ 13.8
TRUE 896 px pixels (sim-state replay re-render, same frames) 7.7 β†’ 8.2 β€” real pixels did not help
prediction-loss finetuning of DINO blocks 12.0 β†’ 18.7 / 20.2 β€” actively worse, PCA variance 44% β†’ 82%
DINOv2 β†’ DINOv3 at matched grid needle 12.0 β†’ 11.6, offset 19.3 β†’ 19.1
mean-pooling the patch grid roughly doubles error, always

Scaling the vision side is closed. Changing the readout is what moved the number.

Ablating the head: it is the readout, not the fine feature map

variant fine grid params needle offset
no upsampling 14Γ—14 1.90M 9.2 15.4
learned Γ—2 28Γ—28 3.67M 9.8 14.7
learned Γ—4 56Γ—56 10.75M 8.8 14.7
bilinear Γ—2 (parameter-free) 28Γ—28 1.90M 9.6 14.5
flat MLP (no soft-argmax) 28Γ—28 10.07M 201.5 197.1

With no upsampling at all most of the gain is already there; a parameter-free bilinear upsample matches the learned one. Replacing soft-argmax with a flat MLP is catastrophic (201 mm). The active ingredient is the soft-argmax spatial prior, not the fine map and not nonlinearity per se.

Mechanism: soft-argmax returns the expected position of a spatial distribution, so the output moves continuously as probability mass shifts and can localize within a patch. A global linear map cannot express that. Measured: the head reads out at 6.6 mm from tokens spanning 39.5 mm.

Readout capacity: already saturated

needle, n=25k k=8 k=16 k=32 k=64
width 512 7.9 7.2 8.0 6.9
width 256 / 1024 (k=16) 7.6 / 7.1

Non-monotonic in k (32 worse than both neighbours) β‡’ single-run noise is β‰ˆ Β±0.5 mm. Quadrupling keypoints to 384 scalars does nothing for offset. k=16, width=512 is at the optimum.

Methodological warnings

  1. Sub-1 mm differences from single runs are noise. The k-sweep's non-monotonicity puts the noise floor near Β±0.5 mm. Only two effects clearly exceed it: decoder-vs-linear (2.4 mm) and data scaling (2.3 mm). Resolution (0.6 mm), pre-LN vs post-LN (0.5 mm) and a one-off DPT win (1.0 mm, did not replicate) are all within noise. Seeds are needed before trusting any of them.
  2. Offset error exceeding its components is expected, not an anomaly. Subtraction adds independent errors in quadrature. Measured/predicted ratio is a stable 1.18 across encoders (e.g. needle 12.0 βŠ• tripod 11.1 β†’ 16.3 predicted vs 19.3 measured). An earlier framing of this as "error decorrelation" was based on inverted algebra.
  3. Sample size dominates the encoder effects. Same encoder and grid: 13.6 mm at n=3,840 vs 11.3 mm at n=9,600. That 2.3 mm data effect exceeds the entire Sβ†’Bβ†’L capacity sweep (0.5 mm). All probes ran at 1.5–3.8% of the 251,811 available windows.
  4. A DPT-style multi-layer head was tried and failed (9.5β†’8.4 at 9.6k, then 14.9 and 12.6 at 25k/60k β€” worse with more data). Diagnosed: its 112Γ—112 output gives a softmax over 12,544 bins, where soft-argmax returns β‰ˆ image centre and the gradient is ~16Γ— weaker than at 28Γ—28. This is a flaw in pairing DPT with a global soft-argmax, not a verdict on multi-layer fusion.
  5. Supervision is privileged simulator pose. On real hardware EEF is free (forward kinematics); object pose is not. The deployable form is metric correspondence from calibrated depth. Read the object rows as an upper bound.
  6. Best-val checkpoint selection makes reported numbers mildly optimistic; validation holds out episodes but frames within an episode are correlated. Generalization to a different placement distribution is untested.

Architecture

RGB 224Β²  β†’  facebook/dinov3-vits16-pretrain-lvd1689m  (FROZEN, 22M)  β†’  14Γ—14 Γ— 384
   β†’ LayerNorm+Linear 384β†’256 β†’ Conv3Γ—3 β†’ Conv3Γ—3+PixelShuffleΓ—2 β†’ Conv3Γ—3
   β†’ fine feature map (256, 28, 28)            ← consumed by the world model
   β†’ 1Γ—1 conv β†’ 16 heatmaps β†’ spatial softmax β†’ soft-argmax (u,v,conf) per camera
   β†’ MLP 96β†’512β†’256β†’12  =  (eef, needle, tripod, offset) Γ— xyz

GeoHead 3.83M trainable Β· world-model predictor 2.51M Β· trunk frozen. Two cameras (agentview, robot0_eye_in_hand). Patch tokens start at index 5 (CLS + 4 registers).

Status

Weights for the full 150k-window training run land in geohead/, wm_residual/ and wm_absolute/ when the overnight pipeline completes. This card documents the measurement campaign that selected the architecture.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading