import gradio as gr import tensorflow as tf import numpy as np from PIL import Image # 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 = np.array(image) image = tf.image.resize(image, (28, 28)) # Resize to 28x28 image = tf.image.grayscale_to_rgb(image) # Convert grayscale to RGB (3 channels) image = image / 255.0 # Normalize pixel values to [0, 1] image = np.expand_dims(image, axis=0) # Add batch dimension 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 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()