import gradio as gr import tensorflow as tf import numpy as np from PIL import Image # Cargar el modelo modelo = tf.keras.models.load_model('/content/drive/MyDrive/modelo_deteccion_cancer.keras') # Función para preparar la imagen antes de pasarla al modelo def preparar_imagen(ruta_imagen, tamaño=(224, 224)): img = Image.open(ruta_imagen) img = img.resize(tamaño) img_array = np.array(img) img_array = img_array / 255.0 img_array = np.expand_dims(img_array, axis=0) # Forma: (1, 224, 224, 3) return img_array # Función para predecir la clase de la imagen def predecir_imagen(ruta_imagen): img_array = preparar_imagen(ruta_imagen) predicciones = modelo.predict(img_array) clase_predicha = np.argmax(predicciones, axis=1)[0] probabilidad = np.max(predicciones) return clase_predicha, probabilidad # Función para mostrar la imagen y el resultado de la predicción def mostrar_resultado(ruta_imagen): clase_predicha, probabilidad = predecir_imagen(ruta_imagen) clases = { 0: "Sin cáncer", 1: "Melanoma (MEL)", 2: "Carcinoma basocelular (BCC)", 3: "Lesión precancerosa (AKIEC)" } nombre_clase = clases.get(clase_predicha, "Desconocido") return f"Predicción: {nombre_clase}\nProbabilidad: {probabilidad:.2f}" # Crear la interfaz de Gradio iface = gr.Interface( fn=mostrar_resultado, inputs=gr.Image(type="filepath"), outputs=gr.Textbox(label="Resultado"), title="Detección de Cáncer de Piel", description="Sube una imagen de una lesión de piel para clasificarla." ) # Lanzar la interfaz iface.launch()