jeysshon's picture
Update app.py
3ae787b verified
import gradio as gr
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
# Cargar modelo
MODEL_ISATRON_JEY = 'modelo_isatron_jeysshonl.h5'
cnn_model = load_model(MODEL_ISATRON_JEY)
def make_prediction(test_image):
"""Realiza la predicción de neumonía en la imagen de rayos X"""
# Cargar y preprocesar imagen
test_image = image.load_img(test_image, target_size=(224, 224))
test_image = image.img_to_array(test_image) / 255.0
test_image = np.expand_dims(test_image, axis=0)
# Realizar predicción
result = cnn_model.predict(test_image, verbose=0)
# Retornar resultados
return {
"Normal": float(result[0][0]),
"Neumonía": float(result[0][1])
}
# Configuración de la interfaz
image_input = gr.Image(type="filepath", label="Subir imagen de rayos X")
description = """
<div style='text-align: justify;'>
El modelo <strong>IsaTron</strong> es una Red Neuronal Convolucional (CNN) diseñada como un método de apoyo médico
para el diagnóstico en imágenes radiológicas de neumonía pediátrica. IsaTron analiza radiografías torácicas y
proporciona un porcentaje de probabilidad para cada clase (Normal o Neumonía).
</div>
<br>
<div style='text-align: justify;'>
<strong>⚠️ Advertencia:</strong> Esta herramienta está diseñada exclusivamente como apoyo al diagnóstico y NO reemplaza
la evaluación médica profesional. Los resultados deben ser interpretados por personal de salud calificado.
</div>
<br>
<div style='text-align: justify;'>
En la parte inferior encontrará imágenes de ejemplo que pueden ser usadas para probar el funcionamiento del modelo.
</div>
<br>
<div style='text-align: center;'>
📚 Más información: <a href="https://repositorio.unbosque.edu.co/handle/20.500.12495/9514" target="_blank">
Repositorio Universidad El Bosque</a>
</div>
"""
examples = [
['1normal.jpeg'],
['image1_pneumonia_virus.jpeg'],
['image1_pneumonia_bacteria.jpeg'],
['image2_normal.jpeg'],
['image2_pneumonia_bacteria.jpeg'],
['image3_normal.jpeg'],
['image4_normal.jpeg'],
]
article = """
<hr>
<div style='text-align: center;'>
<p><strong>IsaTron - Sistema de Apoyo al Diagnóstico de Neumonía</strong></p>
<p>Desarrollado por <strong>Jeysshon Bustos</strong></p>
<p>Universidad El Bosque © </p>
</div>
"""
# Crear interfaz
interface = gr.Interface(
fn=make_prediction,
inputs=image_input,
outputs=gr.Label(label="Predicción", num_top_classes=2),
title="🏥 IsaTron: Detección de Neumonía con IA",
description=description,
article=article,
examples=examples,
theme=gr.themes.Soft(),
allow_flagging="never"
)
# Lanzar aplicación
if __name__ == "__main__":
interface.launch()