Skip to content

Supported Models (Advanced Reference)

This page is for cross-model comparison after you already have a shortlist.

If you are choosing a model for the first time, start with Supported Models (Overview).

If you need the exact contract for one specific model, use the per-model detail pages in Reference -> Model Details.

If you are authoring a new per-model doc page, use Model Detail Template.


Use this page to compare preprocessing assumptions, temporal packaging, side-input requirements, and the environment variables that materially change model behavior. The main sections are Precomputed Embeddings, Quick Comparison, Temporal Handling, Multi-frame Semantics, Modality and Extra Inputs Matrix, and Preprocessing and Temporal Env Vars.


How To Use This Page

Reading tips

Start with Quick Comparison if you are deciding between models. Read Temporal Handling and Multi-frame Semantics before comparing temporal models, and use Modality and Extra Inputs Matrix when you need a fair benchmark across models with different side inputs. Preprocessing and Temporal Env Vars matters mainly when you are tuning preprocessing or reproducing training pipelines.

Canonical model IDs in this page use the short public names from MODEL_SPECS, such as remoteclip, prithvi, terrafm, and thor. Some linked detail-page filenames still retain older names for compatibility.

Precomputed Embeddings

Model ID Output Resolution Dim Time Coverage Notes
Tessera tessera pooled / grid 10m 128 2017–2025 GeoTessera global tile embeddings
Google Satellite Embedding (Alpha Earth) gse pooled / grid 10 m 64 2017–2024 Annual embeddings via GEE
Copernicus Embed copernicus pooled / grid 0.25° 768 2021 Official Copernicus embeddings

On-the-fly Foundation Models

The source of truth for this section is the adapter code in src/rs_embed/embedders/catalog.py, src/rs_embed/embedders/onthefly_*.py, src/rs_embed/embedders/_vit_mae_utils.py, and src/rs_embed/embedders/runtime_utils.py.

Quick Comparison

Use this table for a first-pass side-by-side comparison of input assumptions and preprocessing behavior.

Model ID Architecture / Backbone Default Fetch Resolution Input Default Preprocessing Resize / Crop / Pad Output Structure Training Alignment
remoteclip rshf.remoteclip.RemoteCLIP (open_clip style CLIP ViT) 10m S2 RGB (B4,B3,B2) raw SR 0..10000 -> /10000 -> RGB uint8; then model transform if available, else CLIP norm image size 224; fallback path uses Resize + CenterCrop; no pad pooled vector or ViT token grid Medium (high if wrapper transform matches training; fallback is generic CLIP pipeline)
satmae rshf.satmae.SatMAE 10m S2 RGB (B4,B3,B2) raw SR -> /10000 -> RGB uint8; prefer model transform, else CLIP norm default 224; CLIP fallback has Resize + CenterCrop; no pad token sequence -> pooled or patch-token grid Medium
satmaepp rshf.satmaepp.SatMAEPP 10m S2 RGB (B4,B3,B2) raw SR -> /10000 -> RGB uint8; SatMAE++ fMoW eval preprocessing (Normalize + Resize(short side) + CenterCrop), default channel order rgb default 224; source-aligned short-side resize + center crop; no pad token sequence -> pooled or patch-token grid High
satmaepp_s2_10b SatMAE++ grouped-channel source branch (models_mae_group_channels.py, base / large runtime families) 10m S2 SR 10-band (B2,B3,B4,B5,B6,B7,B8,B8A,B11,B12) raw 10-band CHW; source Sentinel min/max mapping to uint8; ToTensor + Resize(short side) + CenterCrop default 96 with patch size 8; source-style resize/crop; no pad grouped token sequence -> pooled or group-reduced spatial token grid High
scalemae rshf.scalemae.ScaleMAE (ViT style) 10m S2 RGB (B4,B3,B2) + input_res_m raw SR -> /10000 -> RGB uint8; ImageNet eval normalize; derive effective input_res_m after preprocess default 224; Resize(short side) + CenterCrop; no pad token sequence or pooled vector depending on wrapper output Medium-High
anysat AnySat from upstream hubconf.py (AnySat, tiny / small / base) 10m S2 10-band TCHW (or CHW auto-expanded) clip to 0..10000; normalize mode default per_tile_zscore; builds per-frame s2_dates resize TCHW to default 24; no crop, no pad grid defaults to dense sub-patch output [D,H,W]; pooled defaults to patch-grid mean/max, optional native tile vector Medium
galileo Encoder from official single_file_galileo.py 10m S2 10-band TCHW (or CHW auto-expanded) clip to 0..10000; normalize mode default none with optional official_stats; constructs Galileo tensors with configurable T + per-frame months default 64 with patch 8; bilinear resize; no pad pooled token vector and official-style patch-mean token grid Medium
wildsat WildSAT backbone + optional image head from checkpoint 10m S2 RGB CHW clip to 0..10000 then /10000; default normalization minmax; convert to uint8 then unit tensor default 224; resize RGB; no pad pooled branch output and optional grid (token or feature path) Medium-Low
prithvi Vendored PrithviMAE runtime with HF checkpoints 30m S2 6-band (BLUE,GREEN,RED,NIR_NARROW,SWIR_1,SWIR_2) raw SR -> /10000 -> clamp [0,1]; prep mode from env default mode resize to 224; optional pad to patch multiple (legacy) token sequence -> pooled or patch-token grid Medium
terrafm TerraFM-B from vendored runtime + HF weights 10m S2 12-band or S1 VV/VH S2: /10000 to [0,1]; S1: log1p + p99 scaling to [0,1] resize to 224; no pad pooled embedding, optional feature-map grid Medium
terramind TerraTorch BACKBONE_REGISTRY TerraMind backbone 10m S2 SR 12-band raw 0..10000; resize 224; z-score with TerraMind v1/v01 pretrained mean/std fixed 224; no pad token sequence -> pooled or patch-token grid High
dofa DOFA ViT (base / large, official checkpoints) 10m multi-band SR CHW + wavelengths raw SR 0..10000 -> 0..255-like scale -> official per-band mean/std; provide/infer wavelengths bilinear resize to 224; explicitly no crop/pad pooled vector or token grid (usually 14x14) Medium-High
fomo FoMo MultiSpectralViT (FoMo-Bench) 10m S2 SR 12-band clip 0..10000; default unit_scale (optional minmax/none) default 64; bilinear resize; no pad token sequence pooled; grid as spectral-mean patch-token map Medium
thor Fully vendored THOR runtime (tiny / small / base / large) 10m S2 SR 10-band clip 0..10000; default thor_stats z-score after reflectance scaling default 288; bilinear resize; no pad pooled tokens and grouped token grid Medium-High
agrifm AgriFM PretrainingSwinTransformer3DEncoder 10m S2 10-band time series [T,C,H,W] clip 0..10000; default agrifm_stats z-score using official config stats default 224; TCHW resize; no pad feature map grid [D,H,W], pooled by spatial mean/max High
satvision timm SwinTransformerV2 (SatVision-TOA checkpoints) 1000m TOA 14 channels in strict order channel-aware normalization to [0,1] (auto/raw/unit, reflectance + emissive calibration) default 128; bilinear resize; no pad model output as pooled or grid depending on tensor shape High (if band order and calibration match checkpoint)

