--- license: apache-2.0 base_model: - openai-community/gpt2 tags: - weight-space-learning - earth-observation - remote-sensing - foundation-model --- # GeoSANE: Learning Geospatial Representations From Models, Not Data GeoSANE is a geospatial model foundry that operates directly in model-weight space. Instead of training a downstream model from scratch, GeoSANE learns a shared latent representation over a population of pretrained remote sensing models and uses that representation to generate new model candidates for a target architecture. These generated models can then be evaluated and fine-tuned on downstream tasks. This repository provides a demo project for running GeoSANE on a downstream remote sensing benchmark. The included notebook walks through the full evaluation pipeline for TIMM backbones on the Sen1Floods11 segmentation task: preparing the downstream dataset, loading a trained GeoSANE checkpoint, generating model candidates, fine-tuning and saving the resulting checkpoint. ## Project Contents - `geosane-demo.ipynb`: end-to-end demo notebook - `shrp/`: the core SHRP library used by GeoSANE for weight tokenization, latent sampling, model reconstruction, evaluation, and fine-tuning - `downstream_datasets/`: downstream benchmark loaders, including Sen1Floods11, SpaceNet, EuroSAT, DIOR, fMoW, and others - `requirements.txt`: broad dependency list for setting up an environment - `requirements-lock.txt`: pinned versions from a working environment - `anchor_tokenized/`: cached tokenized anchor-model datasets generated during evaluation - `checkpoints/`: fine-tuned model checkpoints written during notebook runs ## Quick Start Create an environment and install dependencies: ```bash python -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install -r requirements.txt ``` If you want to reproduce the exact environment used for this demo as closely as possible, use: ```bash pip install -r requirements-lock.txt ``` Note: the lock file includes environment-specific PyTorch builds. You may need to install a compatible `torch` / `torchvision` pair first and then install the remaining dependencies. ## Downstream Task [A Jupyter notebook](https://github.com/HSG-AIML/GeoSANE/blob/main/geosane-demo.ipynb) is provided in [GeoSANE GitHub page](https://github.com/HSG-AIML/GeoSANE) to show in detail how to use pretrained model weights. The details of GeoSANE are described in our paper, available on [arXiv](https://arxiv.org/abs/2603.23408). The demo notebook is currently configured for: - task: segmentation - downstream dataset: Sen1Floods11 - generated backbone prompt: TIMM backbones such as `swin_s3_base_224.ms_in1k` The downstream dataset file created by the notebook is: - `data/sen1flood11_preprocessed.pt` This file is constructed from: ```python trainset = Sen1Floods11HandLabeledDataset(split="train", resize_to=(224, 224)) testset = Sen1Floods11HandLabeledDataset(split="val", resize_to=(224, 224)) ``` ## GeoSANE Checkpoints The notebook expects a trained GeoSANE run directory. The configured `model_path` must point to a directory that contains at least: - `params.json` - `checkpoint_000300/state.pt` In the notebook, this is configured through: ```python EXPERIMENT = TimmExperimentConfig( model_path=Path("/path/to/your/geosane_run"), checkpoint_rel_path=Path("checkpoint_000300/state.pt"), ... ) ``` After downloading or copying the checkpoint directory, update `model_path` in `geosane-demo.ipynb` to your local path. ## Outputs Running the notebook produces several artifacts: - `data/sen1flood11_preprocessed.pt`: preprocessed downstream dataset - `anchor_tokenized/`: tokenized anchor-model datasets used during sampling and evaluation - `checkpoints/`: fine-tuned model checkpoints saved during evaluation - `model_path/notebook_eval_results/`: JSON evaluation outputs ## Acknowledging this work If you would like to cite our work, please use the following reference: * Hanna, Joelle, Damian Falk, Stella X. Yu and Damian Borth. *GeoSANE: Learning Geospatial Representations from Models, Not Data.*, Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) 2026. ## Code This repository incorporates code from the following source: * [SANE](https://github.com/HSG-AIML/SANE)