--- title: EuroSAT Field Scout emoji: 🛰️ colorFrom: green colorTo: blue sdk: gradio sdk_version: 5.34.0 python_version: 3.11 app_file: app.py pinned: false license: mit short_description: Local EuroSAT land-use classifier for map triage. tags: - gradio - build-small-hackathon - backyard-ai - track:backyard - small-models - tiny-model - computer-vision - satellite-imagery - pytorch - eurosat - local-first - achievement:offgrid - achievement:sharing - achievement:fieldnotes datasets: - torchgeo/eurosat ---
# EuroSAT Field Scout Small local-first land-use triage for satellite tiles. **Try it:** [Live Space](https://huggingface.co/spaces/build-small-hackathon/EuroSATFieldScout) · [Demo video + social post](https://www.linkedin.com/posts/varfolomiy-yasenoviy-a0209a2a3_gradio-huggingface-hackaton-share-7471607916270080000-W9RZ/) · [Field notes](FIELD_NOTES.md)
--- ## Judges Quick Read - **Track:** Backyard AI - **Model cap:** 2.49M-parameter PyTorch CNN, far below the 32B hackathon cap - **Runtime:** Gradio Space on CPU - **Off the Grid:** no cloud inference API; the app reconstructs local weights from `weights/simple_net_v1.part*` - **Use case:** quick first-pass sorting of Sentinel-style land tiles for students, mapping volunteers, and geo demos Upload a satellite or aerial land image and the app predicts the closest EuroSAT land-use class: - AnnualCrop - Forest - HerbaceousVegetation - Highway - Industrial - Pasture - PermanentCrop - Residential - River - SeaLake ## Demo The short demo video is attached to the LinkedIn social post: https://www.linkedin.com/posts/varfolomiy-yasenoviy-a0209a2a3_gradio-huggingface-hackaton-share-7471607916270080000-W9RZ/ ## Model `SimpleNet` is a lightweight convolutional neural network trained on EuroSAT. The Space reconstructs the local weights from `weights/simple_net_v1.part*` and runs inference on CPU. | Component | Details | | --- | --- | | Architecture | Four Conv-BN-ReLU-Pool blocks plus a dense classifier | | Parameters | 2,492,170 | | Input | RGB image resized to 64 x 64 | | Output | 10 EuroSAT land-use classes | | Inference | Local PyTorch CPU inference inside the Space | ## Build Notes The checkpoint originally existed as a pickled full model object. For a safer Space deploy, it was converted to a plain PyTorch `state_dict` in `simple_net_v1.pth`. That avoids PyTorch pickle compatibility issues and makes the app startup path simple: instantiate `SimpleNet`, load weights, run inference. For the hackathon Space upload, the state dict is stored as float16 tensors and split into small `weights/simple_net_v1.part*` chunks so the submission can be reviewed without Git LFS write permissions. The app rebuilds the bytes in memory and casts floating tensors back to float32 before loading them into the model. ## Badges | Badge | Status | Why it fits | | --- | --- | --- | | Backyard AI | Submitted | Helps with a practical local mapping workflow | | Off the Grid | Submitted | No hosted LLM or remote inference service | | Sharing is Caring | Submitted | LinkedIn post and reusable Space source are public | | Field Notes | Submitted | `FIELD_NOTES.md` documents the build and deployment choices | ## Running Locally ```bash pip install -r requirements.txt python app.py ``` ## Submission Links | Item | Link | | --- | --- | | Live Space | https://huggingface.co/spaces/build-small-hackathon/EuroSATFieldScout | | Demo video + social post | https://www.linkedin.com/posts/varfolomiy-yasenoviy-a0209a2a3_gradio-huggingface-hackaton-share-7471607916270080000-W9RZ/ | | Field notes | [`FIELD_NOTES.md`](FIELD_NOTES.md) |