EuroSATFieldScout / README.md
yava-code's picture
Configure EuroSAT Field Scout submission (#1)
84f1282
|
Raw
History Blame Contribute Delete
3.69 kB
---
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
---
<div align="center">
# 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)
</div>
---
## 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) |