import gradio as gr import numpy as np from tensorflow.keras.models import load_model from tensorflow.keras.losses import MeanSquaredError from PIL import Image # Cargar el modelo entrenado model = load_model("autoencoder.h5", custom_objects={"mse": MeanSquaredError()}) # Umbral para detectar anomalías (ajustable) THRESHOLD = 0.01 # Función de predicción def detectar_anomalia(imagen): imagen = imagen.convert("L").resize((64, 64)) arr = np.array(imagen) / 255.0 arr = arr.reshape((1, 64, 64, 1)) reconstruido = model.predict(arr, verbose=0) error = np.mean((arr - reconstruido) ** 2) resultado = f"Anómala" if error > THRESHOLD else "Normal" return resultado # Crear la interfaz demo = gr.Interface( fn=detectar_anomalia, inputs=gr.Image(type="pil", label="Sube una imagen para analizar"), outputs=gr.Label(label="Resultado"), examples=["anomalous.png", "normal.png"], title="Detección de Anomalías con Autoencoder (Keras)", description="Este Space utiliza un autoencoder entrenado con Keras para detectar anomalías en imágenes de textiles.", ) demo.launch()