Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Training feedforward neural network for OCR [closed]

Currently I'm learning about neural networks and I'm trying to create an application that can be trained to recognize handwritten characters. For this problem I use a feed-forward neural network and it seems to work when I train it to recognize 1, 2 or 3 different characters. But when I try to make the network learn more than 3 characters it will stagnate at a error percentage around the 40 - 60%.

I tried with multiple layers and less/more neurons but I can't seem to get it right, now I'm wondering if a feedforward neural network is capable of recognizing that much information.

Some statistics:

Network type: Feed-forward neural network

Input neurons: 100 (a 10 * 10) grid is used to draw the characters

Output neurons: The amount of characters to regocnize

Does anyone know what's the possible flaw in my architecture is? Are there too much input neurons? Is the feedforward neural network not capable of character regocnition?

like image 956
Marnix v. R. Avatar asked Mar 13 '12 12:03

Marnix v. R.


People also ask

What is the algorithm for training a feedforward neural network?

The backpropagation (BP) algorithm is a gradient-based algorithm used for training a feedforward neural network (FNN).

Does OCR use neural network?

An optical character recognition (OCR) system, which uses a multilayer perceptron (MLP) neural network classifier, is described. The neural network classifier has the advantage of being fast (highly parallel), easily trainable, and capable of creating arbitrary partitions of the input feature space.

Does OCR use CNN?

The OCR can be implemented by using Convolutional Neural Network (CNN), which is a popular deep neural network architecture. The traditional CNN classifiers are capable of learning the important 2D features present in the images and classify them, the classification is performed by using soft-max layer.


1 Answers

For handwritten character recognition you need

  1. many training examples (maybe you should create distortions of your training set)
  2. softmax activation function in the output layer
  3. cross entropy error function
  4. training with stochastic gradient descent
  5. a bias in each layer

A good test problem is the handwritten digit data set MNIST. Here are papers that successfully applied neural networks on this data set:

Y. LeCun, L. Bottou, Y. Bengio and P. Haffner: Gradient-Based Learning Applied to Document Recognition, http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

Dan Claudiu Ciresan, Ueli Meier, Luca Maria Gambardella, Juergen Schmidhuber: Deep Big Simple Neural Nets Excel on Handwritten Digit Recognition, http://arxiv.org/abs/1003.0358

I trained an MLP with 784-200-50-10 architecture and got >96% accuracy on the test set.

like image 70
alfa Avatar answered Nov 07 '22 01:11

alfa