Here, "Default Fetch Resolution" refers to the default source-side resolution used when fetching raw inputs. It does not mean the final spatial size of the tensor after model-specific resize, crop, or pad.

Temporal Handling

Read this section before comparing any model that accepts TemporalSpec.range(...).

For most on-the-fly adapters, TemporalSpec.range(start, end) means "filter imagery in [start, end) and build one composite patch for model input," usually with median and optionally mosaic through SensorSpec.composite.

The multi-frame adapters agrifm, anysat, and galileo instead split the requested range into sub-windows and composite one frame per bin. Current single-composite adapters include remoteclip, satmae, satmaepp, satmaepp_s2_10b, scalemae, wildsat, prithvi, terrafm, terramind, dofa, fomo, thor, and satvision.

Multi-frame Semantics

This section only matters for adapters that construct multi-frame inputs from one requested time window.

Shared behavior for current multi-frame adapters (agrifm, anysat, galileo):

All three split TemporalSpec.range(start, end) into T equal end-exclusive sub-windows and composite each sub-window into one frame. If a sub-window has no valid observation, the provider path reuses a fallback composite so frame count stays stable. The runtime always enforces exactly T frames; for user-provided inputs that means CHW is repeated to T and TCHW is padded or truncated to T. Frame compositing follows SensorSpec.composite, with median as the default and mosaic as the main alternative.

Per-model temporal packaging:

Model ID Frame count env (default) Temporal side input Notes
agrifm RS_EMBED_AGRIFM_FRAMES (8) none (uses TCHW directly) Temporal information is encoded only in the frame stack.
anysat RS_EMBED_ANYSAT_FRAMES (8) s2_dates (per-frame DOY, 0..364) DOY values are derived from each frame bin midpoint date.
galileo RS_EMBED_GALILEO_FRAMES (8) months (per-frame month, 1..12) By default from frame bin midpoints; RS_EMBED_GALILEO_MONTH can force a constant month for all frames.

Modality and Extra Inputs Matrix

Use this table to avoid unfair comparisons between plain image encoders and adapters that require side inputs.

Interpretation:

"Backbone multimodal" means the upstream model family supports multiple modalities. "Current rs-embed path" means what this implementation actually feeds today. "Requires extra metadata" means the forward path needs non-image inputs as a hard requirement.

