Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Handwritten Character Recognition

Jonathan Connell and Vijay Kothari

CS 74/174 - Spring 2012


Project Overview

We wish to address the problem of handwritten character recognition. There are numerous applications in which automatic detection of handwritten characters and digits would have tremendous utility. One example is that of automatically recognizing characters in hand-printed forms [3]. By applying modern machine learning techniques like neural networks to this problem, we hope to successfully classify characters with error rates well under 5%.

 

Data Set

We plan to use the MNIST (mixed NIST) database which, as the name implies, is a mixture of two different databases, NIST-SD 1 and NIST-SD 3 (acquired from [1]). It comprises a total of 70,000 greyscale images of digits with corresponding labels : 60,000 of these are to be used as training data, while the remaining 10,000 correspond to test data. Raw images were normalized to occupy a 20 pixel x 20 pixel bounding box. These were then centered to fit inside a 28 pixel x 28 pixel via center of mass computations. The data set itself has been used in numerous papers over the years and seems to be a good choice.

It may be worth mentioning that the first 5,000 test samples of MNIST are supposed to be easier to classify than the last 5,000. This is because the first 5,000 samples were taken from NIST-SD 3, a database of digits written by Census Bureau employees, while the last 5,000 were taken from NIST-SD 1, a database of digits written by high school students. This discrepancy in perceived ease of classification also seems somewhat interesting to look at.

An alternative data set we may consider using is the USPS database (acquired from [2]). However, at this time, we see the MNIST database as a better option due to its sheer size. If we have a reasonably high success rate, we would also like to explore other alphanumeric databases to see how our algorithm(s) fare on them.

 

Above is an example of entries in the MNIST database. [5]

 

Method

Currently we intend to implement an Artificial Neural Network (ANN) in MATLAB to serve as our means of machine learning. On the surface, ANNs seem to be perfectly suited to help us solve the problem of handwritten character recognition, though there are other methods that we believe could be valuable tools for tackling this problem. By using the MNIST data set as the input to our ANN to learn the fundamental characteristics of each individual digit/character, we hope to be able to see the output accurately match the value of the handwritten character with a very high probability. (For an overview of ANNs, see [4].)

Some other methods we may explore are Convolution Neural Networks, k-NN or another simple classifier with Metric Learning, Ensemble Classifiers (most likely AdaBoost), and Gaussian Processes. Admittedly, we are only vaguely familiar with these methods, but hope to get a deeper understanding of how they work in the coming week. If it seems fruitful, we may do some preprocessing such as width normalization and deskewing. However, we'd much rather explore alternate methods to tackle the problem if time permits than spend time on preprocessing.

 

Proposed Timeline

4/12 - 4/18

4/19 - 4/25

4/26 - 5/2

5/3 - 5/8

5/9 - 5/16

5/17 - 5/23

5/24 - 5/30

 

References

[1] MNIST Database of Handwritten Characters

[2] Data for MATLAB Hackers

[3] Wikipedia entry for Intelligent Character Recognition

[4] Crash Introduction to Artificial Neural Networks

[5] Examples of MNIST entries