SelenoVLM couples a frozen multimodal masked autoencoder — pretrained over five co-registered global lunar mosaics — to a LoRA-adapted 7B language model, and writes geological interpretations of 51 × 67 km tiles. The point is not that it writes prose. The point is that every number it states can be checked against the rasters.
Vision-Language ModelGrounded GenerationCrater ChronologyMultimodal MAE
Tom Sander, Kay Wohlfarth & Christian Wöhler · TU Dortmund
The model never sees a photograph alone. Every tile arrives as a stack of co-registered rasters covering the same 51 × 67 km patch of surface — what it looks like, what shape it is, what the maps already say about it, and what its spectra imply about composition and maturity. Switch between them below; the terrain underneath does not change, only the way of looking at it.
Mare · Im2 · 47.9°N 25.9°WWAC reflectance
WAC reflectance
LROC Wide Angle Camera imagery — the surface as it appears to the eye. Albedo separates dark mare basalt from bright highland anorthosite, and picks out fresh ejecta.
4
Input rasters
7 B
Language model
51×67
km per tile
LoRA
Adaptation
02
Ask the model.
Pick one of eight held-out tiles and talk to the deployed model. Every response is a real generation, and every number in it is checked against the rasters the model was shown.
SelenoVLM
The trained protocol: the model reads the tile and nothing else.
Ready — the first message may take up to two minutes while the GPU wakes up.
0 / 300
Each message runs a real generation on a single GPU that scales to zero between visitors, so the model has no memory of previous turns — every answer is produced from the tile and your instruction alone. The fact check under each response is computed from the rasters, not by the model.
03
Under the hood.
The architecture is deliberately standard — a frozen vision tower, a small trainable bridge, an adapted language model. Nothing here is a new block. Walk the six stages a tile passes through on its way to a sentence.
Coordinates are deliberately withheld from the prompt. Given exact latitude and longitude the model lowers its loss through a location-to-geology shortcut, and the vision gate never opens — it stops looking at the tile.
04
What it's trained to say.
If the supervision were prose alone, the loss could bottom out on generic connective tissue — “I view this landscape as…” — which a 7B language model can write without ever looking at the tile. So the targets carry deterministic, tile-specific facts, and the tokens that spell them out carry six times the weight in the cross-entropy.
Below is a real response, run through the model's own token-weighting patterns. Toggle a category to see which words survive — those are the ones that cannot be produced without reading the rasters.
—
of the words need the tile
—
upweighted spans
×6
loss weight on those tokens
The highlighting runs the same three patterns the training code uses to build its token weights: named units and formations, model ages in Ga, and image-only measurements — albedo, relief and roughness in metres, the 415/750 ratio, crater densities. Getting this tile's numbers right becomes the cheapest way to lower the loss, which is what forces the model to use the bridge instead of collapsing onto generic prose.
05
What the measurements say.
Grounding is treated as a property to be measured, not asserted — which means the same protocol that demonstrates the model works also shows precisely where it stops working. Three measurements, in the order they should be read.
Holds up
The text is causally tied to the tile
Every number the model states is re-derived from the rasters and scored. Against three instructed open models of 24B to 27B parameters — reading the same four rasters, under the same parser and the same scoring protocol, on the same 120 held-out tiles — it states facts that survive checking two to five times as often.
Swapping the visual input rewrites about half the target tokens, and the mapped geologic unit is named on 88% of held-out tiles against at most 78% for any baseline. The margin is not model capacity: every baseline here is three times the size.
Stated-fact fidelity higher is better
SelenoVLM0.494
Mistral Small 3.2 24B0.222
Gemma 3 27B0.187
Qwen 3.5 27B0.096
Share of stated facts that match the rasters within tolerance, on an identical seeded subset of 120 held-out tiles.
Does not hold up
Generated ages regress to the prior
The model learns when to state an age reliably — on 73% of mare tiles, with a false-age rate of 1.5% on highlands. The values themselves are another matter. Stated ages collapse toward the global mare prior of about 3.45 Ga, and the mean error, 0.426 Ga, is indistinguishable from simply saying that one number every time.
A probe battery run at successive taps of one frozen forward pass locates the loss. Reading the frozen visual latent directly recovers several times more than the generated text does, and the resampler bottleneck passes that signal through intact. The failure is in the language extraction pathway, not in the representation.
Age error removed vs a constant baseline Ga · higher is better
Generated text0.004
Probe · encoder latent0.020
Probe · resampler, pooled0.021
Probe · resampler, 64 tokens0.022
Mean-absolute-error reduction against each method's own constant-age baseline. Generation: 0.426 vs 0.430 Ga on mare tiles. Probes: leave-unit-out over 20,956 mare tiles from 290 dated units, against a per-fold constant of 0.449 Ga.
The fix
Retrieval, not generation
In the deployed open-book mode the retriever supplies the published dated record, and the model integrates it faithfully rather than overriding it with its prior. Rewriting the injected record moves the stated age with it.
91.6%
stated age matches the record
0.71
slope when the record is perturbed
Which puts the ceiling somewhere useful: deployed accuracy is now bounded by retrieval quality, not by the model. When the retriever names the right unit the stated age is very nearly correct; when it names the wrong one the error is an order of magnitude worse.
Deployed age error by retrieval outcome Ga · lower is better
Right unit n = 730.087
Wrong unit n = 201.38
Mean absolute error of the stated age against the published record, split by whether retrieval named the tile's mapped unit. An oracle retriever reaches 0.195 Ga overall.
The conclusion this points to. Target design governs what a grounded planetary vision-language model states and where it stays silent. Numeric crater-chronology ages belong in decoupled heads reading the same representations, or in retrieval where published records exist — not in generated text. The failure sits in the language extraction pathway, not in the representation, which is a considerably more fixable place for it to be.
06
Paper, code & weights
Preprint on arXivarXiv:2608.092762026
Verifiably grounded machine interpretation of lunar geology
Tom Sander, Kay Wohlfarth & Christian Wöhler · Image Analysis Group, TU Dortmund University
Submitted 10 August 2026 (cs.CL, cs.LG). Every figure and number on this page is drawn from the paper; the interactive workbench above runs the very model the paper describes.
Data credits: LROC WAC imagery and LOLA topography (NASA/GSFC/ASU), the Unified Geologic Map of the Moon (USGS SIM 3116), Clementine UVVIS (NASA), and published mare-basalt model ages after Hiesinger et al. Stated crater-count ages on mare tiles reflect regional published chronology rather than independent tile-level dating; highland tiles are correctly left undated.