Skip to content

v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Nov 05:24
· 1 commit to main since this release

Google Earth Engine fetches are about 3–10× faster with the same pixels, and a round of fixes makes ROI cropping and pooling consistent across models. Several of those fixes change embeddings, so read the upgrade notes before comparing with results from 0.3.x.

Upgrade notes

Several fixes below change embeddings that earlier versions returned. Re-export results that fall in these cases:

  • thor: ROIs smaller than 288 px under the default input prep, inputs that native_snap padded or cropped, pooled output of rectangular ROIs, and some non-default RS_EMBED_THOR_* settings.
  • On-the-fly models: ROIs no larger than one tile in batched or combined exports, and ROIs up to 10% larger than one tile on every path.
  • Square-input models (agrifm, anysat, clay, dofa, fomo, galileo, prithvi, remoteclip, olmoearth): grid and ROI-pooled output when the array fed to the model was not square, such as rectangular get_embedding_from_data inputs.
  • ROI-pooled vectors of a rectangular BBox for dofa, remoteclip, wildsat, terrafm, fomo, scalemae, satmaepp_s2, satvision_toa, and anysat with pooled_source="tile", and tiled pooled output with pooling="max" of models whose pooled vector is a CLS token or a fixed mean.
  • anysat with scale_m other than 10: pass patch_size=scale_m // 10 to reproduce the earlier output.

INPUT_PREP_VERSION is now 4, so resume=True re-runs on-the-fly outputs written by earlier versions. The anysat scale_m change is not covered by it: re-run those exports without resume.

Added

  • anysat takes a patch_size, in pixels per patch side: model_config={"patch_size": n} or RS_EMBED_ANYSAT_PATCH_SIZE=n. The default, 1, matches the previous behavior at scale_m=10. (#142)

Changed

  • GEE fetches are about 3–10× faster, with the same pixels. Pixels download as binary arrays (computePixels) instead of JSON, the time bins of multi-frame inputs download concurrently, and Earth Engine is initialized once per process instead of on every request. A 4 km gse patch now takes about 2 s instead of 14 s, and olmoearth's input about 3 s instead of 27 s. Large BBox requests split into fewer pieces, and a PointBuffer now works up to a buffer_m of about 15.8 km at 10 m (2,560 m before). (#144, #145)
    • Custom providers: ProviderBase.fetch_array_chw takes spatial= instead of region=.
    • A failed image-count query for a time series now raises instead of being ignored.
  • anysat no longer derives its patch size from sensor.scale_m, and scale_m no longer has to be a multiple of 10 (see Upgrade notes). (#142)
  • olmoearth patch_size / image_size and anysat patch_size reject non-integers instead of truncating them; whole-number floats such as 4.0 still work. (#142)

Fixed

  • Inputs that fit in one tile reach the model whole. The tiler padded them in batched and combined exports and shrank inputs up to 10% larger than a tile, so exports and get_embedding could disagree. olmoearth now runs such ROIs at their native size. (#136)
  • thor runs at the correct pixel spacing. Its fixed resize told the model the wrong ground size for inputs other than 288 px (about 11% off at 256 px). Sub-tile ROIs now go through native_snap, and any remaining resize warns and records effective_gsd_m. (#136)
  • thor native_snap pads with edge pixels instead of zeros, crops the ROI in the right frame, and pools rectangular ROIs like square ones. (#137, #138)
  • Square-input models crop the ROI in their own input frame. For non-square inputs the grid could be one token off and keep padding cells. (#139, #141)
  • ROI-pooled vectors are comparable with the model's own pooled vector. Several models ignored the ROI, pooled it in another feature space, or used another reduction; every on-the-fly model now pools an ROI the way it pools a whole input. (#140, #143)
  • A resumed combined export keeps each input's ROI window and fetch flags, and clay / dofa crop the ROI on the tensor-backend batch path. (#141)
  • GEE fetches no longer add a row south of an ROI whose south edge lies exactly on a pixel line, such as a PointBuffer on the equator with buffer_m a multiple of scale_m. (#145)