|
|
--- |
|
|
license: apache-2.0 |
|
|
datasets: |
|
|
- blanchon/EuroSAT_MSI |
|
|
language: |
|
|
- en |
|
|
metrics: |
|
|
- f1 |
|
|
- accuracy |
|
|
--- |
|
|
# Model Card: EuroSAT CNN for Land Cover Classification |
|
|
|
|
|
## Model Description |
|
|
|
|
|
This model is a Convolutional Neural Network (CNN) designed for land cover classification on the EuroSAT dataset. The EuroSAT dataset consists of Sentinel-2 satellite images, each with 13 spectral bands, and is commonly used for remote sensing applications. |
|
|
|
|
|
The CNN architecture is as follows: |
|
|
|
|
|
* **Input:** 13 spectral bands, 64x64 pixel images. |
|
|
|
|
|
* **Feature Extractor (`nn.Sequential`):** |
|
|
|
|
|
* `Conv2d`: 13 input channels, 128 output channels, kernel size 4, padding 1. |
|
|
|
|
|
* `ReLU` activation. |
|
|
|
|
|
* `MaxPool2d`: kernel size 2. |
|
|
|
|
|
* `Conv2d`: 128 input channels, 64 output channels, kernel size 4, padding 1. |
|
|
|
|
|
* `ReLU` activation. |
|
|
|
|
|
* `MaxPool2d`: kernel size 2. |
|
|
|
|
|
* `Conv2d`: 64 input channels, 32 output channels, kernel size 4, padding 1. |
|
|
|
|
|
* `ReLU` activation. |
|
|
|
|
|
* `MaxPool2d`: kernel size 2. |
|
|
|
|
|
* `Conv2d`: 32 input channels, 16 output channels, kernel size 4, padding 1. |
|
|
|
|
|
* `ReLU` activation. |
|
|
|
|
|
* `MaxPool2d`: kernel size 2. |
|
|
|
|
|
* **Classifier (`nn.Sequential`):** |
|
|
|
|
|
* `Flatten` layer. |
|
|
|
|
|
* `Linear` layer: dynamically calculated input features to 64 output features. |
|
|
|
|
|
* `ReLU` activation. |
|
|
|
|
|
* `Linear` layer: 64 input features to `num_classes` (output classes). |
|
|
|
|
|
The model is implemented using PyTorch. |
|
|
|
|
|
## Dataset |
|
|
|
|
|
The model was trained and evaluated using the **EuroSAT_MSI** dataset available on Hugging Face: <https://huggingface.co/datasets/blanchon/EuroSAT_MSI>. |
|
|
|
|
|
This dataset is a collection of Sentinel-2 satellite images, each with 13 spectral bands, categorized into 10 land cover classes. It is widely used for remote sensing and land use/land cover classification tasks. |
|
|
|
|
|
## Training Data |
|
|
|
|
|
The model was trained on the EuroSAT dataset, which contains satellite images from the Sentinel-2 mission, categorized into various land cover classes. |
|
|
|
|
|
## Training Notebook |
|
|
|
|
|
You can explore the full training process and code in the Google Colab notebook hosted on GitHub: |
|
|
[View Training Notebook on GitHub](https://github.com/Rhodham96/EuroSatCNN/blob/main/EuroSATCNN.ipynb) |
|
|
|
|
|
## Evaluation Results |
|
|
|
|
|
The model's performance was evaluated on a dedicated test set. |
|
|
|
|
|
* **Test Accuracy:** 87.96% |
|
|
|
|
|
* **F1 Score (weighted):** 0.8776 |
|
|
|
|
|
## Usage |
|
|
|
|
|
This model can be used for automated land cover classification of Sentinel-2 satellite imagery, specifically for images similar to those found in the EuroSAT dataset. |
|
|
|
|
|
### Example (PyTorch) |
|
|
|
|
|
```python |
|
|
import torch |
|
|
import torch.nn as nn |
|
|
|
|
|
from model_def import EuroSATCNN |
|
|
|
|
|
|
|
|
# Example usage: |
|
|
# Assuming num_classes is known, e.g., 10 for EuroSAT |
|
|
# model = EuroSATCNN(num_classes=10) |
|
|
# model.load_state_dict(torch.load("pytorch_model.bin")) |
|
|
# dummy_input_image = torch.randn(1, 13, 64, 64) # Batch size 1, 13 channels, 64x64 |
|
|
# output = model(dummy_input_image) |
|
|
# print(output.shape) # Should be torch.Size([1, 10]) if num_classes=20 |
|
|
|
|
|
|
|
|
--- |
|
|
## About the Author |
|
|
|
|
|
This model was developed by **Robin Hamers**. |
|
|
|
|
|
* **LinkedIn:** <https://www.linkedin.com/in/robin-hamers/> |
|
|
|