import gradio as gr import tensorflow as tf import numpy as np from PIL import Image # Charger le modèle TensorFlow.js converti en Keras model = tf.keras.models.load_model("tm-my-image-model\model.json") # Charger les labels de classes with open("labels.txt", "r") as f: labels = [line.strip() for line in f.readlines()] # Prétraitement de l'image def preprocess_image(image): image = Image.fromarray(image).convert("RGB") # Conversion en image RGB image = image.resize((224, 224)) # Adapter la taille au modèle image = np.array(image) / 255.0 # Normalisation image = np.expand_dims(image, axis=0) # Ajouter une dimension batch return image # Fonction de prédiction def predict(image): processed_image = preprocess_image(image) predictions = model.predict(processed_image)[0] # Faire la prédiction top5_indices = np.argsort(predictions)[-5:][::-1] # Obtenir les 5 meilleures classes results = {labels[i]: float(predictions[i]) for i in top5_indices} # Associer classes et scores return results # Interface Gradio demo = gr.Interface( fn=predict, inputs=gr.Image(type="numpy"), outputs=gr.Label(num_top_classes=5), title="Image Classifier", description="Téléversez une image et obtenez les prédictions du modèle." ) demo.launch()