Ship Classification in Satellite Images
In this project a convolutional neural network model was created for ship classification in satellite images. For this project "Ships in Satellite Imagery" dataset was used.
Dataset Properties
- The specific Dataset includes 4000 images labeled with either a "ship" or "no-ship" classification.
- These 4000 images are in .png format and have dimensions of 80 × 80 pixels.
- The colour depth of the above 4000 images is 24 bit (8 bits per channel).
- Image chips were derived from PlanetScope full-frame visual scene products, which are orthorectified to a 3 meter pixel size.
- The "ship" class includes 1000 images. Images in this class are near-centered on the body of a single ship. Ships of different sizes, orientations, and atmospheric collection conditions are included.
- Each individual image filename follows a specific format: {label} __ {scene id} __ {longitude} _ {latitude}.png
- label: Valued 1 or 0, representing the "ship" class and "no-ship" class, respectively.
- scene id: The unique identifier of the PlanetScope visual scene the image chip was extracted from.
- longitude_latitude: The longitude and latitude coordinates of the image center point, with values separated by a single underscore.
- Dataset Link : https://www.kaggle.com/rhammell/ships-in-satellite-imagery
Model Architecture
Model Performance
Performance Metrics:
Class | Precision | Recall | F1-Score | Number of Images |
---|---|---|---|---|
0 | 0.96 | 0.90 | 0.93 | 970 |
1 | 0.77 | 0.91 | 0.84 | 350 |
Accuracy | 0.91 | 1320 | ||
Macro Avg. | 0.87 | 0.91 | 0.88 | 1320 |
Weighted Avg. | 0.91 | 0.91 | 0.91 | 1320 |
Some random correct classified ships are shown below:
Requirements
pandas == 1.1.5 seaborn == 0.11.1 keras == 2.6.0
tensorflow == 2.6.0 matplotlib == 3.2.2 scikit-learn == 0.22.2.post1
cv2 == 4.1.2 numpy == 1.19.5