import gradio as gr from tensorflow.keras.utils import img_to_array,load_img from keras.models import load_model import numpy as np # Load the pre-trained model from the local path model_path = '/content/tomato.h5' model = load_model(model_path) # Load the model here def predict_disease(image_file, model, all_labels): try: # Load and preprocess the image img = load_img(image_file, target_size=(224, 224)) # Use load_img from tensorflow.keras.utils img_array = img_to_array(img) img_array = np.expand_dims(img_array, axis=0) # Add batch dimension img_array = img_array / 255.0 # Normalize the image # Predict the class predictions = model.predict(img_array) # Use the loaded model here predicted_class = np.argmax(predictions[0]) # Get the predicted class label predicted_label = all_labels[predicted_class] # Print the predicted label to the console if predicted_label=='Tomato Yellow Leaf Curl Virus': predicted_label = """

Tomato Yellow Leaf Curl Virus

PESTICIDES TO BE USED:


* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Target Spot': predicted_label = """

Tomato Target Spot

PESTICIDES TO BE USED:

* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Spider mites': predicted_label = """

Tomato Spider mites

PESTICIDES TO BE USED:

* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Septoria leaf spot': predicted_label = """

Tomato Septoria leaf spot

PESTICIDES TO BE USED:

* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Mosaic virus': predicted_label = """

Tomato Mosaic virus

PESTICIDES TO BE USED:

* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Leaf Mold': predicted_label = """

Tomato Leaf Mold

PESTICIDES TO BE USED:

* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Late blight': predicted_label = """

Tomato blight

PESTICIDES TO BE USED:

* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Early blight': predicted_label = """

Tomato blight

PESTICIDES TO BE USED:

* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Bacterial spot': predicted_label = """

Tomato Bacterial spot

PESTICIDES TO BE USED:

* * * IMPORTANT NOTE * * *

Be sure to follow local regulations and guidelines for application

""" elif predicted_label=='Tomato Healthy': predicted_label = """

Tomato Healthy



No need use Pesticides
""" else: predict_label="choose correct image" return predicted_label except Exception as e: print(f"Error: {e}") return None # List of class labels all_labels = [ 'Tomato Yellow Leaf Curl Virus', 'Tomato Target Spot', 'Tomato Spider mites', 'Tomato Septoria leaf spot', 'Tomato Mosaic virus', 'Tomato Leaf Mold', 'Tomato Late blight', 'Tomato Healthy', 'Tomato Early blight', 'Tomato Bacterial spot' ] # Define the Gradio interface def gradio_predict(image_file): return predict_disease(image_file, model, all_labels) # Pass the model to the function # Create a Gradio interface gr_interface = gr.Interface( fn=gradio_predict, # Function to call for predictions inputs=gr.Image(type="filepath"), # Upload image as file path outputs="html", # Output will be the class label as text title="Tomato Disease Predictor", description="Upload an image of a plant to predict the disease.", ) # Launch the Gradio app gr_interface.launch(share=True)