import gradio as gr import numpy as np from tensorflow.keras.models import load_model from tensorflow.keras.preprocessing import image import tensorflow as tf # Load the saved model model = load_model('acres-ppdc-01.keras') # Define the classes the model was trained on class_labels = ['Potato___Early_blight', 'Potato___Late_blight', 'Potato___healthy'] def classify_potato_plant(img): # Preprocess the image for the model img = img.resize((256, 256)) # Resize to the same size the model was trained on img = image.img_to_array(img) img = np.expand_dims(img, axis=0) img = img / 255.0 # Normalize the image # Make the prediction predictions = model.predict(img) predicted_class = np.argmax(predictions[0]) confidence = predictions[0][predicted_class] # Get the predicted class and confidence score return class_labels[predicted_class], confidence # Create the Gradio interface interface = gr.Interface( fn=classify_potato_plant, inputs=gr.inputs.Image(type="pil"), outputs=[gr.outputs.Label(num_top_classes=1), gr.outputs.Textbox(label="Confidence Score")] ) # Launch the app if __name__ == "__main__": interface.launch()