Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -99,24 +99,31 @@ def classify_zip_and_analyze_color(zip_file):
|
|
| 99 |
faces_data = []
|
| 100 |
try:
|
| 101 |
img_cv2 = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
|
| 102 |
-
detected_faces = DeepFace.analyze(
|
| 103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
detected_faces = [detected_faces]
|
|
|
|
| 105 |
for f in detected_faces:
|
| 106 |
-
gender = f
|
| 107 |
if gender in ["man", "male"]:
|
| 108 |
gender_fr = "Homme"
|
| 109 |
elif gender in ["woman", "female"]:
|
| 110 |
gender_fr = "Femme"
|
| 111 |
else:
|
| 112 |
gender_fr = "Inconnu"
|
|
|
|
| 113 |
faces_data.append({
|
| 114 |
-
"age": f
|
| 115 |
"gender": gender_fr,
|
| 116 |
-
"emotion": f
|
| 117 |
})
|
|
|
|
| 118 |
except:
|
| 119 |
-
faces_data=[]
|
| 120 |
|
| 121 |
faces_str = "; ".join([
|
| 122 |
f"Age: {face['age']}, Gender: {face['gender']}, Emotion: {face['emotion']}"
|
|
@@ -157,17 +164,8 @@ def classify_zip_and_analyze_color(zip_file):
|
|
| 157 |
buf2 = io.BytesIO(); plt.savefig(buf2, format="png", bbox_inches="tight"); plt.close(fig2); buf2.seek(0); plot2_img = Image.open(buf2)
|
| 158 |
|
| 159 |
# Gender and age
|
| 160 |
-
ages_male = []
|
| 161 |
-
ages_female = []
|
| 162 |
-
for face_list in df["Face Info"]:
|
| 163 |
-
if face_list.strip()=="":
|
| 164 |
-
continue
|
| 165 |
-
for face_str in face_list.split("; "):
|
| 166 |
-
parts = face_str.split(", ")
|
| 167 |
-
age = int(parts[0].split(": ")[1])
|
| 168 |
-
gender = parts[1].split(": ")[1]
|
| 169 |
-
if gender=="Homme": ages_male.append(age)
|
| 170 |
-
elif gender=="Femme": ages_female.append(age)
|
| 171 |
|
| 172 |
gender_counts = {"Homme": len(ages_male), "Femme": len(ages_female)}
|
| 173 |
|
|
|
|
| 99 |
faces_data = []
|
| 100 |
try:
|
| 101 |
img_cv2 = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
|
| 102 |
+
detected_faces = DeepFace.analyze(
|
| 103 |
+
img_cv2, actions=["age","gender","emotion"], enforce_detection=False
|
| 104 |
+
)
|
| 105 |
+
|
| 106 |
+
# Ensure detected_faces is a list
|
| 107 |
+
if isinstance(detected_faces, dict):
|
| 108 |
detected_faces = [detected_faces]
|
| 109 |
+
|
| 110 |
for f in detected_faces:
|
| 111 |
+
gender = str(f.get("gender", "Unknown")).lower()
|
| 112 |
if gender in ["man", "male"]:
|
| 113 |
gender_fr = "Homme"
|
| 114 |
elif gender in ["woman", "female"]:
|
| 115 |
gender_fr = "Femme"
|
| 116 |
else:
|
| 117 |
gender_fr = "Inconnu"
|
| 118 |
+
|
| 119 |
faces_data.append({
|
| 120 |
+
"age": f.get("age", -1),
|
| 121 |
"gender": gender_fr,
|
| 122 |
+
"emotion": f.get("dominant_emotion", "Unknown")
|
| 123 |
})
|
| 124 |
+
|
| 125 |
except:
|
| 126 |
+
faces_data = []
|
| 127 |
|
| 128 |
faces_str = "; ".join([
|
| 129 |
f"Age: {face['age']}, Gender: {face['gender']}, Emotion: {face['emotion']}"
|
|
|
|
| 164 |
buf2 = io.BytesIO(); plt.savefig(buf2, format="png", bbox_inches="tight"); plt.close(fig2); buf2.seek(0); plot2_img = Image.open(buf2)
|
| 165 |
|
| 166 |
# Gender and age
|
| 167 |
+
ages_male = [int(f.split(", ")[0].split(": ")[1]) for row in df["Face Info"] for f in row.split("; ") if "Homme" in f]
|
| 168 |
+
ages_female = [int(f.split(", ")[0].split(": ")[1]) for row in df["Face Info"] for f in row.split("; ") if "Femme" in f]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 169 |
|
| 170 |
gender_counts = {"Homme": len(ages_male), "Femme": len(ages_female)}
|
| 171 |
|