All pastes #401111 Raw Edit

Someone

public text v1 · immutable
·published 2007-03-19 03:07 UTC
rendered paste body
Purpose:

	To design a system to reliably perform image recognition using neural networks, and to develop a proof of concept program to demonstrate this.

Background:
	
	Neural networks have been used extensively to classify data and recognize patterns and trends in various types of data. For example, in the financial sector neural networks have been used to predict stock prices based on past trends. Neural networks perform especially well for finding patterns in highly complex data sets. In my project I wanted to use neural networks to do image recognition, and object recognition within images. There have been previous attempts to do this before, but they ultimately failed due to the fact there was no way to universally represent an image to a neural network. Developments have recently been made that allow one to represent the key points of an image mathematically. In my project I hope to bring the adaptive nature of neural networks together with the ability to represent an image as a series of universal vectors to do reliable and robust image recognition.

Procedure – Developing the Software:

1Researched neural networks - the principles behind them and how they work. Investigated how I could use them for my purpose.
2Researched ways of doing image recognition and how Artificial Neural Networks (ANNs) have been used for this. No reliable working solution was found.
3Developed neural network proof of concept program using FANN (Fast artificial  Neural Network Library).
4Developed program to train the ANN directly on pixel data from the image.
5Realized the pixel method was not a viable solution do to the fact that pixels don't have any relation to the physical features of an object and don't represent the object, but just the view of the object from a certain angle.
6Researched Scale Invariant Feature Transform (SIFT) algorithm for extracting keypoints. This would allow me to extract key points from an image that can be matched to multiple views of an image, and are not affected by scaling or minor distortion of the image.
7Further improved the program further to allow training the neural network on a set of SIFT keypoints representing an image, instead of pure pixel data from the image.
8Further testing on a set of more complex images. Investigation into several different ANN training method to improve speed and effectiveness of the training.
9Investigation into different layouts of the ANN to see if it made any difference on accuracy of the ANN.
10Developed a graphical user interface for the program to allow for more understandable demonstrations of the program, and to enable more interactive tests of the ANN.
11Ongoing refinements to program to improve efficiency and add features to learn more about what affects the ANN's accuracy.

What is a Neural Network

	The concept of the neural network was derived from the idea of how the cortical structures of the brain function.  Another name for a neural network is a parallel distributed processing network, meaning that it consists of a complex network of nodes (neurons) that work together to produce an output function. When a neural network is implemented in a computer system, it is called an Artificial Neural Network (ANN), to distinguish it from its biological namesake.

	An ANN is made of of three or more layers of neurons: Input, Hidden, and Ouput layers. See figure X.X. The input layer is where the set of input data is presented to the ANN, the 


	A neuron in an ANN is represented by the