import gradio as gr import tensorflow as tf import numpy as np import os # Configuration HEIGHT, WIDTH = 224, 224 NUM_CLASSES = 6 LABELS = ["Burger King", "KFC", "McDonalds", "Other", "Starbucks", "Subway"] from tensorflow_addons.metrics import F1Score from keras.utils import custom_object_scope with custom_object_scope({'Addons>F1Score': F1Score}): model = tf.keras.models.load_model('best_model2.h5') # Loading trained model # model = tf.keras.models.load_model('best_model2.h5') def classify_image(inp): np.random.seed(143) # Preprocess input inp = inp.reshape((-1, HEIGHT, WIDTH, 3)) inp = tf.keras.applications.nasnet.preprocess_input(inp) # Prediction prediction = model.predict(inp) # Build a dict of label:confidence return {LABELS[i]: float(f"{prediction[0][i]:.6f}") for i in range(NUM_CLASSES)} # Gradio interface iface = gr.Interface( fn=classify_image, inputs=gr.Image( label="Input Image", sources="upload", # or "sketchpad", "webcam" type="numpy", # pass as numpy array to your function height=HEIGHT, # set display height :contentReference[oaicite:0]{index=0} width=WIDTH # set display width :contentReference[oaicite:1]{index=1} ), outputs=gr.Label(num_top_classes=4), title="Brand Logo Detection" ) if __name__ == "__main__": iface.launch(debug=False,share=True)