import tensorflow as tf import gradio as gr from load_dataset import classes nm_model = tf.keras.models.load_model("mn_model.keras") resnet_model = tf.keras.models.load_model("resnet_best.h5") inception_model = tf.keras.models.load_model("inception_v3.keras") cifar10_labels = classes models = [ "InceptionBased Model", "MobileNetBased Model", "ResNetBased Model"] def classify_image(input_image, model_name): try: input_image = tf.image.resize(input_image, (32, 32)) labels = cifar10_labels model = get_model(model_name) input_image = tf.expand_dims(input_image, axis=0) predictions = model.predict(input_image).flatten() top_indices = predictions.argsort()[-10:][::-1] confidences = {labels[i]: float(predictions[i]) for i in top_indices} return confidences except Exception as e: return {"error": str(e)} def get_model(model_name): if model_name == "MobileNetBased Model": return nm_model elif model_name == "ResNetBased Model": return resnet_model elif model_name == "InceptionBased Model": return inception_model interface = gr.Interface( fn=classify_image, inputs=[gr.Image(type="numpy", image_mode="RGB", label="Input Image"), gr.Dropdown(models, label="Model Choice")], outputs=gr.Label(num_top_classes=3, label="Predictions"), ) interface.launch(debug=False, share=True)