Ships
and Planes carry most of the items around the globe. More than 11 billion tons
of cargo are transported around the world each year. These include vehicles,
chemical gases, and liquids, solid materials within containers, etc. When these
modes of transport carry so much material, it becomes crucial to monitor and
track their movement across the globe.
Satellite Image
analysis provides a great solution to such problems. These image analysis
not only help in tracking the given subject but also helps in monitoring the
surroundings of the target. With ships detection, and combined with data of
other ships routes and live status, (Data from other sources), many security
features can be built. Pirate ships can be detected much before they get close
to potential attack-prone ships, ships that are out of their designated
trajectory can be detected. Also, search
and rescue operations can be further improved in terms of their response
time and location accuracy. With Airplanes detection, Anti Collision Systems
can be made more efficient. Also, it provides proper statistics related to
flights.
A
huge number of applications can be built with the help of Artificial Intelligence and
Machine Learning applied to satellite images. These Applications require large quantities
of data, and with the recent availability of satellite images from many tech
giants and government organizations, it has become an emerging field in the
aerospace domain.
Rhammell
on Kaggle provided a cleaned dataset of satellite imagery, separately for each
of the categories, i.e. for Planes and Ships. These datasets contain images of
the object located in the center. Also, few scenes are provided to test out the
performance of the model on large satellite images.
Ships Detection:
The
DataSet:
The
latest version of the Ships dataset consists of 3600 images, with 80 X 80 image
size in RGB format. Images were derived from PlanetScope full-frame visual
scene products, which were ortho-rectified to 3-meter pixel size. Along with
the images, the corresponding labels (1:Ship; 0:No Ship) and the geographical
location of the image center point is provided in term of its
latitude-longitude pair.
The following format is
used in naming the images :
{label} _ {scene id} _ {longitude} _ {latitude}.png
The dataset consists of 900
images labeled as 1 (i.e. Ships) and 2700 images labeled as 0 (i.e. No Ship)
The data is also available in .json format.
The
following images show some examples of the images with no ship category. These
include images that do not contain any ship or contain only some portion of a
ship (i.e. not sufficient enough to be categorized as a ship).

Data
Preparation:
As
the dataset is comparatively smaller in size, we use image augmentation
techniques to further add variants of the images. Here we use feature-wise
centering and feature-wise normalization techniques. Also, Random horizontal
and vertical flips and random rotation are added.
Machine
Learning Model:
The
model used here is an 8 layer deep Convolutional Neural Network, with three 2D
Convolutional layers, two 2D Max-Pooling layers, two fully connected layers,
and a dropout layer. The “ADAM” optimizer is used for the optimization of the
weights and categorical cross-entropy is used as a loss function. The model is
trained with a batch size of 128, for 50 epochs. The data is randomly shuffled
of each epoch and split into an 80-20 ratio for training and validation. The
final validation accuracy lies near 95%.
Output:
The
trained model is used to locate ships in the satellite images. These scenes can
be of varying sizes. The scenes are scanned with a sliding window technique,
using a stride rate of 10 pixels, and a window size of 80 pixels. If a ship is
detected in the window, a bounding box is drawn in red color, of the size of 80
X 80.
It
can be seen that the Machine Learning model isn’t 100% accurate, it contains
some False Positives ( i.e. some land structures are classified as ships )
as-well-as some False Negatives ( i.e. Some ships are not classified as ships,
only one in this case ).
There
is always a trade-off between False-Positives & False Negatives. These can
be varied by further fine-tuning our model or the detection parameters. For
example, further changing the detection window stride rate can change the
errors. It depends on what is the end application of the algorithm, we can
either optimize for sensitivity or specificity.
Planes Detection:
The
DataSet:
The
latest version of the Planes dataset consists of 32000 images, with 20X20 image
size in RGB format. The dataset is labeled as 1:Plane, 0:No-Plane. It consists
of 8000 images labeled as 1 (i.e. Plane) and 24000 images as 0 (i.e. No-Plane).
Also, The dataset is available in.json format.
Data
preparation:
The
data preparation tasks are the same as we used for the detection of ships. We
use random horizontal and vertical flips, random rotation, Along with
feature-wise centering and normalization.
Machine
Learning Model:
As
the task is the same as that of the ship’s detection problem, we use the same
architecture of the neural network as used previously. We have 8-layers deep
Convolutional Neural Network, with three 2D Convolutional layers, two 2D
Max-Pooling layers, two fully connected layers, and a dropout layer. The “ADAM”
optimizer is used for the optimization of the weights and categorical
cross-entropy is used as a loss function.
The model is trained with a batch size of 128, for 50 epochs. The data is randomly
shuffled of each epoch and split into an 80 – 20 ratios for training and
validation. The final validation accuracy lies near 85% – 90%
Output:
The
trained model is used to locate planes in the satellite images. The scenes are
scanned with a sliding window technique, using a stride rate of 2 pixels, and a
window size of 20 pixels. If a plane is detected in the window, a bounding box
is drawn in red color, of the size of 20 X 20.