This project uses Deep Learning for Java (DL4J) to power a simple multi-layered convolutional network. This model has been trained on the MNIST data and achives an accuracy of ~95% with the test set. I used the play framework to make the model accessible via the internet and then HTML5 canvas to allow the user to draw images.
I have written a short blog post about this project here.
To use this example draw a single digit in the box and then click send. On mobile this site only works when the zoom level is 100%.
All the code is available here
This model is not perfect, far from it. In fact, the whole point of this project is to show real machine learning in action and this includes the failures. This model achives 80.2% accuracy on the MNIST test-set which meansit is pretty good on that data but clearly it isnt that good here. The reason for this is because, despite my best attempts to normalise the input, the format is not exactly the same as in the standard data-set. This shows the importance of the right kind of training which is not always that easy.