Skip to content

busesaricayir/eurosat-efficientnet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🛰️ EfficientNet for Satellite Image Classification

Landform classification on the EuroSAT dataset using EfficientNet-B0. Published at CMIS-2025 · 📄 Read the Paper


📖 Overview

This project presents a deep learning approach for remote sensing image classification using the EuroSAT dataset. The EuroSAT dataset is based on Sentinel-2 satellite imagery covering 13 spectral bands and 10 land use / land cover (LULC) classes across Europe.

We evaluate the EfficientNet-B0 architecture — selected for its compound scaling of depth, width, and resolution — establishing a strong performance benchmark that balances classification accuracy with computational efficiency.

📄 Paper: Saricayir, B., & Ozcan, C. (2025). EfficientNet Deep Learning Model for Satellite Image Classification Using the EuroSAT Dataset. CMIS-2025. 🔗 https://ceur-ws.org/Vol-3988/paper13.pdf


🗂️ Dataset

Property Detail
Name EuroSAT
Source Sentinel-2 satellite imagery
Classes 10 land use / land cover categories
Total Images 27,000 labeled patches
Image Size 64 × 64 px
Spectral Bands 13 (RGB subset used in this study)
Geographic Coverage 34 European countries

Classes: AnnualCrop · Forest · HerbaceousVegetation · Highway · Industrial · Pasture · PermanentCrop · Residential · River · SeaLake


🏗️ Model Architecture

  • Backbone: EfficientNet-B0
  • Building Blocks: Mobile Inverted Bottleneck Convolution (MBConv) with Squeeze-and-Excitation optimization
  • Stages: 7 distinct stages (1–4 layers each)
  • Pre-training: ImageNet weights (transfer learning)
  • Final Layer: Replaced with a fully connected layer → 10 output nodes
  • Loss: CrossEntropyLoss
  • Optimizer: Adam
Input (64×64×3)
      │
EfficientNet-B0 Backbone
(7 stages · MBConv blocks · Squeeze-and-Excitation)
      │
Global Average Pooling
      │
Dropout
      │
Linear → 10 classes (LULC)
      │
Softmax

EfficientNet-B0 was chosen as the most computationally efficient member of the EfficientNet family, providing a practical baseline for resource-aware remote sensing applications.


📁 Project Structure

eurosat-efficientnet/
│
├── data/
│   └── eurosat/               # Dataset directory (not included, see Setup)
│
├── notebooks/
│   ├── 01_exploration.ipynb   # Dataset exploration & class distribution
│   ├── 02_training.ipynb      # Training pipeline
│   └── 03_evaluation.ipynb    # Results, confusion matrix & F1 scores
│
├── src/
│   ├── dataset.py             # EuroSAT DataLoader
│   ├── model.py               # EfficientNet-B0 model definition
│   ├── train.py               # Training loop
│   ├── evaluate.py            # Evaluation & metrics
│   └── utils.py               # Helper functions
│
├── requirements.txt
└── README.md

⚙️ Setup

1. Clone the repository

git clone https://github.com/busesaricayir/eurosat-efficientnet.git
cd eurosat-efficientnet

2. Install dependencies

pip install -r requirements.txt

3. Download the dataset

# Option A: via torchvision
python -c "from torchvision.datasets import EuroSAT; EuroSAT(root='./data', download=True)"

# Option B: manually from
# https://github.com/phelber/EuroSAT

🚀 Training

python src/train.py \
  --model efficientnet_b0 \
  --epochs 30 \
  --batch_size 64 \
  --lr 1e-4 \
  --data_dir ./data/eurosat

📊 Results

Overall Performance

Metric Score
Overall Accuracy 98.1%
Macro-averaged F1 0.98

Per-Class Results

Class Precision Recall F1 Score
AnnualCrop 0.99 0.99 0.99
Forest 0.96 0.98 0.97
HerbaceousVegetation 0.98 0.96 0.97
Highway 1.00 0.99 0.99
Industrial 0.97 0.96 0.96
Pasture 0.96 0.98 0.97
PermanentCrop 1.00 1.00 1.00
Residential 0.98 0.95 0.96
River 1.00 1.00 1.00
SeaLake 0.98 0.99 0.99

F1 scores range from 0.96 to 1.00 across all classes, demonstrating strong and consistent performance. PermanentCrop and River achieved perfect scores due to their distinct spectral signatures. Minor misclassifications were observed between ForestHerbaceousVegetation and ResidentialSeaLake, likely due to spectral similarities.


🧪 Evaluation

python src/evaluate.py \
  --checkpoint ./checkpoints/best_model.pth \
  --data_dir ./data/eurosat

📦 Requirements

torch>=2.0.0
torchvision>=0.15.0
efficientnet-pytorch
numpy
pandas
matplotlib
scikit-learn
tqdm
Pillow

📄 Citation

If you use this work, please cite:

@inproceedings{saricayir2025efficientnet,
  title     = {EfficientNet Deep Learning Model for Satellite Image Classification Using the EuroSAT Dataset},
  author    = {Saricayir, Buse and Ozcan, Caner},
  booktitle = {CMIS-2025: Eighth International Workshop on Computer Modeling and Intelligent Systems},
  year      = {2025},
  url       = {https://ceur-ws.org/Vol-3988/paper13.pdf}
}

👩‍💻 Authors

Buse Sarıcayır · Department of Computer Engineering, Karabük University GitHub · LinkedIn · busesaricayir@gmail.com

Assoc. Prof. Dr. Caner Özcan · Department of Software Engineering, Karabük University canerozcan@karabuk.edu.tr


🤝 Acknowledgements


⭐ If you found this useful, consider starring the repo!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors