Hugging Face model: geotessera/TESSERA-V-2.0-2B-N
Author: geotessera
Created: 2026-07-24 15:32:28
Last modified: 2026-07-24 16:24:24
Library: pytorch
Likes: 0 | Downloads: 0
Tags: pytorch, geospatial, earth-observation, remote-sensing, foundation-model, sentinel-1, sentinel-2, sar, multispectral, temporal, pixel-embedding, self-supervised-learning, barlow-twins, knowledge-distillation, matryoshka, en, arxiv:2607.03949, license:cc0-1.0, region:us
Card metadata:
language: en
license: cc0-1.0
license_name: cc0
license_link: https://creativecommons.org/publicdomain/zero/1.0/
library_name: pytorch
provider: University of Cambridge / ucam-eo
funder: UKRI MR/Z505456/1; AIRR DAWN; AMD; Vultr; AIRR Isambard AI; STFC Durham DiRAC HPC Facility; Microsoft AI For Good Lab; Tarides; Jane Street; Google; Dr. Robert Sansom; John Bernstein
tags: geospatial, earth-observation, remote-sensing, foundation-model, sentinel-1, sentinel-2, sar, multispectral, temporal, pixel-embedding, self-supervised-learning, barlow-twins, knowledge-distillation, matryoshka
embedding_spatial_types: pixel
embedding_temporal_type: multi-date
embedding_spatial_context: spatial context determined by embedding spatial type
embedding_temporal_context: annual multi-temporal context from valid Sentinel-1 and Sentinel-2 observations for the same pixel
embedding_dimension: 128
description: TESSERA v2 Nano (1.07M parameters) is a compact pixel-wise geospatial foundation encoder for multimodal Sentinel-1/2 time series, distilled from the 2.06-billion-parameter TESSERA v2 2B teacher (geotessera/TESSERA-V-2.0-2B-Teacher). It emits a 128-dimensional Matryoshka embedding whose first K coordinates are independently usable for K in {16, 32, 64, 128}, so storage can be traded against accuracy without retraining.
compression: Native output is fp32 128-d. Two orthogonal compression paths are supported: (1) Matryoshka truncation -- keep the first 16/32/64 dimensions with no retraining; (2) linear int8 quantization via the bundled quantize.py, storing an int8 array plus a float32 per-pixel scale, reconstructed as int8.astype(float32) * scales[..., None].
intention: Scientific research and downstream geospatial analysis, including environmental monitoring, conservation, habitat mapping, carbon and biomass estimation, agricultural monitoring, crop mapping, food security analysis, climate change research, and sustainable land-use applications.
cautions: TESSERA embeddings are annual, 10m spectral-temporal representations, not raw imagery and not real-time monitoring data. Accuracy may degrade in regions or years with very few valid observations, and users should validate performance for their own task and geography. The Sentinel-2 input channel order used by this model is NOT the conventional ascending-wavelength order -- see the Input contract section. Benchmark scores reported in the TESSERA v2 preprint were measured on students distilled from the 1B teacher and do not describe these checkpoints; numbers for the 2B-distilled students will be published separately.
precomputed_embeddings: no
publication_link: https://arxiv.org/abs/2607.03949
model_architecture: Two per-modality backbones (Sentinel-2 and merged Sentinel-1), each an MLP band embedding plus sinusoidal day-of-year positional encoding, a 2-layer post-LN Transformer encoder (d_model=144, 4 heads, FFN=384, ReLU) and single-head softmax attention pooling over time; concat fusion into an MLP dim_reducer ending in a non-affine LayerNorm that yields a scale-locked 128-d output. QK-norm is disabled.
distillation: teacher: TESSERA v2 2B pixel-wise teacher (2,064,266,242 parameters, 1024-d output) — geotessera/TESSERA-V-2.0-2B-Teacher
objective: Matryoshka distillation -- a separate linear head per prefix length K in {16, 32, 64, 128} reconstructs the full frozen teacher embedding from the student's first K coordinates, which imposes an ordering on the student's coordinates that self-supervision alone cannot supply.
projector: training-only; discarded at inference
student_parameters: 1066402
inference: data_types: multispectral, SAR
product_names: Sentinel-2 L2A, Sentinel-1 RTC
patch_size: 1
temporal_context: annual multi-date time series; every valid observation per pixel is used and the observation count is bucketized to the nearest bin in 8, 16, ..., 256