Instructions to use lizardwine/DigitClassifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use lizardwine/DigitClassifier with Keras:
# Available backend options are: "jax", "torch", "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" import keras model = keras.saving.load_model("hf://lizardwine/DigitClassifier") - Notebooks
- Google Colab
- Kaggle
| 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!** π |