input object                       input object
An Application of a Genetic Algorithm
to a Computer Vision Problem
(Object Identification by a Neural Network
trained with a Genetic Algorithm)

This neural network is trained to observe various objects within a 3-dimensional matrix, so that at a later time it can identify a particular object when presented with that object at its input matrix.

The neural net is composed of layers of neurons; the input layer, the hidden layer, and the output layer. For this project the input layer is configured to match a 3-dimensional matrix of a 3 by 3 cube, that is, 27 input neurons make up its "visual" cortex.

Each of these input neurons is connected to the hidden layer neurons, the so called "processing" neurons. And finally, the hidden layer neurons are connected to the output neurons. These output neurons are used to determine an identification for the object placed at the input of the neural network.

The images below are views of the five objects presented to the neural network for identification. The object, or shape, is defined by the brightly lit spheres, which have been set to a value of one, the darker spheres have a value of zero.

(click on the images to enlarge)

The images below are views of a successfully trained
neural network being tested with the five different
objects applied to the input neurons.

The white bounding box signifies the neural network's
choice, what it thinks it sees at the input.

(click on the images to enlarge)


The input neurons for the network are the spheres that are positioned in the cube shaped lattice.  The hidden layer of neurons are the dodecahedrons lying horizontally.  And, the output layer of neurons are the dodecahedrons in the vertical column.  The purple colored neurons are those which have been disabled, that is, the ones which are not being used by the network. 

The level of intensity of color given to each neuron represents the value of its output or input, dark being a low value, bright intensity being a high value.  The brightest output neuron represents the id of the object which the network has chosen as the object it has been shown. 

I've drawn a bounding box next to the brightest output neuron to facilitate visualization.  Thus, the bounding box is drawn around the object the network has recognized.

Conclusions and References
Pattern recognition is a natural application for this type of system. It can be seen from these preliminary results that it is relatively easy to create neural networks that have the capability of target identification. The inherent properties of the genetic algorithm may have made this type of training effortless..
The computer code was written in C++ with OpenGL. The 3-d graphics allowed for visualization of the internal operations of the neural network.
The genetic algorithm, or rather the evolutionary programming algorithm was mostly taken from a paper titled: A New Evolutionary System for Evolving Artificial Neural Networks, by Xin Xao and Yong Liu, IEEE Transactions on Neural networks, vol. 8, No. 3, May 1997.
This project was completed for a class at the University of Illinois at Chicago, titled: Advanced Computer Vision, EECS 587, conducted by: Dr. Boaz Super, May 1999.