File size: 2,819 Bytes
da9ab10
 
28becee
df40dfd
 
e78bfee
 
df40dfd
 
e78bfee
df40dfd
e78bfee
 
df40dfd
e78bfee
df40dfd
e78bfee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
df40dfd
 
 
 
 
 
 
 
 
e78bfee
 
 
 
 
 
3ae787b
e78bfee
 
 
 
df40dfd
 
 
e78bfee
 
df40dfd
 
e78bfee
 
 
28becee
e78bfee
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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()