Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,51 @@
# Changelog

## 0.2.0 (2026-11-12)

Second experimental release. It adds a foundation-model workflow, ViT and DPT conversion,
more raster blocks for standard CNN encoders, and a plain-language way in.

- **Prithvi-EO-1.0 Sen1Floods11.** `tensor_ee.models.prithvi_sen1floods11` composes the
100M-parameter flood model from window blocks and runs it in staged exports, as one
224 × 224 crop or a region of whole crops, from its released trained checkpoint. It was
checked live against PyTorch on synthetic crops and on one real Sentinel-2 crop from the
held-out Bolivia event: logits within 1.41e-5, with 0 argmax disagreements. Water IoU
against that crop's hand label was 0.911, an example and not an accuracy score. A 2 × 2
region of synthetic crops matched within 6.11e-6. Merged stages run a crop in 16 exports
instead of 33.
- **ViT-B/16 and DPT conversion.** The converter recognizes timm ViT-B/16 encoders and SMP
0.5.0 DPT models at 224 × 224, and converts them to graphs byte-identical to hand-composed
targets. The numerical evidence is narrower than for the other models: random weights
only; offline, the full-width head and logits are within 2.06e-5 of float32 PyTorch; live
agreement covers reduced twins and individual blocks, not the full-width model.
- **Ten new blocks, 88 in all** (23 raster, 65 window). Raster: `relu6`, `hardsigmoid`,
`hardswish`, `batch_norm`, `bilinear_upsample`, `grouped_conv2d` (grouped and depthwise)
and `standardize`. Window: `class_token_attention`, `concat_rows` and
`window_depth_to_space`. Each was validated live at the settings its catalogue row lists.
- **New settings on existing blocks,** each keyword-only, validated live, with today's
default graph unchanged: stride 2 and per-crop padding for `conv3x3_window`, epsilon 1e-6
for `layer_norm`, ×2 with aligned corners for `window_resize`, and an opt-in slice gather
for `relative_position_bias`.
- **SMP adapter.** Unet on `resnext50_32x4d` and `mobilenet_v2` encoders now builds its graph
offline through the grouped and depthwise convolution. Neither whole model has been
checked in Earth Engine.
- **A way in.** A plain-language start guide and three Colab notebooks: a quickstart with the
trained U-Net, an offline check of whether your own model is supported, and your own CNN
from checkpoint to an exported region.
- **Numerical comparisons.** The 1e-4 absolute target against float32 PyTorch applies to
block fixtures and to a model's final outputs. A model's intermediate outputs are checked
against float64 PyTorch instead.
- **For contributors.** Gate fixtures are generated from integer arithmetic, so the
graph-identity checks can be judged on Linux as well as on macOS arm64.

`pip install tensor-ee` provides the library, the converter and the models. The notebooks,
the tools that drive the Prithvi staged runs, the demos and the tests need a checkout.

Support and numerical evidence apply only to the documented settings, and numerical
agreement does not establish segmentation accuracy. The Prithvi checkpoint is a separate
third-party release under its own terms. The SegWater and Swin-T checkpoint files and the
full training dataset description are not yet public.

## 0.1.0 (2026-10-21)

First experimental release of TensorEE, for expressing supported PyTorch models as
Expand Down
7 changes: 4 additions & 3 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@ authors:
given-names: Noel Ivan
# Concept DOI: resolves to the latest archived release on Zenodo.
doi: 10.5281/zenodo.23524569
version: 0.1.0
date-released: 2026-10-21
version: 0.2.0
date-released: 2026-11-12
license: MIT
abstract: >-
Experimental building blocks that run pretrained PyTorch models natively in
Google Earth Engine, as Earth Engine raster and array operations with no
model-serving endpoint. A restricted CNN compiler translates the SegWater
ResNet18 U-Net and standard segmentation-models-pytorch Unet and UnetPlusPlus
models on ResNet and VGG encoders, a converter maps supported attention models (SMP SegFormer-B0,
and SMP UPerNet with timm's Swin-T) onto the library's blocks, and a planner
SMP UPerNet with timm's Swin-T, and SMP DPT with timm's ViT-B/16) onto the library's blocks,
a hand-composed model runs the Prithvi-EO-1.0 Sen1Floods11 flood checkpoint, and a planner
and runner split their graphs into staged exports.
2 changes: 1 addition & 1 deletion docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ python -m pip install tensor-ee
```

pip ends with `Successfully installed`, followed by what it installed; the distribution
is `tensor-ee` 0.1.0. Allow several minutes: most of the download is PyTorch, about 600 MB
is `tensor-ee` 0.2.0. Allow several minutes: most of the download is PyTorch, about 600 MB
once installed on macOS. On Linux, pip's default PyTorch build also brings the CUDA
libraries, a few gigabytes; to skip them, install the CPU-only build before installing
TensorEE, as the continuous integration does:
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"

[project]
name = "tensor-ee"
version = "0.1.0"
description = "Experimental building blocks for running pretrained PyTorch models natively in Google Earth Engine: a restricted CNN compiler (the SegWater U-Net; standard SMP Unet and UnetPlusPlus on ResNet and VGG encoders), a converter for supported attention models (SMP SegFormer-B0; SMP UPerNet with timm's Swin-T), and a planner and runner for staged exports."
version = "0.2.0"
description = "Experimental building blocks for running pretrained PyTorch models natively in Google Earth Engine: a restricted CNN compiler (the SegWater U-Net; standard SMP Unet and UnetPlusPlus on ResNet and VGG encoders), a converter for supported attention models (SMP SegFormer-B0; SMP UPerNet with timm's Swin-T; SMP DPT with timm's ViT-B/16), a hand-composed Prithvi-EO-1.0 Sen1Floods11 model, and a planner and runner for staged exports."
readme = "README.md"
license = "MIT"
license-files = ["LICENSE"]
Expand Down
2 changes: 1 addition & 1 deletion tensor_ee/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
try:
__version__ = _distribution_version("tensor-ee")
except _PackageNotFoundError:
__version__ = "0.1.0" # Source checkouts need no installed distribution metadata.
__version__ = "0.2.0" # Source checkouts need no installed distribution metadata.

from .comparison import PixelTensor, compare_segmentation
from .compatibility import CompatibilityReport, check_compatibility
Expand Down
Loading