CoolFace
Apppublic

PacoTinoco11/Vae-Model

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py84 linesDownload Raw Back to root
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)