PacoTinoco11/Vae-Model
0
1import gradio as gr2import numpy as np3from PIL import Image4 5vae = tensorflow.keras.models.load_model("vae_model_final.h5")6dae = tensorflow.keras.models.load_model("dae_model_final.h5")7 8def preprocess_image(image):9 """Redimensiona y normaliza la imagen."""10 # Convert to PIL Image if it's not already11 if not isinstance(image, Image.Image):12 image = Image.fromarray(image)13 14 # Resize image to 128x12815 image = image.resize((128, 128))16 17 # Convert to numpy array, normalize and add batch dimension18 image_array = np.array(image).astype("float32") / 255.019 image_array = np.expand_dims(image_array, axis=0)20 21 return image_array22 23def reconstruct_image(image):24 """Reconstruye la imagen con el modelo seleccionado."""25 image = preprocess_image(image)26 27 reconstructed = dae.predict(image)[0]28 29 30 return (reconstructed * 255).astype("uint8") # Convertir a imagen31 32def generate_image(z_dim_values):33 """Genera una imagen a partir de vectores latentes específicos."""34 35 z = np.array([z_dim_values]).astype('float32')36 decoder = vae.layers[-1]37 38 # Generar la imagen39 generated = decoder.predict(z)[0]40 41 return (generated * 255).astype("uint8")42 43# Interfaz con Gradio usando tabs44with gr.Blocks(title="Demo de VAE y DAE") as demo:45 gr.Markdown("# Proyecto de VAE y DAE")46 47 with gr.Tab("Reconstrucción de Imágenes"):48 gr.Markdown("## Reconstruye una imagen usando DAE")49 with gr.Row():50 with gr.Column():51 input_image = gr.Image(label="Imagen Original")52 reconstruct_btn = gr.Button("Reconstruir")53 with gr.Column():54 output_image = gr.Image(label="Imagen Reconstruida")55 56 reconstruct_btn.click(57 fn=reconstruct_image,58 inputs=[input_image],59 outputs=output_image60 )61 62 with gr.Tab("Generación de Imágenes (VAE)"):63 gr.Markdown("## Genera nuevas imágenes manipulando el espacio latente")64 with gr.Row():65 with gr.Column():66 # Crear 2 controles deslizantes para las dimensiones latentes67 # Ajusta el número según la dimensión de tu espacio latente68 sliders = []69 for i in range(2): # Asumiendo un espacio latente de dimensión 270 slider = gr.Slider(-5.0, 5.0, value=0.0, step=0.1, 71 label=f"Dimensión Latente {i+1}")72 sliders.append(slider)73 generate_btn = gr.Button("Generar")74 with gr.Column():75 generated_image = gr.Image(label="Imagen Generada")76 77 generate_btn.click(78 fn=generate_image,79 inputs=sliders,80 outputs=generated_image81 )82 83if __name__ == "__main__":84 demo.launch(share=True)