Model ID Backbone multimodal? Current rs-embed path uses multiple modalities? Multi-input forward (beyond image tensor)? Requires extra metadata?
remoteclip No No No No
satmae No No No No
satmaepp No No No No
satmaepp_s2_10b No (this adapter path) No No No (but strict 10-band order is required)
scalemae No No Yes (input_res_m) Yes: scale/resolution (sensor.scale_m)
anysat Yes Partially (S2-only imagery, plus temporal date tokens) Yes (s2, s2_dates) Yes: day-of-year/date signal (derived from temporal range)
galileo Yes Mostly S2 path in current adapter + temporal month tokens Yes (multiple tensors + masks + months) Yes: month/time signal (derived from temporal range)
wildsat No No No No
prithvi No (this adapter path) No Yes (x, temporal_coords, location_coords) Yes: location + time are required
terrafm Yes (S1/S2) Yes (select one modality per call: s1 or s2) No No hard extra metadata (optional S1 options: orbit, linear/DB path)
terramind Yes Usually single selected modality (S2L2A default) No (single selected modality tensor in this adapter) No hard extra metadata
dofa Yes (spectral generalization) Yes (multi-band spectral input) Yes (image + wavelength list) Yes: per-band wavelengths (explicit or inferable from bands)
fomo No No No No
thor No (this adapter path) No No No
agrifm No (this adapter path) No No extra side tensor, but temporal stack [T,C,H,W] required Temporal coverage is important (no separate metadata tensor)
satvision No (this adapter path) No No separate side tensor Yes: strict 14-channel order/calibration schema (band semantics)

In practice, the most obviously multi-input models here are prithvi (image plus temporal and location coordinates), anysat (time series plus s2_dates), galileo (image-derived tensors plus masks and months), dofa (image plus wavelengths), and scalemae (image plus input_res_m).

Preprocessing and Temporal Env Vars

This table only lists env vars that materially change model input construction or temporal packaging.

Model ID Main preprocessing env keys
remoteclip fixed image_size=224 in code path; no per-model preprocess env switch
satmae RS_EMBED_SATMAE_IMG
satmaepp RS_EMBED_SATMAEPP_ID, RS_EMBED_SATMAEPP_IMG, RS_EMBED_SATMAEPP_CHANNEL_ORDER, RS_EMBED_SATMAEPP_BGR
satmaepp_s2_10b RS_EMBED_SATMAEPP_S2_CKPT_REPO, RS_EMBED_SATMAEPP_S2_CKPT_FILE, RS_EMBED_SATMAEPP_S2_MODEL_FN, RS_EMBED_SATMAEPP_S2_IMG, RS_EMBED_SATMAEPP_S2_PATCH, RS_EMBED_SATMAEPP_S2_GRID_REDUCE, RS_EMBED_SATMAEPP_S2_WEIGHTS_ONLY
scalemae RS_EMBED_SCALEMAE_IMG
anysat RS_EMBED_ANYSAT_IMG, RS_EMBED_ANYSAT_NORM, RS_EMBED_ANYSAT_FRAMES, RS_EMBED_ANYSAT_GRID_MODE, RS_EMBED_ANYSAT_POOLED_SOURCE
galileo RS_EMBED_GALILEO_IMG, RS_EMBED_GALILEO_PATCH, RS_EMBED_GALILEO_NORM, RS_EMBED_GALILEO_FRAMES, RS_EMBED_GALILEO_MONTH
wildsat RS_EMBED_WILDSAT_IMG, RS_EMBED_WILDSAT_NORM
prithvi RS_EMBED_PRITHVI_PREP, RS_EMBED_PRITHVI_IMG, RS_EMBED_PRITHVI_PATCH_MULT
terrafm modality and sensor-side options (s2/s1); image size fixed to 224 in implementation
terramind RS_EMBED_TERRAMIND_NORMALIZE (default z-score stats), image size fixed 224
dofa image size fixed 224; provider/tensor channels and wavelengths drive preprocessing
fomo RS_EMBED_FOMO_IMG, RS_EMBED_FOMO_NORM
thor RS_EMBED_THOR_IMG, RS_EMBED_THOR_NORMALIZE
agrifm RS_EMBED_AGRIFM_IMG, RS_EMBED_AGRIFM_NORM, RS_EMBED_AGRIFM_FRAMES
satvision RS_EMBED_SATVISION_TOA_IMG, RS_EMBED_SATVISION_TOA_NORM, channel-index and calibration env keys

Practical Guidance

For highest reproducibility, keep each model's default normalization mode unless you can match the original training pipeline exactly. For strict-schema models such as satvision, terramind, thor, and agrifm, do not change channel order unless checkpoint metadata explicitly allows it. If you are comparing embeddings across models, standardize ROI and temporal compositing first, because preprocessing differences are substantial.