File size: 3,072 Bytes
086b0fb
4a5b62f
086b0fb
 
4a5b62f
 
de0a444
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', '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)