import gradio as gr import numpy as np import joblib from PIL import Image from skimage.transform import resize # Charger le modèle à partir du fichier enregistré filename = 'modele_mlp.joblib' loaded_model = joblib.load(filename) # Fonction de traitement d'image def preprocess_image(image): # Convertir l'image en niveaux de gris pil_image = Image.fromarray(image) gray_image = pil_image.convert("L") # Redimensionner l'image à 8x8 pixels resized_image = gray_image.resize((8, 8), Image.LANCZOS) # Convertir l'image en tableau NumPy img_array = np.array(resized_image) # Aplatir l'image en un vecteur 1D flat_img = img_array.flatten() # Normaliser les valeurs de pixel entre 0 et 16 (correspondant aux valeurs dans le jeu de données) normalized_img = (flat_img / 255) * 16 return normalized_img def predict_digit(image): # Prétraiter l'image preprocessed_image = preprocess_image(image) # Faire une prédiction avec le modèle chargé prediction = loaded_model.predict([preprocessed_image])[0] return str(prediction) iface = gr.Interface(fn=predict_digit, inputs="image", outputs="text") iface.launch()