This project implements a custom Convolutional Neural Network (CNN) trained from scratch to classify land cover types using 13-band multispectral satellite imagery from the EuroSAT Sentinel-2 dataset. The model is designed to handle non-RGB remote sensing data and achieves strong generalization performance across diverse land-cover classes.
- Dataset: EuroSAT Sentinel-2 (13-band multispectral)
- Total Classes: 10
- Total Images: ~27,000
- Image Size: 64 × 64
- Channels: 13 spectral bands
Classes: AnnualCrop, Forest, HerbaceousVegetation, Highway, Industrial, Pasture, PermanentCrop, Residential, River, SeaLake
Below are sample images from the EuroSAT Sentinel-2 dataset representing different land cover classes. Each image contains 13 spectral bands and is resized to 64×64 resolution.
Custom CNN Architecture:
- Conv2D (32) + BatchNorm + MaxPooling
- Conv2D (64) + BatchNorm + MaxPooling
- Conv2D (128) + BatchNorm + MaxPooling
- Global Average Pooling
- Dense (128) + Dropout
- Output Dense (10) with Softmax
Total Parameters: ~114k
- Framework: TensorFlow / Keras
- Optimizer: Adam
- Batch Size: 16
- Epochs: 15
- Learning Rate: 0.001
- Early Stopping: Enabled
- Data Augmentation:
- Horizontal Flip
- Vertical Flip
- Rotation
- Validation Accuracy: ~84%
- Test Accuracy: ~83%
- Macro F1 Score: ~0.83
Strong performance on:
- SeaLake (99%)
- Industrial (95%)
- River (92%)
The model demonstrates stable learning behavior with consistent reduction in training loss and improvement in validation accuracy.
- Land Use Mapping
- Agricultural Monitoring
- Environmental Assessment
- Urban Planning
- Clone repository:
https://github.com/srstm/Remote-Sensing-LandCover-Classification
- Install dependencies:
pip install -r requirements.txt
- Run notebook:
Open remote_sensing.ipynb
Trinay Mitra
Computer Science Undergraduate
Machine Learning & Computer Vision Enthusiast



