A newer version of the Gradio SDK is available: 6.20.0
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 · Demo video + social post · Field notes
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:
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
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 |