A deep learning-based web application for Satellite Land Use and Land Cover (LULC) classification using a fine-tuned ResNet50 model trained on the EuroSAT RGB dataset.
The project provides a Flask REST API for image classification and a web-based frontend for uploading satellite images and viewing predicted land-cover classes with confidence scores.
- Satellite image classification using ResNet50
- Transfer learning with a pretrained ResNet50 architecture
- 10-class Land Use and Land Cover classification
- Flask REST API for predictions
- Image upload through a web interface
- Confidence scores for predictions
- Probability distribution across all classes
- Docker support for backend deployment
- Health-check API endpoint
The project uses a fine-tuned ResNet50 convolutional neural network.
| Parameter | Details |
|---|---|
| Architecture | ResNet50 |
| Learning Approach | Transfer Learning / Fine-Tuning |
| Input Size | 224 × 224 × 3 |
| Output | 10-class Softmax |
| Dataset | EuroSAT RGB |
| Framework | TensorFlow / Keras |
| Model Format | .keras |
The model performs classification of satellite images into different land-use and land-cover categories.
The model predicts the following 10 classes:
- Annual Crop
- Forest
- Herbaceous Vegetation
- Highway
- Industrial
- Pasture
- Permanent Crop
- Residential
- River
- Sea/Lake
The model was trained using the EuroSAT RGB dataset, a satellite image dataset containing RGB satellite images covering multiple land-use and land-cover categories.
The dataset contains images from the following classes:
- AnnualCrop
- Forest
- HerbaceousVegetation
- Highway
- Industrial
- Pasture
- PermanentCrop
- Residential
- River
- SeaLake
satellite-lulc-classification/
│
|--Training/
| |--LULC_ResNet50_Training
├── backend/
│ ├── app.py
│ ├── config.py
│ ├── model_loader.py
│ ├── prediction.py
│ ├── requirements.txt
│ ├── Dockerfile
│ ├── .dockerignore
│ └── README.md
│
├── utils/
│ ├── image_utils.py
│ └── response.py
│
├── index.html
│
├── .gitignore
├── .gitattributes
└── README.md
The trained ResNet50 model file is not included in this repository because of its large file size (~350 MB).
This keeps the Git repository lightweight and avoids unnecessarily increasing repository storage.
The backend expects the trained model file:
best_resnet50.keras
Place the model in the location expected by model_loader.py before running the backend.
Note: Model weights are intentionally excluded from GitHub. The repository contains the complete application code required to load and use the model.
The project includes an HTML-based frontend for interacting with the classification API.
The frontend:
- Accepts a satellite image.
- Sends the image to the Flask API.
- Receives the model prediction.
- Displays the predicted land-cover class.
- Displays the model confidence.
- Displays probability information.
- Python
- TensorFlow
- Keras
- ResNet50
- Deep Learning
- Transfer Learning
- Computer Vision
- Flask
- Flask-CORS
- NumPy
- Pillow
- HTML
- JavaScript
- Docker
- Gunicorn
Satellite LULC classification can support applications such as:
- Land-use monitoring
- Urban development analysis
- Agricultural monitoring
- Forest monitoring
- Environmental analysis
- Remote sensing
- Geographic information systems
- Land management
This project is licensed under the MIT License.
Karthik
GitHub: https://github.com/lukarthik67