Sa-m's picture
Update app.py
aed889c verified
import gradio as gr
import tensorflow as tf
from tensorflow.keras.models import load_model
import tensorflow_addons as tfa
import os
import numpy as np
# labels= {'Burger King': 0, 'KFC': 1,'McDonalds': 2,'Other': 3,'Starbucks': 4,'Subway': 5}
HEIGHT,WIDTH=224,224
NUM_CLASSES=6
model=load_model('best_model2.h5')
# def classify_image(inp):
# np.random.seed(143)
# inp = inp.reshape((-1, HEIGHT,WIDTH, 3))
# inp = tf.keras.applications.nasnet.preprocess_input(inp)
# prediction = model.predict(inp)
# ###label = dict((v,k) for k,v in labels.items())
# predicted_class_indices=np.argmax(prediction,axis=1)
# result = {}
# for i in range(len(predicted_class_indices)):
# if predicted_class_indices[i] < NUM_CLASSES:
# result[labels[predicted_class_indices[i]]]= float(predicted_class_indices[i])
# return result
def classify_image(inp):
np.random.seed(143)
labels = {'Burger King': 1, 'KFC': 0, 'McDonalds': 2, 'Other': 3, 'Starbucks': 4, 'Subway': 5}
NUM_CLASSES = 6
inp = inp.reshape((-1, HEIGHT, WIDTH, 3))
inp = tf.keras.applications.nasnet.preprocess_input(inp)
prediction = model.predict(inp)
predicted_class_indices = np.argmax(prediction, axis=1)
label_order = ["Burger King", "KFC", "McDonalds", "Other", "Starbucks", "Subway"]
result = {label: float(f"{prediction[0][labels[label]]:.6f}") for label in label_order}
return result
image = gr.Image(shape=(HEIGHT,WIDTH),label='Input')
label = gr.Label(num_top_classes=4)
gr.Interface(fn=classify_image, inputs=image, outputs=label, title='Brand Logo Detection').launch(debug=False)