Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -119,7 +119,7 @@ def predict(image):
|
|
119 |
frame_recommendations = recommend_glasses_tree(pred_label)
|
120 |
|
121 |
description = face_shape_descriptions.get(pred_label, "tidak dikenali")
|
122 |
-
|
123 |
|
124 |
# Load images for all recommended frames
|
125 |
for frame in frame_recommendations:
|
@@ -127,21 +127,21 @@ def predict(image):
|
|
127 |
if frame_image_path and os.path.exists(frame_image_path):
|
128 |
try:
|
129 |
frame_image = Image.open(frame_image_path)
|
130 |
-
|
131 |
except Exception as e:
|
132 |
print(f"Error loading image for {frame}: {e}")
|
133 |
|
134 |
# Build explanation text
|
135 |
if frame_recommendations:
|
136 |
-
|
137 |
explanation = (f"Bentuk wajah kamu adalah {pred_label} ({pred_prob:.2f}%). "
|
138 |
f"Kamu memiliki bentuk wajah {description} "
|
139 |
-
f"Rekomendasi bentuk kacamata yang sesuai dengan wajah kamu adalah: {
|
140 |
else:
|
141 |
explanation = (f"Bentuk wajah kamu adalah {pred_label} ({pred_prob:.2f}%). "
|
142 |
f"Tidak ada rekomendasi frame untuk bentuk wajah ini.")
|
143 |
|
144 |
-
return pred_label, explanation,
|
145 |
|
146 |
except ValueError as ve:
|
147 |
return "Error", str(ve), []
|
@@ -156,17 +156,15 @@ with gr.Blocks(theme=gr.themes.Soft()) as iface:
|
|
156 |
with gr.Row():
|
157 |
with gr.Column():
|
158 |
image_input = gr.Image(type="pil")
|
159 |
-
|
160 |
-
|
161 |
-
clear_button = gr.Button("Ganti")
|
162 |
with gr.Column():
|
163 |
detected_shape = gr.Textbox(label="Bentuk Wajah Terdeteksi")
|
164 |
explanation_output = gr.Textbox(label="Penjelasan")
|
165 |
-
recommendation_gallery = gr.Gallery(label="Rekomendasi Kacamata", columns=3)
|
166 |
|
167 |
-
upload_button.
|
168 |
clear_button.click(lambda: (None, "", []), inputs=None, outputs=[image_input, detected_shape, recommendation_gallery])
|
169 |
-
image_input.upload(predict, inputs=image_input, outputs=[detected_shape, explanation_output, recommendation_gallery])
|
170 |
|
171 |
if __name__ == "__main__":
|
172 |
iface.launch()
|
|
|
119 |
frame_recommendations = recommend_glasses_tree(pred_label)
|
120 |
|
121 |
description = face_shape_descriptions.get(pred_label, "tidak dikenali")
|
122 |
+
gallery_items = []
|
123 |
|
124 |
# Load images for all recommended frames
|
125 |
for frame in frame_recommendations:
|
|
|
127 |
if frame_image_path and os.path.exists(frame_image_path):
|
128 |
try:
|
129 |
frame_image = Image.open(frame_image_path)
|
130 |
+
gallery_items.append((frame_image, frame)) # Tambahkan nama frame
|
131 |
except Exception as e:
|
132 |
print(f"Error loading image for {frame}: {e}")
|
133 |
|
134 |
# Build explanation text
|
135 |
if frame_recommendations:
|
136 |
+
recommended_frames_text = ', '.join(frame_recommendations)
|
137 |
explanation = (f"Bentuk wajah kamu adalah {pred_label} ({pred_prob:.2f}%). "
|
138 |
f"Kamu memiliki bentuk wajah {description} "
|
139 |
+
f"Rekomendasi bentuk kacamata yang sesuai dengan wajah kamu adalah: {recommended_frames_text}.")
|
140 |
else:
|
141 |
explanation = (f"Bentuk wajah kamu adalah {pred_label} ({pred_prob:.2f}%). "
|
142 |
f"Tidak ada rekomendasi frame untuk bentuk wajah ini.")
|
143 |
|
144 |
+
return pred_label, explanation, gallery_items
|
145 |
|
146 |
except ValueError as ve:
|
147 |
return "Error", str(ve), []
|
|
|
156 |
with gr.Row():
|
157 |
with gr.Column():
|
158 |
image_input = gr.Image(type="pil")
|
159 |
+
upload_button = gr.Button("Unggah Gambar")
|
160 |
+
clear_button = gr.Button("Ganti")
|
|
|
161 |
with gr.Column():
|
162 |
detected_shape = gr.Textbox(label="Bentuk Wajah Terdeteksi")
|
163 |
explanation_output = gr.Textbox(label="Penjelasan")
|
164 |
+
recommendation_gallery = gr.Gallery(label="Rekomendasi Kacamata", columns=3, show_label=False)
|
165 |
|
166 |
+
upload_button.click(predict, inputs=image_input, outputs=[detected_shape, explanation_output, recommendation_gallery])
|
167 |
clear_button.click(lambda: (None, "", []), inputs=None, outputs=[image_input, detected_shape, recommendation_gallery])
|
|
|
168 |
|
169 |
if __name__ == "__main__":
|
170 |
iface.launch()
|