|
import gradio as gr |
|
import numpy as np |
|
import tensorflow as tf |
|
import PIL |
|
import os |
|
|
|
''' |
|
def sepia(input_img): |
|
sepia_filter = np.array([[.393, .769, .189], |
|
[.349, .686, .168], |
|
[.272, .534, .131]]) |
|
sepia_img = input_img.dot(sepia_filter.T) |
|
sepia_img /= sepia_img.max() |
|
return sepia_img |
|
''' |
|
|
|
def normalize_img(img): |
|
img = tf.cast(img, dtype=tf.float32) |
|
|
|
return (img / 127.5) - 1.0 |
|
|
|
def predict_and_save(img, generator_model): |
|
img = normalize_img(img) |
|
prediction = generator_model(img, training=False)[0].numpy() |
|
prediction = (prediction * 127.5 + 127.5).astype(np.uint8) |
|
im = PIL.Image.fromarray(prediction) |
|
return im |
|
|
|
def run(image_path): |
|
model = tf.keras.models.load_model('generator') |
|
img = tf.keras.preprocessing.image.load_img( |
|
image_path, target_size=(256, 256) |
|
) |
|
|
|
|
|
|
|
img_array = tf.keras.preprocessing.image.img_to_array(img) |
|
img_array = tf.expand_dims(img_array, 0) |
|
|
|
predict_and_save(img_array, model) |
|
|
|
iface = gr.Interface(run, gr.inputs.Image(shape=(256, 256)), "image") |
|
|
|
iface.launch(share = True) |