File size: 3,071 Bytes
086b0fb 4a5b62f 086b0fb 4a5b62f de0a444 4a5b62f 5abd417 4a5b62f de0a444 086b0fb 4a5b62f b1325b9 4a5b62f 086b0fb 3b4c873 4a5b62f 086b0fb 4a5b62f 086b0fb 4a5b62f 086b0fb 4a5b62f 086b0fb 3b4c873 4a5b62f 086b0fb 4a5b62f b1325b9 4a5b62f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
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)
|