File size: 2,160 Bytes
f2bcbc5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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 modelo con custom_objects para mapear 'mse'
model = load_model("autoencoder.h5", custom_objects={"mse": MeanSquaredError()})

# Funci贸n de predicci贸n
def detectar_anomalia(imagen):
    # Convertir y preprocesar la imagen
    imagen = imagen.convert("L").resize((64, 64))
    arr = np.array(imagen) / 255.0
    arr = arr.reshape((1, 64, 64, 1))
    
    # Obtener la reconstrucci贸n
    reconstruido = model.predict(arr, verbose=0)  # verbose=0 para evitar logs innecesarios
    
    # Calcular el error de reconstrucci贸n (MSE)
    error = np.mean((arr - reconstruido) ** 2)
    
    # Convertir las im谩genes para visualizaci贸n
    img_original = (arr.squeeze() * 255).astype(np.uint8)
    img_reconstruida = (reconstruido.squeeze() * 255).astype(np.uint8)
    
    # Convertir a objetos PIL para Gradio
    imagen_original = Image.fromarray(img_original)
    imagen_reconstruida = Image.fromarray(img_reconstruida)

    # Determinar si es an贸mala (usando un umbral)
    is_anomaly = error > 0.01  # Ajusta este umbral seg煤n tus necesidades
    return (imagen_original, 
            imagen_reconstruida, 
            f"Error de reconstrucci贸n (MSE): {error:.6f}\n驴Es an贸mala?: {'S铆' if is_anomaly else 'No'}")

# Interfaz de Gradio
demo = gr.Interface(
    fn=detectar_anomalia,
    inputs=gr.Image(type="pil", label="Sube una imagen para analizar"),
    outputs=[
        gr.Image(label="Imagen Original"),
        gr.Image(label="Imagen Reconstruida"),
        gr.Textbox(label="Resultado de la Detecci贸n")
    ],
    title="Detecci贸n de Anomal铆as en Textiles con Autoencoder (Keras)",
    description="Este Space utiliza un autoencoder entrenado con Keras para detectar anomal铆as en im谩genes de textiles industriales. Sube una imagen para comparar la original con su reconstrucci贸n y determinar si contiene defectos (como manchas, texto o patrones irregulares) bas谩ndote en el error de reconstrucci贸n (MSE). Un MSE alto indica una posible anomal铆a."
)

demo.launch()