Fix & réorganisation
Browse files
app.py
CHANGED
|
@@ -18,8 +18,8 @@ def format_image_type1(image):
|
|
| 18 |
|
| 19 |
def format_image_type2(image):
|
| 20 |
image = ImageOps.grayscale(image) # Charge en noir et blanc mais avec une meilleure résolution
|
| 21 |
-
image =
|
| 22 |
-
image = np.array(
|
| 23 |
return image_single_fix(image)
|
| 24 |
|
| 25 |
def image_single_fix(image_array):
|
|
@@ -60,26 +60,32 @@ def predict(image, model_name):
|
|
| 60 |
return_text = ""
|
| 61 |
if model_type == "gender_only":
|
| 62 |
gender_value = prediction[0][0]
|
| 63 |
-
|
| 64 |
-
return_text = f"Genre: {gender} ({gender_value} - {get_gender_confidence(gender_value)} certitude)"
|
| 65 |
elif model_type == "age_only":
|
| 66 |
age_value = prediction[0][0]
|
| 67 |
-
|
| 68 |
-
return_text = f"Age: {age} ({age_value})"
|
| 69 |
else: # "gender_age"
|
| 70 |
-
gender_value = prediction[0][0]
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
age = round(prediction[0][0])
|
| 74 |
-
return_text = f"Genre: {gender} ({gender_value} - {get_gender_confidence(gender_value)} certitude)\nAge: {age} ({age_value})"
|
| 75 |
|
| 76 |
return f"{return_text}"
|
| 77 |
|
| 78 |
|
| 79 |
# Fonctions utiles
|
| 80 |
-
def get_gender_confidence(gender_value):
|
| 81 |
return f"{round(abs(gender_value - 0.5) * 2 * 100)}%"
|
| 82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
|
| 84 |
# Interface Gradio
|
| 85 |
iface = gr.Interface(
|
|
|
|
| 18 |
|
| 19 |
def format_image_type2(image):
|
| 20 |
image = ImageOps.grayscale(image) # Charge en noir et blanc mais avec une meilleure résolution
|
| 21 |
+
image = image.resize((128, 128), Image.LANCZOS) # Redimensionner selon la taille attendue
|
| 22 |
+
image = np.array(image) / 255.0 # Normalisation
|
| 23 |
return image_single_fix(image)
|
| 24 |
|
| 25 |
def image_single_fix(image_array):
|
|
|
|
| 60 |
return_text = ""
|
| 61 |
if model_type == "gender_only":
|
| 62 |
gender_value = prediction[0][0]
|
| 63 |
+
return_text = display_gender_prediction(gender_value)
|
|
|
|
| 64 |
elif model_type == "age_only":
|
| 65 |
age_value = prediction[0][0]
|
| 66 |
+
return_text = display_age_prediction(age_value)
|
|
|
|
| 67 |
else: # "gender_age"
|
| 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 |
|
| 74 |
|
| 75 |
# Fonctions utiles
|
| 76 |
+
def get_gender_confidence(gender_value) -> str:
|
| 77 |
return f"{round(abs(gender_value - 0.5) * 2 * 100)}%"
|
| 78 |
|
| 79 |
+
def display_gender_prediction(gender_value) -> str:
|
| 80 |
+
gender = "Homme" if gender_value < 0.5 else "Femme" # Genre basé sur probabilité
|
| 81 |
+
rounded_gender_value_str = str(round(gender_value, 4))
|
| 82 |
+
return f"Genre: {gender} ({rounded_gender_value_str} - {get_gender_confidence(gender_value)} certitude)"
|
| 83 |
+
|
| 84 |
+
def display_age_prediction(age_value) -> str:
|
| 85 |
+
age = round(age_value) # Arroundi à l'entier le plus proche "half away zero"
|
| 86 |
+
rounded_age_value_str = str(round(age_value, 3))
|
| 87 |
+
return f"Age: {age} ({rounded_age_value_str})"
|
| 88 |
+
|
| 89 |
|
| 90 |
# Interface Gradio
|
| 91 |
iface = gr.Interface(
|