Views
No views yet
ftp-b3).smp.Unet(encoder_name="efficientnet-b7"), in_channels=8, classes=3[0.05, 0.2, 0.75], ignore_index=3| File | Format | Notes |
|---|---|---|
config.json + model.safetensors | segmentation_models_pytorch Hub format | recommended for most users — safetensors (no pickle), self-describing architecture, needs only pip install segmentation-models-pytorch |
ftp-b7.ckpt | PyTorch Lightning checkpoint | state_dict + hyper_parameters only — optimizer/scheduler state stripped |
ftp-b7.onnx | ONNX (opset 17) | single-file, dynamic batch/H/W, needs onnxruntime (plain PyTorch cannot execute .onnx) |
ftp-b7.pt2 | torch.export ExportedProgram | standalone, dynamic batch / static 512x512, loads with torch.export.load — no ftw_planet install needed |
1import segmentation_models_pytorch as smp
2
3model = smp.from_pretrained("taylor-geospatial/ftp-b7").eval()
4logits = model(image) # image: (B, 8, H, W) float32, 2 seasonal windows x 4 bandssmp.Unet)state_dict is just an smp.Unet under a model. prefix.
Unless you need the Lightning training wrapper, smp.from_pretrained above
is simpler.1import torch
2import segmentation_models_pytorch as smp
3
4ckpt = torch.load("ftp-b7.ckpt", map_location="cpu")
5hp = ckpt["hyper_parameters"]
6model = smp.Unet(encoder_name=hp["backbone"], encoder_weights=None, in_channels=hp["in_channels"], classes=hp["num_classes"])
7model.load_state_dict({k.removeprefix("model."): v for k, v in ckpt["state_dict"].items()})
8model.eval()
9
10logits = model(image) # image: (B, 8, H, W) float, 2 seasonal windows x 4 bands1import onnxruntime as ort
2
3sess = ort.InferenceSession("ftp-b7.onnx", providers=["CPUExecutionProvider"])
4logits = sess.run(None, {"image": image_np})[0] # image_np: (B, 8, H, W) float32ftw_planet needed)1import torch
2
3exported = torch.export.load("ftp-b7.pt2")
4model = exported.module()
5logits = model(image) # image: (B, 8, 512, 512) float32, any batch sizescripts/eval/postprocess_eval.py)
recovers instance polygons.| Method | Sensor | Backbone | PQ | SQ | RQ@.5 | F1[.5:.95] | |ΔN|/N ↓ | Bd. err mean (m) ↓ | Bd. err p95 (m) ↓ | Pixel IoU † | PQ small ‡ | PQ med ‡ | PQ large ‡ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DelineateAnything * | PlanetScope | YOLO11x | 9.5 | 73.3 | 12.7 | 7.0 | 0.75 | 13.7 | 37.8 | 51.1 | 1.7 | 7.1 | 16.3 |
| DelineateAnything-S * | PlanetScope | YOLO11n | 3.5 | 70.8 | 4.8 | 2.5 | 0.82 | 13.2 | 34.2 | 40.7 | 0.8 | 2.8 | 6.7 |
| DelineateAnything v2 * | PlanetScope | YOLO11x | 7.5 | 75.0 | 10.0 | 5.6 | 0.82 | 9.4 | 25.5 | 27.1 | 4.4 | 11.4 | 14.8 |
| FTW-PRUE+ | Sentinel-2 | EfficientNet-B3 | 21.0 | 71.4 | 28.9 | 14.6 | 0.33 | 18.6 | 54.7 | 61.8 | 5.8 | 25.3 | 33.8 |
| FTW-PRUE+ | Sentinel-2 | EfficientNet-B7 | 24.2 | 71.0 | 32.8 | 17.2 | 0.35 | 14.4 | 43.4 | 63.6 | 7.5 | 28.4 | 37.7 |
| FTP-PRUE+ | PlanetScope | EfficientNet-B3 | 35.5 | 75.7 | 46.2 | 27.1 | 0.33 | 7.4 | 22.8 | 68.8 | 15.7 | 39.2 | 52.0 |
| FTP-PRUE+ (this model) | PlanetScope | EfficientNet-B7 | 35.4 | 74.4 | 46.1 | 27.0 | 0.30 | 7.4 | 22.8 | 74.2 | 15.6 | 40.6 | 50.9 |
1@misc{corley2026fieldsplanetfieldboundary,
2 title = {Fields of the Planet: Field Boundary Mapping Beyond 10m},
3 author = {Isaac Corley and Caleb Robinson and Jennifer Marcus and Hannah Kerner},
4 year = {2026},
5 eprint = {2607.04449},
6 archivePrefix = {arXiv},
7 primaryClass = {cs.CV},
8 url = {https://arxiv.org/abs/2607.04449}
9}fieldsoftheworld/ftw-baselines for source terms.