Spaces:
Running
Running
import gradio as gr | |
import tensorflow as tf | |
import numpy as np | |
# Load the trained model denis_mnist_cnn_model_v4.h5 | |
model = tf.keras.models.load_model("denis_mnist_cnn_model_v4.h5") | |
# Preprocessing function for images | |
def preprocess_image(image): | |
# Resize the image to 28x28 as expected by the model | |
image = tf.image.resize(image, (28, 28)) # Resize to 28x28 | |
print(f"Image shape after resizing: {image.shape}") | |
# Convert the image to grayscale (1 channel) directly | |
image = tf.image.rgb_to_grayscale(image) # Convert RGB to grayscale | |
print(f"Image shape after converting to grayscale: {image.shape}") | |
# Normalize pixel values to [0, 1] | |
image = tf.cast(image, tf.float32) / 255.0 | |
# Add batch dimension (model expects batch of images) | |
image = tf.expand_dims(image, axis=0) | |
print(f"Image shape after adding batch dimension: {image.shape}") | |
return image | |
# Function to make predictions | |
def predict(image): | |
image = preprocess_image(image) | |
prediction = model.predict(image) # Predict | |
predicted_class = np.argmax(prediction, axis=-1)[0] # Get the predicted class | |
class_confidence = np.max(prediction, axis=-1)[0] # Get the confidence score | |
#return {"prediction": int(predicted_class), "confidence": class_confidence} | |
return {"prediction": int(predicted_class)} | |
# Create a Gradio interface | |
interface = gr.Interface(fn=predict, inputs="image", outputs="json") | |
# Launch the Gradio interface | |
if __name__ == "__main__": | |
interface.launch(share=True) | |