import gradio as gr from ultralytics import YOLO # Importer YOLOv8 import numpy as np # Charger le modèle YOLOv8 model = YOLO('best.pt') # Remplace 'best.pt' par le chemin de ton modèle # Fonction d'inférence def detect(img): # Faire une prédiction avec YOLOv8 results = model(img) # YOLOv8 prend directement l'image en entrée # Si des objets sont détectés, renvoyer la classe de l'objet if results: detections = results[0].boxes # Les résultats des détections if len(detections) > 0: # Obtenir la classe de la détection avec la probabilité la plus élevée detection = detections[0] # On prend la première détection (peut être ajusté) class_index = int(detection.cls[0]) # Obtenir l'indice de la classe class_names = ['AMAZONE', 'BIOGUERRA', 'REVENANT', 'ZANGBETO', 'PORTE DU NON RETOUR'] class_name = class_names[class_index] # Nom de la classe prédite confidence = format(detection.conf[0], ".2f") # Confiance de la détection return f"Classe : {class_name}, Confiance : {confidence}" else: return "Aucune détection" else: return "Aucune détection" # Interface utilisateur avec Gradio title = "Orisha YOLOv8" iface = gr.Interface( fn=detect, inputs=gr.Image(type="pil", image_mode='RGB'), # Charger une image outputs=gr.Textbox(label="Résultat", lines=2), # Afficher le résultat title=title ) # Lancer l'application iface.launch(inline=False) # import gradio as gr # import tensorflow as tf # import numpy as np # from keras.models import load_model # from tensorflow.keras.preprocessing.image import load_img, img_to_array # # Charger le modèle sans compilation # model = load_model('best_model_v2.keras', compile=False) # # Recompiler le modèle avec la fonction de perte et l'optimiseur appropriés # model.compile( # optimizer='adam', # loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), # metrics=['accuracy'] # ) # def format_decimal(value): # decimal_value = format(value, ".2f") # return decimal_value # def detect(img): # # Prétraiter l'image # img = img.resize((256, 256)) # Redimensionner l'image # img = img_to_array(img) # img = np.expand_dims(img, axis=0) # img = img / 255.0 # Normaliser les valeurs de l'image # # Faire une prédiction # prediction = model.predict(img)[0] # # Classes prédictives avec leurs index respectifs # class_names = ['AMAZONE', 'BIOGUERRA', 'REVENANT', 'ZANGBETO', 'PORTE DU NON RETOUR'] # # Trouver l'indice de la classe avec la probabilité la plus élevée # class_index = np.argmax(prediction) # # Obtenir le nom de la classe prédite # texte = class_names[class_index] # return texte # title = "Orisha" # iface = gr.Interface( # fn=detect, # inputs=gr.Image(type="pil", image_mode='RGB'), # outputs=gr.Textbox(label="Classe", lines=10), # title=title # ) # iface.launch(inline=False)