import gradio as gr # Import tensorflow here import tensorflow as tf from tensorflow.keras.utils import img_to_array,load_img from tensorflow.keras.models import load_model # Use tensorflow.keras.models import numpy as np # Load the pre-trained model from the local path model_path = 'Mango.h5' # Define custom objects to handle potential incompatibilities custom_objects = {'DepthwiseConv2D': tf.keras.layers.DepthwiseConv2D} # Load the model with custom_objects model = load_model(model_path, custom_objects=custom_objects) # 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=='Mango Anthracrose': predicted_label = """<style> li{ font-size: 15px; margin-left: 90px; margin-top: 15px; margin-bottom: 15px; } h4{ font-size: 17px; margin-top: 15px; } h4:hover{ cursor: pointer; } h3:hover{ cursor: pointer; color: blue; transform: scale(1.3); } .note{ text-align: center; font-size: 16px; } p{ font-size: 13px; text-align: center; } </style> <h3><center><b>Mango Anthracrose</b></center></h3> <h4>PESTICIDES TO BE USED:</h4> <ul> <li>1. Mancozeb</li> <li>2. Azoxystrobin</li> <li>3. carbendazim</li> <li>4. Propiconazole</li> <li>5. Thiophanate-methyl</li> <li>6. Copper Sulfate</li> </ul><br> <p class="note"><b>* * * IMPORTANT NOTE * * *</b></p> <p>Be sure to follow local regulations and guidelines for application</p> """ elif predicted_label=='Mango Bacterial Canker': predicted_label = """ <style> li{ font-size: 15px; margin-left: 90px; margin-top: 15px; margin-bottom: 15px; } h4{ font-size: 17px; margin-top: 15px; } h4:hover{ cursor: pointer; } h3:hover{ cursor: pointer; color: blue; transform: scale(1.3); } .note{ text-align: center; font-size: 16px; } p{ font-size: 13px; text-align: center; } </style> <h3><center><b>Mango Bacterial Canker</b></center></h3> <h4>PESTICIDES TO BE USED:</h4> <ul> <li>1. Copper Hydroxide</li> <li>2. Copper Oxychloride</li> <li>3. Streptomycin</li> <li>4. oxytetracycline</li> <li>5. Neem oil</li> <li>6. Garlic oil</li> </ul> <p class="note"><b>* * * IMPORTANT NOTE * * *</b></p> <p>Be sure to follow local regulations and guidelines for application</p> """ elif predicted_label=='Mango Cutting Weevil': predicted_label = """ <style> li{ font-size: 15px; margin-left: 90px; margin-top: 15px; margin-bottom: 15px; } h4{ font-size: 17px; margin-top: 15px; } h4:hover{ cursor: pointer; } h3:hover{ cursor: pointer; color: blue; transform: scale(1.3); } .note{ text-align: center; font-size: 16px; } p{ font-size: 13px; text-align: center; } </style> <h3><center><b>Mango Cutting Weevil</b></center></h3> <h4>PESTICIDES TO BE USED:</h4> <ul> <li>1. Imidacloprid</li> <li>2. Thiamethoxam</li> <li>3. Chlorpyrifos</li> <li>4. Lambda-cyhalothrin</li> <li>5. Fipronil</li> <li>6. Neem oil</li> </ul> <p class="note"><b>* * * IMPORTANT NOTE * * *</b></p> <p>Be sure to follow local regulations and guidelines for application</p> """ elif predicted_label=='Mango Die Back': predicted_label = """ <style> li{ font-size: 15px; margin-left: 90px; margin-top: 15px; margin-bottom: 15px; } h4{ font-size: 17px; margin-top: 15px; } h4:hover{ cursor: pointer; } h3:hover{ cursor: pointer; color: blue; transform: scale(1.3); } .note{ text-align: center; font-size: 16px; } p{ font-size: 13px; text-align: center; } </style> <h3><center><b>Mango Die Back</b></center></h3> <h4>PESTICIDES TO BE USED:</h4> <ul> <li>1. Carbendazim</li> <li>2. Mancozeb</li> <li>3. Azoxystrobin</li> <li>4. Triazole</li> <li>5. Potassium bicarbonate</li> <li>6. Sodium bicarbonate</li> </ul> <p class="note"><b>* * * IMPORTANT NOTE * * *</b></p> <p>Be sure to follow local regulations and guidelines for application</p> """ elif predicted_label=='Mango Gall Midge': predicted_label = """ <style> li{ font-size: 15px; margin-left: 90px; margin-top: 15px; margin-bottom: 15px; } h4{ font-size: 17px; margin-top: 15px; } h4:hover{ cursor: pointer; } h3:hover{ cursor: pointer; color: blue; transform: scale(1.3); } .note{ text-align: center; font-size: 16px; } p{ font-size: 13px; text-align: center; } </style> <h3><center><b>Mango Gall Midge</b></center></h3> <h4>PESTICIDES TO BE USED:</h4> <ul> <li>1. Imidacloprid</li> <li>2. Thiamethoxam</li> <li>3. Chlorpyrifos</li> <li>4. Lambda-cyhalothrin</li> <li>5. Spinosad</li> <li>6. Pyrethrin</li> </ul> <p class="note"><b>* * * IMPORTANT NOTE * * *</b></p> <p>Be sure to follow local regulations and guidelines for application</p> """ elif predicted_label=='Mango Powdery Mildew': predicted_label = """ <style> li{ font-size: 15px; margin-left: 90px; margin-top: 15px; margin-bottom: 15px; } h4{ font-size: 17px; margin-top: 15px; } h4:hover{ cursor: pointer; } h3:hover{ cursor: pointer; color: blue; transform: scale(1.3); } .note{ text-align: center; font-size: 16px; } p{ font-size: 13px; text-align: center; } </style> <h3><center><b>Mango Powdery Mildew</b></center></h3> <h4>PESTICIDES TO BE USED:</h4> <ul> <li>1. Sulfur</li> <li>2. Bicarbonates</li> <li>3. Myclobutanil</li> <li>4. Triadimefon</li> <li>5. Propiconazole</li> <li>6. Azoxystrobin</li> </ul> <p class="note"><b>* * * IMPORTANT NOTE * * *</b></p> <p>Be sure to follow local regulations and guidelines for application</p> """ elif predicted_label=='Mango Sooty Mould': predicted_label = """ <style> li{ font-size: 15px; margin-left: 90px; margin-top: 15px; margin-bottom: 15px; } h4{ font-size: 17px; margin-top: 15px; } h4:hover{ cursor: pointer; } h3:hover{ cursor: pointer; color: blue; transform: scale(1.3); } .note{ text-align: center; font-size: 16px; } p{ font-size: 13px; text-align: center; } </style> <h3><center><b>Mango Sooty Mould</b></center></h3> <h4>PESTICIDES TO BE USED:</h4> <ul> <li>1. Imidacloprid (Neonicotinoid)</li> <li>2. Thiamethoxam (Neonicotinoid)</li> <li>3. Bifenthrin (Pyrethroid)</li> <li>4. Lambda-cyhalothrin (Pyrethroid)</li> <li>5. Insecticidal soap</li> <li>6. Horticultural oil</li> </ul> <p class="note"><b>* * * IMPORTANT NOTE * * *</b></p> <p>Be sure to follow local regulations and guidelines for application</p> """ else: predicted_label = """<h3 align="center">Mango Healthy</h3><br><br> <center>No need use Pesticides</center>""" return predicted_label except Exception as e: print(f"Error: {e}") return None # List of class labels all_labels = [ 'Mango Anthracrose', 'Mango Bacterial Canker', 'Mango Cutting Weevil', 'Mango Die Back', 'Mango Gall Midge', 'Mango Healthy', 'Mango Powdery Mildew', 'Mango Sooty Mould' ] # 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="""<center>Mango Disease Predictor</center>""", description="Upload an image of a plant to predict the disease.", ) # Launch the Gradio app gr_interface.launch(share=True)