PacoTinoco11 commited on
Commit
11befbe
verified
1 Parent(s): d59b3e0

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +85 -0
app.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ import tensorflow
4
+ from PIL import Image
5
+
6
+ vae = tensorflow.keras.models.load_model("dae.h5")
7
+ dae = tensorflow.keras.models.load_model("dae.h5")
8
+
9
+ def preprocess_image(image):
10
+ """Redimensiona y normaliza la imagen."""
11
+ # Convert to PIL Image if it's not already
12
+ if not isinstance(image, Image.Image):
13
+ image = Image.fromarray(image)
14
+
15
+ # Resize image to 128x128
16
+ image = image.resize((128, 128))
17
+
18
+ # Convert to numpy array, normalize and add batch dimension
19
+ image_array = np.array(image).astype("float32") / 255.0
20
+ image_array = np.expand_dims(image_array, axis=0)
21
+
22
+ return image_array
23
+
24
+ def reconstruct_image(image):
25
+ """Reconstruye la imagen con el modelo seleccionado."""
26
+ image = preprocess_image(image)
27
+
28
+ reconstructed = dae.predict(image)[0]
29
+
30
+
31
+ return (reconstructed * 255).astype("uint8") # Convertir a imagen
32
+
33
+ def generate_image(z_dim_values):
34
+ """Genera una imagen a partir de vectores latentes espec铆ficos."""
35
+
36
+ z = np.array([z_dim_values]).astype('float32')
37
+ decoder = vae.layers[-1]
38
+
39
+ # Generar la imagen
40
+ generated = decoder.predict(z)[0]
41
+
42
+ return (generated * 255).astype("uint8")
43
+
44
+ # Interfaz con Gradio usando tabs
45
+ with gr.Blocks(title="Demo de VAE y DAE") as demo:
46
+ gr.Markdown("# Proyecto de VAE y DAE")
47
+
48
+ with gr.Tab("Reconstrucci贸n de Im谩genes"):
49
+ gr.Markdown("## Reconstruye una imagen usando DAE")
50
+ with gr.Row():
51
+ with gr.Column():
52
+ input_image = gr.Image(label="Imagen Original")
53
+ reconstruct_btn = gr.Button("Reconstruir")
54
+ with gr.Column():
55
+ output_image = gr.Image(label="Imagen Reconstruida")
56
+
57
+ reconstruct_btn.click(
58
+ fn=reconstruct_image,
59
+ inputs=[input_image],
60
+ outputs=output_image
61
+ )
62
+
63
+ with gr.Tab("Generaci贸n de Im谩genes (VAE)"):
64
+ gr.Markdown("## Genera nuevas im谩genes manipulando el espacio latente")
65
+ with gr.Row():
66
+ with gr.Column():
67
+ # Crear 2 controles deslizantes para las dimensiones latentes
68
+ # Ajusta el n煤mero seg煤n la dimensi贸n de tu espacio latente
69
+ sliders = []
70
+ for i in range(2): # Asumiendo un espacio latente de dimensi贸n 2
71
+ slider = gr.Slider(-5.0, 5.0, value=0.0, step=0.1,
72
+ label=f"Dimensi贸n Latente {i+1}")
73
+ sliders.append(slider)
74
+ generate_btn = gr.Button("Generar")
75
+ with gr.Column():
76
+ generated_image = gr.Image(label="Imagen Generada")
77
+
78
+ generate_btn.click(
79
+ fn=generate_image,
80
+ inputs=sliders,
81
+ outputs=generated_image
82
+ )
83
+
84
+ if __name__ == "__main__":
85
+ demo.launch(share=True)