VIDEO DEMO: https://youtu.be/-VYZBYkXAh0
Overview
Motivation
Screenshots
How to run it
Technical Aspects & architecture
Future Scope
References
This is a complete Android application to recognize handwritten digits drawn on application itself. Model is trained on CNN with 99.19% accuracy with optimized number of layers and parameters. User can further train this model on a new data on which this model will give wrong results.
Motive to develop this project:
- To Know how neural networks works in deep learning.
- To know how CNN(Convolutional Neural networks work).
- To know how to connect and work together Android application and deep learning models.
- To know how to do optimization in deep learning regarding number of layer and optimizer.
- How to work with image data.
- how Deploy models on AWS.
- First, download application from this git repository or from here https://drive.google.com/file/d/1AQM3X5W9hvqOL7Nxw1ckpN0W1amMcBX3/view?usp=sharing
- Then download files app.py, digitData.db, and Model.h5 and put them in a direcotry (in the same).
- Run python app.py (Make sure all libraries should be installed in your system)
- Put the link in the application and you are good to go.
- For demo watch video given above.
In this application we have used MNIST digit dataset
About Dataset
TRAIN.CSV: 60000 images to train model
TEST.CSV: 10000 images to test trained model
Each image size is 28*28
To download dataset go to: https://www.kaggle.com/oddrationale/mnist-in-csv
Screensshot is given below
- Analysis for optimize number of layers and best optimizer of CNN MODEL I have trained various model to get best results.
- Basically I developed 9 models 5 for layer optimization and 4 for get best optimizer for this problem.
- Each model is run 5 times to get stable average result from earch model.
- Insigths of this analysis are given below
screenshots
As we can clearly see that BLUE curve model is performing best in all three cases so we coose this model to continue.
And summary of this neural network is given below and for more detailed analysis go to this .ipynb https://nbviewer.jupyter.org/github/Pushpendra9350/Digit-Recognizer-Android-App-With-AWS/blob/master/CNNLayer_%26_Optimizer_finding.ipynb
Optimizer Analysis is given below
In this grapht we ca see ADAM is performing so we choose ADAM as our optimizer
Technology, libraries, tools, and framework used
- Python
- Flask
- Keras
- Neural Network
- Android Studio
- Jupyter notebook
- google colab
- Java
- XML
- Numpy
- Pandas
- Matplotlib
- Tensorboard
- Tensorflow
- Joblib
- AWS - EC2
- etc
- Extend this project to evaluate equations of maths.
- We can optimize this model with epoches, batch size, learning rate, dropout, maxpolling, and momentum.
- We can recognize multiple digits from only one image.
- We can add more classes like a to z also and 1 to 100 digits number
- We can implement this model in the mobile with the help of tensorflow lite.