Rahatara's picture
Create app.py
17b50e3 verified
raw
history blame
1.65 kB
import streamlit as st
from PIL import Image
import numpy as np
def mock_encoder(image):
"""Simulates encoding an image into a latent representation."""
return np.random.normal(0, 1, (1, 2)), np.random.normal(0, 1, (1, 2)), np.random.normal(0, 1, (1, 2))
def mock_decoder(latent_representation):
"""Simulates decoding a latent representation back into an image."""
return np.random.rand(28, 28, 1) * 255 # Random image for demonstration
def latent_space_augmentation(image, encoder, decoder, noise_scale=0.1):
z_mean, z_log_var, _ = encoder(image)
epsilon = np.random.normal(size=z_mean.shape)
z_augmented = z_mean + np.exp(0.5 * z_log_var) * epsilon * noise_scale
augmented_image = decoder(z_augmented)
return np.squeeze(augmented_image)
st.title("VAE-based Image Augmentation Demo")
uploaded_image = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
if uploaded_image is not None:
image = Image.open(uploaded_image).convert('L')
image = image.resize((28, 28)) # Resizing for simplicity
st.image(image, caption="Uploaded Image", use_column_width=True)
if st.button("Augment Image"):
# Convert PIL image to numpy array
image_array = np.array(image) / 255.0 # Normalize the image
image_array = image_array.reshape((28, 28, 1)) # Reshape for the mock encoder/decoder
# Perform augmentation
augmented_image = latent_space_augmentation(image_array, mock_encoder, mock_decoder)
# Display the augmented image
st.image(augmented_image, caption="Augmented Image", clamp=True, use_column_width=True)