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','PORTE DU NON RETOUR', 'REVENANT', 'ZANGBETO'] | |
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) | |