Ajout modèle 4
Browse files
app.py
CHANGED
|
@@ -2,12 +2,13 @@ import gradio as gr
|
|
| 2 |
import tensorflow as tf
|
| 3 |
import numpy as np
|
| 4 |
from PIL import Image, ImageOps
|
|
|
|
| 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('model_Q3.keras')
|
| 10 |
-
|
| 11 |
|
| 12 |
|
| 13 |
# Gère le formattage des images
|
|
@@ -22,6 +23,11 @@ def format_image_type2(image):
|
|
| 22 |
image = np.array(image) / 255.0 # Normalisation
|
| 23 |
return image_single_fix(image)
|
| 24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
def image_single_fix(image_array):
|
| 26 |
return 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)
|
| 27 |
|
|
@@ -42,6 +48,11 @@ models = {
|
|
| 42 |
"model": model3,
|
| 43 |
"type": "gender_age",
|
| 44 |
"image_format": format_image_type2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
}
|
| 46 |
}
|
| 47 |
|
|
@@ -64,10 +75,16 @@ def predict(image, model_name):
|
|
| 64 |
elif model_type == "age_only":
|
| 65 |
age_value = prediction[0][0]
|
| 66 |
return_text = display_age_prediction(age_value)
|
| 67 |
-
|
| 68 |
gender_value = prediction[0][0][0]
|
| 69 |
age_value = prediction[1][0][0]
|
| 70 |
return_text = display_gender_prediction(gender_value) + "\n" + display_age_prediction(age_value)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
|
| 72 |
return f"{return_text}"
|
| 73 |
|
|
|
|
| 2 |
import tensorflow as tf
|
| 3 |
import numpy as np
|
| 4 |
from PIL import Image, ImageOps
|
| 5 |
+
from tensorflow.keras.applications.efficientnet import preprocess_input
|
| 6 |
|
| 7 |
# Charger les modèles (remplacez les chemins par vos fichiers de modèles)
|
| 8 |
model1 = tf.keras.models.load_model('model_v2_Q1.keras')
|
| 9 |
model2 = tf.keras.models.load_model('model_v2_Q2.keras')
|
| 10 |
model3 = tf.keras.models.load_model('model_Q3.keras')
|
| 11 |
+
model4 = tf.keras.models.load_model('model_Q4.keras')
|
| 12 |
|
| 13 |
|
| 14 |
# Gère le formattage des images
|
|
|
|
| 23 |
image = np.array(image) / 255.0 # Normalisation
|
| 24 |
return image_single_fix(image)
|
| 25 |
|
| 26 |
+
def format_image_type3(image):
|
| 27 |
+
image = tf.image.resize(image, (128, 128)) # Redimensionner selon la taille attendue
|
| 28 |
+
image = preprocess_input(image) # Normalisation
|
| 29 |
+
return image_single_fix(image)
|
| 30 |
+
|
| 31 |
def image_single_fix(image_array):
|
| 32 |
return 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)
|
| 33 |
|
|
|
|
| 48 |
"model": model3,
|
| 49 |
"type": "gender_age",
|
| 50 |
"image_format": format_image_type2
|
| 51 |
+
},
|
| 52 |
+
"Modèle 4 (genre et âge) [Transfert d'apprentissage]": {
|
| 53 |
+
"model": model4,
|
| 54 |
+
"type": "age_gender",
|
| 55 |
+
"image_format": format_image_type3
|
| 56 |
}
|
| 57 |
}
|
| 58 |
|
|
|
|
| 75 |
elif model_type == "age_only":
|
| 76 |
age_value = prediction[0][0]
|
| 77 |
return_text = display_age_prediction(age_value)
|
| 78 |
+
elif model_type == "gender_age":
|
| 79 |
gender_value = prediction[0][0][0]
|
| 80 |
age_value = prediction[1][0][0]
|
| 81 |
return_text = display_gender_prediction(gender_value) + "\n" + display_age_prediction(age_value)
|
| 82 |
+
elif model_type == "age_gender": # gender_age but prediction data order is reversed
|
| 83 |
+
gender_value = prediction[1][0][0]
|
| 84 |
+
age_value = prediction[0][0][0]
|
| 85 |
+
return_text = display_gender_prediction(gender_value) + "\n" + display_age_prediction(age_value)
|
| 86 |
+
else:
|
| 87 |
+
raise Exception(f"Unsupported model_type '{model_type}'")
|
| 88 |
|
| 89 |
return f"{return_text}"
|
| 90 |
|