orisha / app.py
Horus7's picture
Update app.py
5abd417 verified
raw
history blame
3.07 kB
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)