SkinDemarker / app.py
AdarshRavis's picture
Create app.py
1848a98 verified
raw history blame
No virus
1.94 kB
import streamlit as st
from keras.models import load_model
import numpy as np
from PIL import Image
from matplotlib import pyplot as plt
import requests
# Load your trained model
model = load_model('Demarker_v1.h5')
# Load and preprocess your custom image
def load_and_preprocess_image(image_path, target_shape=(256, 256)):
# Open the image using PIL
custom_image = Image.open(image_path)
# Resize the image to the desired shape
custom_image = custom_image.resize(target_shape)
# Convert the image to an array
custom_image = np.array(custom_image)
# Assuming the input image is in RGB format
# Check if the image needs normalization (pixel values in [0, 255] range)
if custom_image.max() > 1.0:
# Normalize the pixel values to the range [-1, 1]
custom_image = (custom_image.astype(np.float32) - 127.5) / 127.50
# Add a batch dimension
custom_image = np.expand_dims(custom_image, axis=0)
return custom_image
# Plot source and generated images
def plot_images(src_img, gen_img):
images = np.vstack((src_img, gen_img))
# Scale from [-1,1] to [0,1]
images = (images + 1) / 2.0
titles = ['Original', 'Generated']
# Plot images row by row
for i in range(len(images)):
# Define subplot
plt.subplot(1, 2, 1 + i)
# Turn off axis
plt.axis('off')
# Plot raw pixel data
plt.imshow(images[i])
# Show title
plt.title(titles[i])
st.pyplot()
# Streamlit app
st.title("GAN Image Generator")
# Upload custom image
custom_image = st.file_uploader("Upload a custom image", type=["png", "jpg", "jpeg"])
# Check if an image is uploaded
if custom_image:
# Generate an image from your custom source
gen_image = model.predict(load_and_preprocess_image(custom_image))
# Plot both images together
plot_images(load_and_preprocess_image(custom_image), gen_image)