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 tonum_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
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)
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/>