Update app.py
Browse files
app.py
CHANGED
|
@@ -6,7 +6,6 @@ IMG_SIZE = (224, 224)
|
|
| 6 |
MODEL_PATH = "dental_classifier_model.keras"
|
| 7 |
CLASS_NAMES = ['no_valido', 'valido']
|
| 8 |
|
| 9 |
-
# Cargar modelo
|
| 10 |
model = tf.keras.models.load_model(MODEL_PATH)
|
| 11 |
|
| 12 |
def preprocess_image(img):
|
|
@@ -28,22 +27,22 @@ def predecir(rx_image):
|
|
| 28 |
other_class = CLASS_NAMES[other_index]
|
| 29 |
other_confidence = score[other_index] * 100
|
| 30 |
|
| 31 |
-
# Color según resultado
|
| 32 |
color_texto = "#4CAF50" if predicted_class == "valido" else "#FF0000"
|
| 33 |
|
| 34 |
resultado_texto = f"""
|
| 35 |
<div style='
|
| 36 |
-
font-size:36px;
|
| 37 |
-
text-align:center;
|
| 38 |
-
padding:40px;
|
| 39 |
height:350px;
|
| 40 |
-
border: 3px solid {color_texto};
|
| 41 |
-
border-radius:25px;
|
| 42 |
-
background-color:#
|
| 43 |
display:flex;
|
| 44 |
flex-direction:column;
|
| 45 |
justify-content:center;
|
| 46 |
color:{color_texto};
|
|
|
|
| 47 |
'>
|
| 48 |
<div>Resultado: <b>{predicted_class.upper()}</b></div>
|
| 49 |
<div>Confianza: {confidence:.2f}%</div>
|
|
@@ -54,6 +53,9 @@ def predecir(rx_image):
|
|
| 54 |
return resultado_texto
|
| 55 |
|
| 56 |
with gr.Blocks(theme="default") as demo:
|
|
|
|
|
|
|
|
|
|
| 57 |
gr.Markdown("## Clasificador RX LAB 🦷 V1(529NV-348V) TFG Marta B.")
|
| 58 |
|
| 59 |
with gr.Row():
|
|
@@ -64,8 +66,7 @@ with gr.Blocks(theme="default") as demo:
|
|
| 64 |
with gr.Column():
|
| 65 |
resultado = gr.HTML(label="Resultado")
|
| 66 |
|
| 67 |
-
# ⬅ Aquí están los paréntesis cerrados correctamente
|
| 68 |
boton_analizar.click(fn=predecir, inputs=rx_input, outputs=resultado)
|
| 69 |
boton_limpiar.click(lambda: (None, None), inputs=[], outputs=[rx_input, resultado])
|
| 70 |
|
| 71 |
-
demo.launch()
|
|
|
|
| 6 |
MODEL_PATH = "dental_classifier_model.keras"
|
| 7 |
CLASS_NAMES = ['no_valido', 'valido']
|
| 8 |
|
|
|
|
| 9 |
model = tf.keras.models.load_model(MODEL_PATH)
|
| 10 |
|
| 11 |
def preprocess_image(img):
|
|
|
|
| 27 |
other_class = CLASS_NAMES[other_index]
|
| 28 |
other_confidence = score[other_index] * 100
|
| 29 |
|
|
|
|
| 30 |
color_texto = "#4CAF50" if predicted_class == "valido" else "#FF0000"
|
| 31 |
|
| 32 |
resultado_texto = f"""
|
| 33 |
<div style='
|
| 34 |
+
font-size:36px;
|
| 35 |
+
text-align:center;
|
| 36 |
+
padding:40px;
|
| 37 |
height:350px;
|
| 38 |
+
border: 3px solid {color_texto};
|
| 39 |
+
border-radius:25px;
|
| 40 |
+
background-color:#ffffff; /* fondo blanco seguro */
|
| 41 |
display:flex;
|
| 42 |
flex-direction:column;
|
| 43 |
justify-content:center;
|
| 44 |
color:{color_texto};
|
| 45 |
+
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
| 46 |
'>
|
| 47 |
<div>Resultado: <b>{predicted_class.upper()}</b></div>
|
| 48 |
<div>Confianza: {confidence:.2f}%</div>
|
|
|
|
| 53 |
return resultado_texto
|
| 54 |
|
| 55 |
with gr.Blocks(theme="default") as demo:
|
| 56 |
+
# Forzar fondo claro en toda la app
|
| 57 |
+
gr.HTML("<style>body{background-color:#ffffff;}</style>")
|
| 58 |
+
|
| 59 |
gr.Markdown("## Clasificador RX LAB 🦷 V1(529NV-348V) TFG Marta B.")
|
| 60 |
|
| 61 |
with gr.Row():
|
|
|
|
| 66 |
with gr.Column():
|
| 67 |
resultado = gr.HTML(label="Resultado")
|
| 68 |
|
|
|
|
| 69 |
boton_analizar.click(fn=predecir, inputs=rx_input, outputs=resultado)
|
| 70 |
boton_limpiar.click(lambda: (None, None), inputs=[], outputs=[rx_input, resultado])
|
| 71 |
|
| 72 |
+
demo.launch()
|