[WSC18] Creating a Microsite that Classifies Boeing Planes

Abstract

The purpose of this project is to create a microsite that recognizes the plane in the image that the user uploads. A neural network is employed in the microsite to provide the classification results. Since planes are complex objects, it is hard to classify them with simple neural networks, and training complex neural networks take a lot of time and computation resources. My goal is to get the highest accuracy with the least amount of computation. In order to achieve this, I used a technique called transfer learning. The concept will be introduced in the introduction.

Introduction

The concept of artificial neural networks is first introduced in the late 1940s, inspired by biological neural networks. Artificial neural networks (Hereinafter to be referred to as neural networks) have similar capabilities as the human brain, can be trained and is good at tasks like image-recognition, which is the basis of this project. There exists a kind of node structure called artificial neurons in a neural network, which simulates neurons in the biological brain. However, they function differently. An artificial neuron receives a signal from the previous layer, and outputs a signal that is computed by a function contained in the neuron as the output signal. These functions contained in the artificial neurons will be determined by training. Training is a process that, the neural network is provided a number of correct examples called the training set to program the nodes, and then another group of examples are provided to validate the programmed neurons and prevent overfitting.

Neural networks have a lot of advantage comparing to classical programming: It is simple to design and train, and one neural net model can be trained to complete different but similar task. However, itself is bad at doing computations, the amount of computations required is much more than classical programming (In classical programming more computations are done in your brain). In my project, the object are pictures of planes, which are complex and require a large amount of computation. Therefore, I used a technique called transfer learning to reduce computation needed. Transfer learning uses a network trained on one task to complete another similar task. [1]Since the features need to be noticed in each task is similar, the accuracy will not be greatly lower than a newly-trained network. With Transfer learning, I am able to train large datasets on my laptop which has limited computing power.

First we import the images, and conform them to 256*256. This image size kept the most amount of information while lowering the resolution (and therefore size) of each image, to allow a larger dataset.

baseNet = NetModel["ResNet-50 Trained on ImageNet Competition Data"]

We used the ResNet-50 as the base of our network. ResNet-50 is designed and trained to recognize the objects in an image. Due to machine limitations, we used the method of transferred learning, which reuses the ResNet-50's feature recognizing part as the basis of the new neural net.

clippedNet = NetTake[baseNet, 23]

The first 23 layers of ResNet-50 extracts the features of the object in the picture. We take these layers out as the basis of our neural net.

Conclusion

With a decent amount of training data and testing data, a neural network can be really accurate. When transfer learning is also employed properly, the accuracy of the classification can be greatly increased with the same amount of computation. In the future, expect increasing the amount of training and testing data, here are a few ways that this project can improve: First, First recognize the direction the photo is taken, then use the neural net specifically trained on that direction to classify. This will eliminate the error described above due to nonuniformity of the training set. Second, first use a neural network to determine which airlines the plane is, then exclude all planes that the airlines doesn't have. This will show its effect when the number of categories increase.
Here are the links to the Microsites (you can find the link of the error report site in these sites):
https://www.wolframcloud.com/objects/billy.li/Boeing-v1