|
Download README.md from davidlsan/EuroSAT_RGB_Land_Cover_Classifier: direct link, hf CLI and curl.
- Browser
- Download file 2.62 kB
-
https://huggingface.co/spaces/davidlsan/EuroSAT_RGB_Land_Cover_Classifier/resolve/main/README.md
- Command line
-
hf download hf://spaces/davidlsan/EuroSAT_RGB_Land_Cover_Classifier/README.md
-
curl -L -o README.md https://huggingface.co/spaces/davidlsan/EuroSAT_RGB_Land_Cover_Classifier/resolve/main/README.md
2.62 kB
| title: EuroSAT RGB Land Cover Classifier | |
| sdk: streamlit | |
| app_file: app/streamlit-app.py | |
| # EuroSAT Land Cover Classification | |
| CNN-based land cover classification on EuroSAT, comparing RGB imagery with 13-band Sentinel-2 multispectral input. | |
| ## Streamlit RGB Demo | |
| `app/app.py` is a Hugging Face Spaces-ready Streamlit demo for the EuroSAT-RGB ResNet-50 classifier. It shows an Esri World Imagery map centered on Bergen, Norway, lets a user draw a rectangle, fetches the corresponding RGB map tiles, and displays the predicted EuroSAT land cover class plus the top-3 class probabilities. | |
| The RGB model was trained on EuroSAT-RGB tiles, which are about 64x64 pixels and roughly 640m on a side. Predictions on arbitrary map regions are illustrative; for best results, draw a rectangle of roughly 500m-1km on a side over land. | |
| Classes: Annual Crop, Forest, Herbaceous Vegetation, Highway, Industrial Buildings, Pasture, Permanent Crop, Residential Buildings, River, SeaLake. | |
| Validation accuracy on EuroSAT-RGB: **96.8%**. | |
| Main GitHub repo: [davidlsan/EuroSAT-Land-Cover-Classification](https://github.com/davidlsan/EuroSAT-Land-Cover-Classification) | |
| ## Run Locally | |
| Place the trained RGB checkpoint at: | |
| ```bash | |
| weights/rgb_e15_best.pt | |
| ``` | |
| Install dependencies with uv and start the app: | |
| ```bash | |
| uv sync | |
| uv run streamlit run app/app.py | |
| ``` | |
| For Hugging Face Spaces, use the Streamlit SDK and include `app/app.py`, `app/model_utils.py`, `app/tile_utils.py`, `requirements.txt`, and the checkpoint at `weights/rgb_e15_best.pt`. | |
| ## Notebooks | |
| - `[notebooks/01_data_exploration.ipynb](notebooks/01_data_exploration.ipynb)` - RGB EDA (class balance, sample grid). Run from the repository root so PNGs land in `[figures/](figures/)`. | |
| - `[notebooks/02_data_exploration_multispectral.ipynb](notebooks/02_data_exploration_multispectral.ipynb)` - 13-band MSI EDA (class balance, composites, per-band stats, class-mean spectra, band correlation, RGB-MSI alignment). | |
| ## Training | |
| Run from the repository root: | |
| ```bash | |
| python3 main.py --modality rgb --epochs 15 --batch-size 32 --num-workers 2 --lr 1e-3 | |
| ``` | |
| ### CLI Flags | |
| - `--modality`: values `rgb` or `msi`. RGB loads the `blanchon/EuroSAT_RGB` dataset, while MSI loads `blanchon/EuroSAT_MSI`. | |
| - `--epochs`: number of full passes over the training split. Defaults to `15`. | |
| - `--batch-size`: number of samples per batch. Defaults to `32`. | |
| - `--num-workers`: DataLoader worker processes. Defaults to `2`, but `0` is safer for debugging. | |
| - `--lr`: learning rate for Adam. Defaults to `1e-3`. | |
| - `--seed`: seeds Python, NumPy, and PyTorch for best-effort reproducibility. | |