Digit Recognition Project

I started this project to explore the practical aspects of ML training. I have built a decent foundation on neural networks from the many wonderful content available on YouTube, but I did not have any background into implementing them.

I started out with the basic densely connected neural network, and then moved on to using a CNN. Finally, I improved tweaked some aspects of the CNN to achieve the best model possible.

I also explored the many ways researchers play around and train their model. The project was built primarily using python scripts. However, I wanted to get a feel for how python notebooks are used. I have no experience using them and they are quite popular in ML communities. Thus, for the last training, I took elements of my script and put it in kaggle and trained it there.

The models are showcased here as fully static files. I was even able to create a demo page fully statically, where one can upload any model and play around with its predictions.

This is hosted fully on Github pages.

Models
Simple MLP v1

A basic multi-layer perceptron with 3 hidden layers. Naive training approach, possibly overfitted but achieves 98.03% test accuracy.

784 → 128 → 128 → 10
Convolutional Neural Network v1

A CNN architecture with convolutional layers for better feature extraction from image data.

Conv2D + MaxPool + Dense
Convolutional Neural Network v2

Improved CNN with refined architecture and training process.

Conv2D + MaxPool + Dense (improved)
Tools
Model Comparison Compare

Draw a digit once and see predictions from all models side-by-side. Useful for comparing model behavior and confidence levels.

Custom Model Tester Upload

Upload your own ONNX model and test it. Automatically detects input shape (MLP or CNN format).