--- license: apache-2.0 --- # 🖊️✍️ Handwritten Digit Recognition Model ## 📄 Overview 🤖 **Model Name:** Handwritten Digit Recognition Model 🧠 **Model Type:** Convolutional Neural Network (CNN) 📊 **Input:** 28x28 grayscale images of handwritten digits (0-9) 🔢 **Output:** A 10-dimensional vector representing the probabilities of each digit (0-9) 🎯 **Purpose:** To classify handwritten digits from images with high accuracy ☁️ **Download:** Click [here](https://huggingface.co/lizardwine/DigitClassifier/resolve/main/DigitClassifier.keras?download=true) to download --- ## 📚 Description This model is designed to recognize handwritten digits from 0 to 9. It processes input images of size 28x28 pixels and outputs a vector of 10 probabilities, each corresponding to one of the digits. The digit with the highest probability is selected as the predicted class. --- ## 🔍 Use Cases 1. **Educational Tools:** 🏫 Helping students learn and practice handwriting recognition. 2. **Digitization Projects:** 📄 Converting handwritten documents into digital format. 3. **Assistive Technology:** 🦾 Assisting individuals with disabilities in digit writing. --- ## 📈 Performance 🔍 **Accuracy:** ~99% on the MNIST dataset. 🕒 **Latency:** Fast inference time suitable for real-time applications. --- ## 🛠️ Technical Details - **Architecture:** Convolutional Neural Network (CNN) - **Layers:** Convolutional layers, pooling layers, fully connected layers - **Activation Functions:** ReLU, Softmax --- ## 📥 Input Format - **Type:** Grayscale image - **Shape:** 28x28 pixels - **Range:** 0-1 (pixel intensity) --- ## 📤 Output Format - **Type:** Probability vector - **Shape:** 10-dimensional - **Range:** 0-1 (sum of probabilities equals 1) --- ## 🧩 Model Training - **Dataset:** MNIST dataset 📚 - **Training Epochs:** 10 - **Batch Size:** 32 - **Optimizer:** Adam - **Learning rate:** 1e-3 --- ## 💡 How to Use 1. **Preprocess the Image:** Resize and normalize the image to 28x28 pixels with values between 0 and 1. 2. **Feed the Image:** Input the preprocessed image into the model. 3. **Interpret the Output:** Analyze the 10-dimensional output vector to find the digit with the highest probability. ### Loading the Model To use the model, first, load it using Keras. ```python from keras.models import load_model # Load the pre-trained model model = load_model('path/to/DigitClassifier.keras') ``` ### Preprocessing the Input Preprocess the input image to fit the model's requirements. ```python import numpy as np from keras.preprocessing import image def preprocess_image(img_path): # Load the image img = image.load_img(img_path, color_mode='grayscale', target_size=(28, 28)) # Convert to numpy array img_array = image.img_to_array(img) # Normalize the image img_array = img_array / 255.0 # Reshape to add batch dimension img_array = np.expand_dims(img_array, axis=0) return img_array # Example usage img_path = 'path/to/your/image.png' processed_image = preprocess_image(img_path) ``` ### Making Predictions Use the model to predict the digit from the processed image. ```python # Predict the digit predictions = model.predict(processed_image) # Get the digit with the highest probability predicted_digit = np.argmax(predictions) print(f'The predicted digit is: {predicted_digit}') ``` ### Full Example Combining all steps into a single example. ```python from keras.models import load_model from keras.preprocessing import image import numpy as np # Load the pre-trained model model = load_model('path/to/DigitClassifier.keras') def preprocess_image(img_path): img = image.load_img(img_path, color_mode='grayscale', target_size=(28, 28)) img_array = image.img_to_array(img) img_array = img_array / 255.0 img_array = np.expand_dims(img_array, axis=0) return img_array img_path = 'path/to/your/image.png' processed_image = preprocess_image(img_path) predictions = model.predict(processed_image) predicted_digit = np.argmax(predictions) print(f'The predicted digit is: {predicted_digit}') ``` --- ## ⚠️ Limitations - **Handwriting Variability:** Performance may decrease with highly unconventional handwriting. - **Noise:** Model performance can be affected by noisy or poor-quality images. --- ## 👥 Contributors - **Developer:** Lizardwine (x@lizardwine.com) - **Organization:** lizardwine - **Date:** 06/06/2024 --- ## 📝 References - MNIST Dataset: [Link](http://yann.lecun.com/exdb/mnist/) - CNN Architecture: [Link](https://en.wikipedia.org/wiki/Convolutional_neural_network) --- 🎉 **Thank you for using our Handwritten Digit Recognition Model!** 🎉