Skip to content

Latest commit

 

History

History
221 lines (165 loc) · 6.15 KB

File metadata and controls

221 lines (165 loc) · 6.15 KB

🛰️ 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!