Sandy818/EF_MachineLearning
0
1import gradio as gr2import numpy as np3from tensorflow.keras.models import load_model4from tensorflow.keras.preprocessing.image import load_img, img_to_array5 6# Cargar el modelo entrenado (debe estar en el mismo directorio o proporcionar la ruta correcta)7model = load_model("neumonia_model.h5")8 9# Dimensiones de entrada esperadas por el modelo (224x224 para VGG16)10image_size = (224, 224)11 12# Función de predicción13def predict_pneumonia(image):14 # Preprocesar la imagen15 img = image.resize(image_size) # Redimensionar la imagen16 img_array = img_to_array(img) / 255.0 # Normalizar la imagen17 img_array = np.expand_dims(img_array, axis=0) # Agregar una dimensión adicional18 19 # Predecir usando el modelo20 prediction = model.predict(img_array)21 class_labels = ["Normal", "Pneumonia"]22 predicted_class = class_labels[np.argmax(prediction)]23 24 # Retornar la clase predicha y la probabilidad25 return f"Predicción: {predicted_class} ({np.max(prediction) * 100:.2f}%)"26 27# Crear la interfaz en Gradio28inputs = gr.Image(type="pil", label="Sube una imagen de rayos X")29outputs = gr.Textbox(label="Resultado de la predicción")30 31interface = gr.Interface(32 fn=predict_pneumonia,33 inputs=inputs,34 outputs=outputs,35 title="Detección de Neumonía en Imágenes de Rayos X",36 description="Sube una imagen de rayos X del tórax para verificar si hay indicios de neumonía.",37)38 39# Lanzar la interfaz40if __name__ == "__main__":41 interface.launch()42 