EuroSAT Land Cover Classifier (ResNet50)

ResNet50 fine-tuned via transfer learning to classify Sentinel-2 satellite image patches into 10 land cover categories, using the EuroSAT dataset.

Model Details

  • Base model: ResNet50, pretrained on ImageNet (IMAGENET1K_V2 weights via torchvision)
  • Training approach: final layer trained first (backbone frozen), then full fine-tuning at lower learning rate
  • Input: 224x224 RGB images, normalized with ImageNet mean/std
  • Output: 10-class softmax (see label map below)

Performance (EuroSAT official test split, 2,700 images)

  • Overall test accuracy: 98%
  • Weakest classes: PermanentCrop (F1 0.96), AnnualCrop (F1 0.96)
  • Strongest classes: Residential, SeaLake (F1 1.00)

Label Map

{'AnnualCrop': 0, 'Forest': 1, 'HerbaceousVegetation': 2, 'Highway': 3, 'Industrial': 4, 'Pasture': 5, 'PermanentCrop': 6, 'Residential': 7, 'River': 8, 'SeaLake': 9}

How to Load

```python import torch import torchvision.models as models import torch.nn as nn

model = models.resnet50(weights='IMAGENET1K_V2') model.fc = nn.Linear(model.fc.in_features, 10) model.load_state_dict(torch.load('eurosat_resnet50.pt', map_location='cpu')) model.eval() ```

ScreenShot

Confusion matrix

Limitations

  • Trained on European Sentinel-2 imagery; accuracy may degrade on other regions/sensors.
  • 64x64 patch size limits detection of small-scale land features.
  • RGB-only (no multispectral bands), which loses some vegetation-discriminating signal.
  • Confusion observed between agricultural sub-classes (AnnualCrop/PermanentCrop/Pasture) and an unexpected River-to-AnnualCrop misclassification pattern (see confusion matrix).
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for chitransh001/euroset-resnet50

Finetuned
(483)
this model

Dataset used to train chitransh001/euroset-resnet50