| 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) |
|
|