finds.dev← search

// the find

ucam-eo/tessera

★ 751 · Python · MIT · updated Aug 2026

[CVPR26] TESSERA is a foundation model that can process time-series satellite imagery for applications such as land classification and canopy height prediction. Developed at the University of Cambridge, it enables efficient extraction of temporal patterns from Earth observation

TESSERA is a self-supervised foundation model that turns a year of Sentinel-1/2 time series into per-pixel 128-d embeddings at 10m global resolution, trained with a Barlow Twins objective on cloud-corrupted satellite data. It's aimed at remote sensing researchers doing land cover, crop type, or canopy height work who want off-the-shelf embeddings instead of training task-specific models from raw imagery.

The v2 students emit Matryoshka embeddings (16/32/64/128-d truncatable from one checkpoint, no retraining needed) which is a genuinely useful space/accuracy tradeoff for downstream storage. Most users never need to run the pipeline at all — precomputed global embeddings are downloadable via the separate GeoTessera package, and this repo is only needed if you want custom regions/years. The README is unusually explicit about the sharp edges that would otherwise silently corrupt results: the non-standard Sentinel-2 band order tied to the checkpoint weights, and the fact the 2B teacher and distilled students use different S1 ascending/descending normalization schemes.

There are four non-interchangeable inference codepaths (v1.0 early, v1.0 QAT, v1.1, v2), each with its own checkpoints and normalization stats — the README even documents a past incident where the AWS preprocessing pipeline double-applied a BOA offset and silently degraded a released checkpoint, which is the exact failure mode this fragmentation invites. Running your own inference is a heavyweight ask: Linux-only preprocessing (no macOS), 1TB+ storage and 128GB RAM for a modest 100km² tile, plus hand-editing bash scripts and chmod'ing shell wrappers rather than a proper CLI or pip package. The repo also carries three near-duplicate profiler directories under each inference variant, which is dead weight for anyone just trying to run inference.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →