leopard / app.py
panda1835's picture
Update app.py
e0eee3b
from keras.models import load_model
from PIL import Image, ImageOps
import numpy as np
import gradio as gr
import pandas as pd
def format_label(label):
"""
From '0 rùa khác\n' to 'rùa khác'
"""
return label[label.find(" ")+1:-1]
def predict(image):
# Load the model
model = load_model('keras_model.h5')
# Create the array of the right shape to feed into the keras model
# The 'length' or number of images you can put into the array is
# determined by the first position in the shape tuple, in this case 1.
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
#resize the image to a 224x224 with the same strategy as in TM2:
#resizing the image to be at least 224x224 and then cropping from the center
size = (224, 224)
image = ImageOps.fit(image, size, Image.ANTIALIAS)
#turn the image into a numpy array
image_array = np.asarray(image)
# Normalize the image
normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1
# Load the image into the array
data[0] = normalized_image_array
# run the inference
pred = model.predict(data)
pred = pred.tolist()
with open('labels.txt','r') as f:
labels = f.readlines()
result = {format_label(labels[i]): round(pred[0][i],2) for i in range(len(pred[0]))}
return result
description="""
Description
"""
title = """
Title
"""
examples = [['example1.jpg'], ['example2.jpg'], ['example3.jpg']]
gr.Interface(fn=predict,
inputs=gr.Image(type="pil", label="Input Image"),
outputs=[gr.Label()],
live=True,
title=title,
description=description,
examples=examples).launch()