Handwritten Digit Recognition System


Project Blog 
 
Week 1 

 It has been decided that the project will be carried out in MATLAB and the concept of convolutional neural networks will be used. Project roles have been allocated to each member of the group with the following : 

 •  Ziqi Sun– Code designer 
 • Xiaowei Shi – GUI designer 
 • Wasif – Technical Writer 

 It has been decided that more research needs be done individually. The following recourses will be used :

https://uk.mathworks.com/matlabcentral/answers/157363-matlab-code-for-detect-digits-using-neural-network 

 https://uk.mathworks.com/matlabcentral/answers/90253-handwritten-digit-recognition-using-neural-networks-how-to-configure-for-2-d-input https://www.youtube.com/watch?v=4wmCg4Smpj0&t=254s 

https://www.youtube.com/watch?v=rFvOusaM51A&t=0s 

Week 2

 It has now been decided that we will not use MATLAB for this project due to the lack of variety within the platform. We found with Python, the library TensorFlow is a lot better for this type of task with a lot more resources to use and learn from. It has therefore been decided that we will instead code in python. Due to this, we have been set back and are behind schedule. More research will be done on how to get this done and what platform to use. 

It was finally decided at the end of this week that we will use the Jupyter platform and code in python. The following resources were used :

 
https://deeplizard.com/learn/playlist/PLZbbT5o_s2xq7LwI2y8_QtvuXZedL6tQU

https://github.com/codebasics/deep-learning-keras-tf-tutorial/blob/master/1_digits_recognition/digits_recognition_neural_network.ipynb 


Week 3

 We have made some progress on the main code and that of the GUI. The testing part of the code has been finished. We have decided that we will use the tensorflow library to construct this software. The code starts off by defining the training and testing data using the mnist database. After that the Sequential Model is designed using a flatten layer with 28 x 28 shape, 2 dense layers with relu activation functions and another dense layer with the softmax activation function. The optimizer is then defined by ‘Adam’ and the loss by ‘sparse categorical crossentropy'. The model is then saved and tested going through 20 epochs to train. The model is training well with a final accuracy of approximately 97%. 


 The GUI face window has been designed also. So far it looks like this : 





As you can see, the GUI does not yet have a window for the user to implement their own handwriting, this is something that needs to be done by the end of week 4. Finally the GUI will need to be implemented with the sequential model (main code) as at the moment they are two separate codes. 

Week 4

 The code is finally complete. The GUI was updated so that we included a window that allows the user to input their handwritten digit. When this was done, the design remained the same until the GUI was updated replacing the ‘recognize button’ with a ‘save’ button. 




 By doing this, it allows the program to predict the digit being input instantly without having to press any button to run the NN model. By clicking the save button, the user is able to save a photo of the handwritten digit they inputted as a JPEG. 







 We also input some code in the NN model that shows a graph of the accuracy and loss against the number of epochs as the model is being trained : 






 Poster :




Comments