Horus7 commited on
Commit
4a5b62f
1 Parent(s): f52be9f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +78 -36
app.py CHANGED
@@ -1,53 +1,95 @@
1
  import gradio as gr
2
- import tensorflow as tf
3
  import numpy as np
4
- from keras.models import load_model
5
- from tensorflow.keras.preprocessing.image import load_img, img_to_array
6
 
7
- # Charger le modèle sans compilation
8
- model = load_model('best_model_v2.keras', compile=False)
9
 
10
- # Recompiler le modèle avec la fonction de perte et l'optimiseur appropriés
11
- model.compile(
12
- optimizer='adam',
13
- loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
14
- metrics=['accuracy']
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  )
16
 
17
- def format_decimal(value):
18
- decimal_value = format(value, ".2f")
19
- return decimal_value
20
 
21
- def detect(img):
22
- # Prétraiter l'image
23
- img = img.resize((256, 256)) # Redimensionner l'image
24
- img = img_to_array(img)
25
- img = np.expand_dims(img, axis=0)
26
- img = img / 255.0 # Normaliser les valeurs de l'image
27
 
28
- # Faire une prédiction
29
- prediction = model.predict(img)[0]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
 
32
- # Classes prédictives avec leurs index respectifs
33
- class_names = ['AMAZONE', 'BIOGUERRA', 'REVENANT', 'ZANGBETO', 'PORTE DU NON RETOUR']
34
 
35
- # Trouver l'indice de la classe avec la probabilité la plus élevée
36
- class_index = np.argmax(prediction)
37
 
38
- # Obtenir le nom de la classe prédite
39
- texte = class_names[class_index]
40
 
41
- return texte
42
 
43
 
44
- title = "Orisha"
45
 
46
- iface = gr.Interface(
47
- fn=detect,
48
- inputs=gr.Image(type="pil", image_mode='RGB'),
49
- outputs=gr.Textbox(label="Classe", lines=10),
50
- title=title
51
- )
52
 
53
- iface.launch(inline=False)
 
1
  import gradio as gr
2
+ from ultralytics import YOLO # Importer YOLOv8
3
  import numpy as np
 
 
4
 
5
+ # Charger le modèle YOLOv8
6
+ model = YOLO('best.pt') # Remplace 'best.pt' par le chemin de ton modèle
7
 
8
+ # Fonction d'inférence
9
+ def detect(img):
10
+ # Faire une prédiction avec YOLOv8
11
+ results = model(img) # YOLOv8 prend directement l'image en entrée
12
+
13
+ # Si des objets sont détectés, renvoyer la classe de l'objet
14
+ if results:
15
+ detections = results[0].boxes # Les résultats des détections
16
+ if len(detections) > 0:
17
+ # Obtenir la classe de la détection avec la probabilité la plus élevée
18
+ detection = detections[0] # On prend la première détection (peut être ajusté)
19
+ class_index = int(detection.cls[0]) # Obtenir l'indice de la classe
20
+ class_names = ['AMAZONE', 'BIOGUERRA', 'REVENANT', 'ZANGBETO', 'PORTE DU NON RETOUR']
21
+ class_name = class_names[class_index] # Nom de la classe prédite
22
+ confidence = format(detection.conf[0], ".2f") # Confiance de la détection
23
+ return f"Classe : {class_name}, Confiance : {confidence}"
24
+ else:
25
+ return "Aucune détection"
26
+ else:
27
+ return "Aucune détection"
28
+
29
+ # Interface utilisateur avec Gradio
30
+ title = "Orisha YOLOv8"
31
+
32
+ iface = gr.Interface(
33
+ fn=detect,
34
+ inputs=gr.Image(type="pil", image_mode='RGB'), # Charger une image
35
+ outputs=gr.Textbox(label="Résultat", lines=2), # Afficher le résultat
36
+ title=title
37
  )
38
 
39
+ # Lancer l'application
40
+ iface.launch(inline=False)
 
41
 
 
 
 
 
 
 
42
 
43
+ # import gradio as gr
44
+ # import tensorflow as tf
45
+ # import numpy as np
46
+ # from keras.models import load_model
47
+ # from tensorflow.keras.preprocessing.image import load_img, img_to_array
48
+
49
+ # # Charger le modèle sans compilation
50
+ # model = load_model('best_model_v2.keras', compile=False)
51
+
52
+ # # Recompiler le modèle avec la fonction de perte et l'optimiseur appropriés
53
+ # model.compile(
54
+ # optimizer='adam',
55
+ # loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
56
+ # metrics=['accuracy']
57
+ # )
58
+
59
+ # def format_decimal(value):
60
+ # decimal_value = format(value, ".2f")
61
+ # return decimal_value
62
+
63
+ # def detect(img):
64
+ # # Prétraiter l'image
65
+ # img = img.resize((256, 256)) # Redimensionner l'image
66
+ # img = img_to_array(img)
67
+ # img = np.expand_dims(img, axis=0)
68
+ # img = img / 255.0 # Normaliser les valeurs de l'image
69
+
70
+ # # Faire une prédiction
71
+ # prediction = model.predict(img)[0]
72
 
73
 
74
+ # # Classes prédictives avec leurs index respectifs
75
+ # class_names = ['AMAZONE', 'BIOGUERRA', 'REVENANT', 'ZANGBETO', 'PORTE DU NON RETOUR']
76
 
77
+ # # Trouver l'indice de la classe avec la probabilité la plus élevée
78
+ # class_index = np.argmax(prediction)
79
 
80
+ # # Obtenir le nom de la classe prédite
81
+ # texte = class_names[class_index]
82
 
83
+ # return texte
84
 
85
 
86
+ # title = "Orisha"
87
 
88
+ # iface = gr.Interface(
89
+ # fn=detect,
90
+ # inputs=gr.Image(type="pil", image_mode='RGB'),
91
+ # outputs=gr.Textbox(label="Classe", lines=10),
92
+ # title=title
93
+ # )
94
 
95
+ # iface.launch(inline=False)