Digito Recogniser

Digito is an MNIST-trained convolutional neural network taught to recognise hand-written digit, wrapped in a neat demo app.

Machine Learning

The model was originally developed in Wolfram Mathematica, ported to Keras afterwards. Dozens of models were tried before settling on this one. ResNets were proven too time-consuming to train on a data set big enough not to overfit, and pre-trained ones' kernels were too small to properly catch big curves digits consist of without overfitting on line thickness/ positions.

Backend

The network is deployed to Tensorflow on Python served by Flask. Moving all the links & configs to UI allows for a minuscule API with no session/ login management.

Frontend

The frontend is made in React.js. The markup is mobile-first, adapting to various screen sizes. No Redux were employed given only a single stateful component for the whole app.

Deployment

The app is deployed to AWS Beanstalk. Forcing all WSGI processes to share the global interpreter is mandatory in order to allow numpy & OpenCV to work properly.