RougeVertBleu commited on
Commit
dcef260
·
verified ·
1 Parent(s): ab65e4a

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -0
app.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import tensorflow as tf
3
+ import numpy as np
4
+ from PIL import Image
5
+
6
+ # Charger les modèles (remplacez les chemins par vos fichiers de modèles)
7
+ model1 = tf.keras.models.load_model('model_v2_Q1.keras')
8
+ model2 = tf.keras.models.load_model('model_v2_Q2.keras')
9
+ #model3 = tf.keras.models.load_model('model3.h5')
10
+ #model4 = tf.keras.models.load_model('Model_4_Final.keras')
11
+
12
+ models = {
13
+ "Modèle 1 (genre uniquement)": {
14
+ "model": model1, "type": "gender_only"
15
+ },
16
+ "Modèle 2 (âge uniquement)": {
17
+ "model": model2, "type": "age_only"
18
+ }
19
+ }
20
+ #models = []
21
+
22
+ IMG_SIZE = (64, 64)
23
+
24
+ # Fonction de prédiction
25
+ def predict(image, model_name):
26
+ image = image.resize(IMG_SIZE) # Redimensionner selon la taille attendue
27
+ image_array = np.array(image) / 255.0 # Normalisation
28
+ image_array = np.expand_dims(image_array, axis=0) # Ajouter batch dimension (demandé par tensorflow/keras qui demande à recevoir un groupe d'image plutôt que juste une seule)
29
+
30
+ model_data = models[model_name]
31
+ model = model_data["model"]
32
+ model_type = model_data["type"]
33
+
34
+ prediction = model.predict(image_array)
35
+
36
+ return_text = ""
37
+ if model_type == "gender_only":
38
+ gender_value = prediction[0][0]
39
+ gender = "Homme" if gender_value < 0.5 else "Femme" # Genre basé sur probabilité
40
+ return_text = f"Genre: {gender} ({gender_value} - {get_gender_confidence(gender_value)} certitude)"
41
+ elif model_type == "age_only":
42
+ age_value = prediction[0][0]
43
+ age = round(prediction[0][0]) # Exemple : âge comme valeur continue
44
+ return_text = f"Age: {age} ({age_value})"
45
+
46
+ return f"{return_text}"
47
+
48
+ def get_gender_confidence(gender_value):
49
+ return f"{round(abs(gender_value - 0.5) * 2 * 100)}%"
50
+
51
+ # Interface Gradio
52
+ iface = gr.Interface(
53
+ fn=predict,
54
+ inputs=[gr.Image(type="pil"), gr.Dropdown(choices=list(models.keys()), label="Choisir un modèle")],
55
+ outputs=gr.Textbox(label="Prédictions des modèles")
56
+ )
57
+
58
+ # Lancer l'interface
59
+ if __name__ == "__main__":
60
+ iface.launch()