Repository navigation
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 thatnative_snappadded or cropped, pooled output of rectangular ROIs, and some non-defaultRS_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 rectangularget_embedding_from_datainputs. - ROI-pooled vectors of a rectangular
BBoxfordofa,remoteclip,wildsat,terrafm,fomo,scalemae,satmaepp_s2,satvision_toa, andanysatwithpooled_source="tile", and tiled pooled output withpooling="max"of models whose pooled vector is a CLS token or a fixed mean. anysatwithscale_mother than 10: passpatch_size=scale_m // 10to 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
anysattakes apatch_size, in pixels per patch side:model_config={"patch_size": n}orRS_EMBED_ANYSAT_PATCH_SIZE=n. The default,1, matches the previous behavior atscale_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 kmgsepatch now takes about 2 s instead of 14 s, andolmoearth's input about 3 s instead of 27 s. LargeBBoxrequests split into fewer pieces, and aPointBuffernow works up to abuffer_mof about 15.8 km at 10 m (2,560 m before). (#144, #145)- Custom providers:
ProviderBase.fetch_array_chwtakesspatial=instead ofregion=. - A failed image-count query for a time series now raises instead of being ignored.
- Custom providers:
anysatno longer derives its patch size fromsensor.scale_m, andscale_mno longer has to be a multiple of 10 (see Upgrade notes). (#142)olmoearthpatch_size/image_sizeandanysatpatch_sizereject non-integers instead of truncating them; whole-number floats such as4.0still 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_embeddingcould disagree.olmoearthnow runs such ROIs at their native size. (#136) thorruns 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 throughnative_snap, and any remaining resize warns and recordseffective_gsd_m. (#136)thornative_snappads 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/dofacrop 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
PointBufferon the equator withbuffer_ma multiple ofscale_m. (#145)