Spaces:
Build error
Build error
import gradio as gr | |
import keras | |
from keras.models import load_model | |
# from keras_contrib.layers.normalization.instancenormalization import InstanceNormalization | |
from tensorflow_addons.layers import InstanceNormalization | |
import matplotlib.pyplot as plt | |
import numpy as np | |
import tensorflow as tf | |
cust = {'InstanceNormalization': InstanceNormalization} | |
model=load_model('g-cycleGAN-photo2monet-500images-epoch10.h5',cust) | |
path = [['ex1.jpg'], ['ex2.jpg'], ['ex3.jpg'],['ex4.jpg'],['ex5.jpg']] | |
# preprocess | |
AUTOTUNE = tf.data.AUTOTUNE | |
BUFFER_SIZE = 400 | |
BATCH_SIZE = 1 | |
IMG_WIDTH = 256 | |
IMG_HEIGHT = 256 | |
def resize(image,height,width): | |
''' | |
Resizing the image | |
''' | |
resized_image = tf.image.resize(image,[height,width],method = tf.image.ResizeMethod.NEAREST_NEIGHBOR) | |
return resized_image | |
def normalize(input_image): | |
# def normalize(real_image, input_image) | |
input_image = (input_image/127.5) - 1 | |
return input_image | |
# real_image = (real_image/127.5) - 1 | |
# return real_image,input_image | |
def load(img_file): | |
''' | |
load the image. Since we need only the target image and a | |
gray scale version of the same, we are going to load one | |
and create the other from it | |
''' | |
img = tf.io.read_file(img_file) | |
img = tf.io.decode_jpeg(img) | |
# w = tf.shape(img)[1] | |
# w = w//2 | |
# real_image = img[:,:w,:] | |
real_image = tf.cast(img,tf.float32) | |
return real_image | |
def load_image_test(image_file): | |
''' | |
We are not using random jitter here and thus creating | |
a gray scale image after resizing. | |
''' | |
re = load(image_file) | |
re = resize(re,IMG_HEIGHT,IMG_WIDTH) | |
# inp = tf.image.rgb_to_grayscale(re) | |
# re,inp = normalize(re,inp) | |
# inp = re | |
# re, inp = normalize(re,inp) | |
re = normalize(re) | |
# return inp,re | |
return re | |
def show_preds_image(image_path): | |
A = load_image_test(image_path) | |
# A = (A - 127.5) / 127.5 | |
A = np.expand_dims(A,axis=0) | |
B = model(A) | |
# B = np.squeeze(B,axis=0) | |
B = B[0] | |
B = B * 0.5 + 0.5 | |
return B | |
inputs_image = [ | |
gr.components.Image(shape=(256,256),type="filepath", label="Input Image"), | |
] | |
outputs_image = [ | |
gr.components.Image(shape=(256,256),type="numpy", label="Output Image").style(width=256, height=256), | |
] | |
interface_image = gr.Interface( | |
fn=show_preds_image, | |
inputs=inputs_image, | |
outputs=outputs_image, | |
title="photo2monet", | |
examples=path, | |
cache_examples=False, | |
) | |
gr.TabbedInterface( | |
[interface_image], | |
tab_names=['Image inference'] | |
).queue().launch() | |