Skip to content

This project develops a machine learning model to classify land cover types in Egypt using Sentinel-2 satellite imagery. The system detects categories such as agriculture, water bodies, urban areas, deserts, roads, and tree cover.

License

Notifications You must be signed in to change notification settings

Mariam-Badr-MB/GTC-Land-Type-Classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌍 GTC-Land-Type-Classification

Project 14: Land Type Classification using Sentinel-2 Satellite Images

Python PyTorch Streamlit License


🔍 Project Overview

This project develops a machine learning model to classify land cover types in Egypt using Sentinel-2 satellite imagery.
The system can detect categories such as:

  • 🌾 Agriculture
  • 💧 Water bodies
  • 🏙️ Urban areas
  • 🏜️ Deserts
  • 🛣️ Roads
  • 🌳 Trees

The workflow includes data preparation, exploratory analysis, model training & validation, and deployment via a lightweight web app.
Final deliverables include a trained model, performance report, and an interactive application for testing land classification.


👥 Collaborators & Responsibilities

Task Collaborator
Data Pipeline, EDA & Feature Engineering Roaa Raafat
Model Architecture & Evaluation Mariam Mohamed Sayed Mohamed
Deployment & Dashboard Mariam Badr
Video & GitHub README Eman Elnaggar & Mariam Elnemrawy
Presentation Mariam Ahmed

📦 Dataset

EuroSAT Dataset (Kaggle)


🛠️ Workflow

1- Data Pipeline

  • Notebook: GTC_01_data_pipeline.ipynb
  • Script: src/data_pipeline.py
  • Tasks:
    • Downloads & organizes the EuroSAT dataset
    • Cleans CSVs and ensures consistent labels
    • Generates dataset statistics & class maps
    • Outputs train/validation/test splits

2- Exploratory Data Analysis

  • Notebook: GTC_02_eda_visualization.ipynb
  • Tasks:
    • Class distribution plots
    • Sample images per class (grid view)
    • Checks for corrupted/missing/duplicate images
    • RGB intensity histograms
    • Data augmentation visualizations
    • Class-level mean RGB statistics
    • Feature extraction (color histograms, texture descriptors)

3- Feature Engineering

  • Script: src/features.py
  • Tasks:
    • Geospatial-safe augmentations (rotation, flip, jitter, crop/zoom)
    • Normalization & preprocessing utilities

4- Modeling & Evaluation

  • Script: gtc_03_modeling-6.ipynb
  • Tasks:
  • Load and preprocess the EuroSAT dataset (RGB satellite images for 10-class land use classification) with custom transforms including resizing to 224x224, data augmentation (random flips, rotations, jitter, affine), and normalization (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]).
  • Split dataset into train/validation/test (60%/20%/20%) and create DataLoaders with batch size 64.
  • Define and train multiple models: a custom CNN (VGG-inspired) and transfer learning models (ResNet-50, EfficientNet-B0, Vision Transformer B-16), all fine-tuned for 10 classes.
  • Train with Cross-Entropy loss, Adam optimizer (lr=0.001, weight decay=1e-4), mixed precision (AMP), LR scheduler (ReduceLROnPlateau), and early stopping (patience=10).
  • Evaluate models on test set with accuracy, precision/recall/F1, confusion matrix, and training history plots.
  • Save best model checkpoints based on validation accuracy.

📤 Outputs Generated

  • train.csv, validation.csv, test.csv (cleaned datasets)
  • dataset_statistics.json & plots (dataset_statistics.png, sample_images.png)
  • augmentation_examples.png
  • Engineered features in data/features/
  • Trained model in models/best_efficientnet_b0_model.pth

⚡ Quick Start (Colab)

### 1- Clone the repository
!git clone https://github.com/Mariam-Badr-MB/GTC-Land-Type-Classification.git
%cd GTC-Land-Type-Classification

### 2- Install dependencies
!pip install -r requirements.txt

### 3- Configure Kaggle API
from google.colab import files
uploaded = files.upload()  # upload kaggle.json

!mkdir -p ~/.kaggle
!cp kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.json

4- Run Notebooks

  • GTC_01_data_pipeline.ipynb
  • GTC_02_eda_visualization.ipynb
  • gtc-03-modeling-6

View Presentation

🎨 Project Presentation on Canva


Video

Video

📬 Contact

  • Mariam Badr Yehia: GitHub LinkedIn

  • Mariam Mohamed Sayed Mohamed: GitHub LinkedIn

  • Mariam Mohamed Elnemrawy: GitHub LinkedIn

  • Mariam Ahmed Mohamed: GitHub LinkedIn

  • Eman Yasser Elnaggar: GitHub LinkedIn

  • Roaa Raafat Said: GitHub LinkedIn

🤝 Contributing

Contributions are welcome! Feel free to fork the repo, create a new branch, and submit a pull request.

📜 License

This project is licensed under the GNU v3 License.

About

This project develops a machine learning model to classify land cover types in Egypt using Sentinel-2 satellite imagery. The system detects categories such as agriculture, water bodies, urban areas, deserts, roads, and tree cover.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 5