Satellite Images Classification using CNN
Abstract
Satellites are used for weather analysis. Satellite images can be used to predict the type of terrain in an area. This project uses images of different classes to detect the type of terrain or to classify the area as cloudy.
Introduction
The past years have witnessed great progress on remote sensing (RS) image interpretation and its wide applications. With RS images becoming more accessible than ever before, there is an increasing demand for the automatic interpretation of these images.
Recently remote sensing images are being used widely for urban area classification and change detection. Classification is used for various applications like Crop monitoring (crop condition, crop type, and crop production estimation), Soil mapping characteristics (soil type, soil erosion and soil moisture), Forest cover mapping differences(leaf density, canopy texture), Land cover change detection (seasonal and annual changes), Natural disaster assessment (flood, cyclone and heavy raining), Water resource applications, wetland mapping, and environment inventory, urban and Regional planning and similarly other objects of interest can be observed using the remote sensing data.
Manual classification by using image interpretation techniques requires more time and field experts. So in our work, we focused on efficient automatic satellite image classification. Convolutional neural networks are used for classification of satellite images. CNN is a deep neural network which is most suitable when we deal with images. CNN will help to provide higher classification accuracy. Confusion matrix is used to estimate the overall classification accuracy. Deep learning is a class of machine learning models that represent data at different levels of abstraction by means of multiple processing layers. It has achieved astonishing success in object detection and classification by combining large neural network models, called CNN with powerful GPU.
This project proposes the algorithm for interpreting the images using the dataset.
Proposed Methodology
Dataset used
The dataset used in this article is taken from Kaggle. The link of the dataset is provided at the end of this article. The dataset is Satellite Remote Sensing Image -RSI-CB256 set. It has 5631 images in 4 different folders named as cloudy, desert, green_area and water. All the images are in *.jpg format. The dataset is divided into 80:20 train test split.
Proposed Model
The model used in this project has 4 Convolutional layers. Each layer has a MaxPooling layer. Following the convolutional layers, there are three dense layers completing the model. The last layer classifies the image into 4 types as mentioned in the dataset.
The figure below shows the summary of the model proposed which takes 80x80x3 image as the input image
Data Augmentation
As the dataset has only around 5000 images, data augmentation is done using the ImageDataGenerator with parameters as follows —
rescale=1/.255,
rotation_range=10,
horizontal_flip=True,
validation_split=0.2
Compiling, Training and evaluation of the model
The model is compiled with the optimizer as Adam. The model is trained for 30 epochs.
The loss used in the model is binary crossentropy, also named as the logloss.
Metric used to check the model is ‘accuracy’, the equation below shows the formula for accuracy.
After training the model, validation set was used and the accuracy was 94%. Figures below shows the accuracy vs epochs and logloss vs epochs.
Conclusion
To get more advanced in Remote Sensing, the terrains can be thus classified using the images. Now, this algorithm can be deployed in remote sensing devices The model in this article gives an accuracy of 94%/. In future, this accuracy can be improved using better models and more images. Further, the weather type can also be classified using more complex CNN models.
Reference Links
Github repository —
Kaggle Dataset-