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)