Commit
路
30a2053
1
Parent(s):
e010b3f
Edit app.py
Browse files
app.py
CHANGED
|
@@ -9,6 +9,12 @@ from tensorflow.keras.preprocessing import image
|
|
| 9 |
from preprocessing.zoom import apply_zoom
|
| 10 |
from preprocessing.hair_removal import quitar_pelos
|
| 11 |
from preprocessing.segmentation import segmentar_lesion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
# Tama帽o de entrada del modelo
|
| 14 |
ROWS, COLS = 224, 224
|
|
@@ -42,10 +48,23 @@ def preprocess_and_predict(img_input):
|
|
| 42 |
classes = ["Benign", "Malignant"]
|
| 43 |
pred_idx = np.argmax(probs)
|
| 44 |
pred_label = classes[pred_idx]
|
| 45 |
-
|
| 46 |
result_text = f"Predicci贸n: {pred_label} ({probs[pred_idx]*100:.2f}%)"
|
| 47 |
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
# === Interfaz Gradio ===
|
| 51 |
demo = gr.Interface(
|
|
@@ -54,12 +73,12 @@ demo = gr.Interface(
|
|
| 54 |
outputs=[
|
| 55 |
gr.Image(type="numpy", label="M谩scara Binaria"),
|
| 56 |
gr.Image(type="numpy", label="Lesi贸n Segmentada"),
|
| 57 |
-
gr.Textbox(label="Resultado del Modelo")
|
|
|
|
| 58 |
],
|
| 59 |
title="DermaScan - Clasificaci贸n de Lesiones",
|
| 60 |
-
description="Sube una imagen de piel. El sistema segmenta la lesi贸n, muestra la m谩scara
|
| 61 |
)
|
| 62 |
|
| 63 |
if __name__ == "__main__":
|
| 64 |
demo.launch()
|
| 65 |
-
|
|
|
|
| 9 |
from preprocessing.zoom import apply_zoom
|
| 10 |
from preprocessing.hair_removal import quitar_pelos
|
| 11 |
from preprocessing.segmentation import segmentar_lesion
|
| 12 |
+
from preprocessing.metrics import (
|
| 13 |
+
calcular_area,
|
| 14 |
+
calcular_perimetro,
|
| 15 |
+
calcular_circularidad,
|
| 16 |
+
calcular_simetria
|
| 17 |
+
)
|
| 18 |
|
| 19 |
# Tama帽o de entrada del modelo
|
| 20 |
ROWS, COLS = 224, 224
|
|
|
|
| 48 |
classes = ["Benign", "Malignant"]
|
| 49 |
pred_idx = np.argmax(probs)
|
| 50 |
pred_label = classes[pred_idx]
|
|
|
|
| 51 |
result_text = f"Predicci贸n: {pred_label} ({probs[pred_idx]*100:.2f}%)"
|
| 52 |
|
| 53 |
+
# 6. Calcular m茅tricas geom茅tricas
|
| 54 |
+
area = calcular_area(mask)
|
| 55 |
+
perim = calcular_perimetro(mask)
|
| 56 |
+
circ = calcular_circularidad(mask)
|
| 57 |
+
sim_v, sim_h = calcular_simetria(mask)
|
| 58 |
+
|
| 59 |
+
metrics_text = (
|
| 60 |
+
f"脕rea: {area}\n"
|
| 61 |
+
f"Per铆metro: {perim}\n"
|
| 62 |
+
f"Circularidad: {circ}\n"
|
| 63 |
+
f"Simetr铆a Vertical: {sim_v}\n"
|
| 64 |
+
f"Simetr铆a Horizontal: {sim_h}"
|
| 65 |
+
)
|
| 66 |
+
|
| 67 |
+
return mask, lesion_rgb, result_text, metrics_text
|
| 68 |
|
| 69 |
# === Interfaz Gradio ===
|
| 70 |
demo = gr.Interface(
|
|
|
|
| 73 |
outputs=[
|
| 74 |
gr.Image(type="numpy", label="M谩scara Binaria"),
|
| 75 |
gr.Image(type="numpy", label="Lesi贸n Segmentada"),
|
| 76 |
+
gr.Textbox(label="Resultado del Modelo"),
|
| 77 |
+
gr.Textbox(label="M茅tricas de la Lesi贸n")
|
| 78 |
],
|
| 79 |
title="DermaScan - Clasificaci贸n de Lesiones",
|
| 80 |
+
description="Sube una imagen de piel. El sistema segmenta la lesi贸n, muestra la m谩scara, la predicci贸n y m茅tricas geom茅tricas."
|
| 81 |
)
|
| 82 |
|
| 83 |
if __name__ == "__main__":
|
| 84 |
demo.launch()
|
|
|