oxfordpets / app.py
Christian Kauth
segmentation and sepia
91e128f
raw
history blame
1.17 kB
import gradio as gr
import numpy as np
import PIL
import tensorflow as tf
from tensorflow import keras
def predict(img):
input = np.array(img, dtype='float32') / 255
sepia_filter = np.array([[.393, .769, .189], [.349, .686, .168], [.272, .534, .131]])
sepia_img = input.dot(sepia_filter.T)
sepia_img /= sepia_img.max()
mask = np.argmax(model.predict(np.expand_dims(input, axis=0)), axis=-1)[0]
result = np.copy(input)
for r in range(result.shape[0]):
for c in range(result.shape[1]):
if mask[r, c] != 1:
result[r, c] = sepia_img[r, c]
return PIL.Image.fromarray(np.uint8(result*255))
model = keras.models.load_model('model')
iface = gr.Interface(predict,\
inputs = gr.Image(shape=(256, 256)),\
outputs = gr.Image(shape=(256, 256), image_mode='rgb'),\
examples = ["examples/english_setter_78.jpg",\
"examples/Ragdoll_60.jpg",\
"examples/pomeranian_74.jpg",\
"examples/Persian_137.jpg",\
"examples/saint_bernard_136.jpg"])
iface.launch()