This project is an implementation of Convolutional Neuronal Networks. CNN-s are particularly effective for the recognition of characters and images.

Some results:
On the MNIST digits dataset: 0.62% recognition error.
Recognition speed: 4700samples/sec (on a 2.6Ghz Core2 Duo, one core used).
Training speed: 1400samples/sec.
After 5 minutes of training the recognition error is <1%.

Purpose: The CNN library can be used for isolated character handwriting recognition or for OCR (from books scanned or photographed, for screen capture, OCR of pdf files, etc).

To understand what a CNN is and how it works, I recommend reading the original articles by Yann LeCun. See the bibliography at the end of documentation for more details.
Also the work of Simard is relevant to this project, because I use the CNN architecture proposed by Simard – the same convolution type and output.
On there is also an article from Mike O’Neill about implementing a CNN application – the information there was invaluable because I was able to see the actual code – and so clarify any issues about how a CNN is trained.
The project release contains a pdf file with more details.

The application is run from the “output” directory.
  1. Start the “tests_gui.exe” application.
  2. Press “Start training”.
  3. Wait for the errors to become small enough. You can also check the log directories to see exactly what kind of errors the network makes.
  4. Press “Stop”.
  5. Press “Save CNN”.
  6. You can use the resulting file (CNN network) in your application.
Each run will generate a log directory(named after the current time) that contains the overall training progress, the list of recognition errors, and an image file with the misrecognized symbols.

Current status:
The current version can be trained with:
  1. the MNIST database (follow download instructions from documentation)
  2. handwritten database - included in release, quite small
  3. typefaces database - included in release, alfanumeric characters in various typefaces

Last edited Dec 30, 2009 at 6:49 PM by costelgrosu, version 2


No comments yet.