Draw a digit into the white box and press "Read".
The digit recognition uses a neural network as described here. The network has three layers:
- The input layer with 400 neurons corresponding to the 20x20 gray pixels of the input images representing the drawn digits.
- The output layer with 10 neurons representing the 10 possible classifications (0..9).
- One intermediate layer with 25 neurons.
This network was presented in the excellent course Machine Learning given on Coursera by Andrew Ng from Stanford University. I have adapted the network to my purposes and trained it with mouse and finger drawings. Only 100 training examples were used for the the mouse and finger drawings respectively. The training is implemented as an Octave program and the classification is done with a Python program.
The digits are drawn on a 100x100 canvas. They are preprocessed to normalized images. First they are centered and then a minimal quadratic bounding box is scaled down to 20x20 gray bitmaps that are used as the input to the neural network.