File size: 1,963 Bytes
e987e54 d6f3f26 e987e54 6f7ade3 dfcc6df e987e54 a164a98 e987e54 4fe8583 e987e54 4fe8583 e31fe8e e987e54 f29f56f e987e54 4fe8583 e987e54 f29f56f e987e54 91b8b8b e987e54 f29f56f e987e54 4fe8583 |
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 52 53 54 55 56 57 58 59 60 61 62 63 |
import numpy as np
import gradio as gr
from tensorflow.keras.models import load_model
import tensorflow as tf
# Carga los modelos previamente entrenados
autoencoder = load_model("models/autoencoder.h5", compile=False)
decoder = load_model("models/decoder.h5")
latent_dim = 128
def add_gaussian_noise(image, noise_factor=0.2):
noisy_image = image + noise_factor * np.random.normal(size=image.shape)
noisy_image = np.clip(noisy_image, 0., 1.)
return noisy_image
def denoise_and_generate(image, num_images):
image = np.array(image) / 255.0
image = tf.image.resize(image, (224, 224)) # Redimensionar la imagen
noisy_image = add_gaussian_noise(np.expand_dims(image, axis=0))
denoised_image = autoencoder.predict(noisy_image).squeeze()
denoised_image = (denoised_image * 255).astype(np.uint8)
noisy_image_display = (noisy_image.squeeze() * 255).astype(np.uint8)
# Genera imágenes con el VAE
random_latent_vectors = np.random.normal(size=(num_images, latent_dim))
generated_images = decoder.predict(random_latent_vectors)
# Prepara las imágenes para devolverlas
outputs = [noisy_image_display, denoised_image] + [generated_images[i].squeeze() for i in range(num_images)]
return outputs
# Define la interfaz
inputs = [
gr.Image(label="Imagen de Entrada"),
gr.Slider(1, 2, step=1, label="Número de Imágenes Generadas")
]
outputs = [
gr.Image(label="Imagen con Ruido"),
gr.Image(label="Imagen Reconstruida (DAE)"),
] + [
gr.Image(label=f"Imagen Generada {i+1} (VAE)") for i in range(2)
]
# Crea la aplicación Gradio
interface = gr.Interface(
fn=denoise_and_generate,
inputs=inputs,
outputs=outputs,
title="Interfaz Interactiva para DAE y VAE",
description="Sube una imagen para agregar ruido, reconstruir con DAE y generar imágenes nuevas con VAE."
)
# Lanza la aplicación
if __name__ == "__main__":
interface.launch(share=True)
|