import gradio as gr import tensorflow as tf import numpy as np # Load the trained model model = tf.keras.models.load_model("denis_mnist_cnn_model.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 # Convert image to float32 and 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) 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} # Create a Gradio interface interface = gr.Interface(fn=predict, inputs="image", outputs="json") # Launch the Gradio interface if __name__ == "__main__": interface.launch()