Best Flask open-source libraries and packages

Digit Recognizer Android App With AWS

This is a complete Android application to recognize handwritten digits. Model is trained on CNN with 99.19% accuracy. We can further train this model with new data from application itself.
Updated 2 years ago

Digit Recognizer Android Application deployed on AWS

Group 68

Table Of Content

Overview
Motivation
Screenshots
How to run it
Technical Aspects & architecture
Future Scope
References

Overview

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.

Motivation

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.

Screenshots

How to run it

  • 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. Group 58

Technical Aspects

Architecture

photo_2021-06-02 22 51 14

Modeling

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

Screenshot 2021-05-21 at 4 48 41 PM

  • 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
Screenshot 2021-05-21 at 12 52 45 PM Screenshot 2021-05-21 at 12 52 58 PM Screenshot 2021-05-21 at 12 53 16 PM

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

Screenshot 2021-05-21 at 2 39 14 PM


Optimizer Analysis is given below

Screenshot 2021-05-21 at 12 52 13 PM


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

Future Scope

  • 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.

References

https://demonuts.com/
https://machinelearningmastery.com/

THANKS FOR READING