Spaces:
Sleeping
Sleeping
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 = """<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>Tomato Yellow Leaf Curl Virus</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. imidacloprid</li> | |
<li>2. thiamethoxam</li> | |
<li>3. Spinosad</li> | |
<li>4. Acetamiprid</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=='Tomato Target Spot': | |
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>Tomato Target Spot</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. Azoxystrobin</li> | |
<li>2. Boscalid</li> | |
<li>3. Mancozeb</li> | |
<li>4. Chlorothalonil</li> | |
<li>5. Propiconazole</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=='Tomato Spider mites': | |
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>Tomato Spider mites</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. Abamectin</li> | |
<li>2. Spiromesifen</li> | |
<li>3. Miticides</li> | |
<li>4. insecticidal soap</li> | |
<li>5. 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=='Tomato Septoria leaf spot': | |
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>Tomato Septoria leaf spot</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. Azoxystrobin</li> | |
<li>2. Boscalid</li> | |
<li>3. Mancozeb</li> | |
<li>4. Chlorothalonil</li> | |
<li>5. Propiconazole</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=='Tomato Mosaic virus': | |
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>Tomato Mosaic virus</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. Imidacloprid</li> | |
<li>2. Thiamethoxam</li> | |
<li>3. Acetamiprid</li> | |
<li>4. Dinotefuran</li> | |
<li>5. 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=='Tomato Leaf Mold': | |
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>Tomato Leaf Mold</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. Azoxystrobin</li> | |
<li>2. Boscalid</li> | |
<li>3. Mancozeb</li> | |
<li>4. Chlorothalonil</li> | |
<li>5. Propiconazole</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=='Tomato Late blight': | |
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>Tomato blight</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. metalaxl</li> | |
<li>2. Chlorothalonil</li> | |
<li>3. Mancozeb</li> | |
<li>4. Copper oxychloride</li> | |
<li>5. 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=='Tomato Early blight': | |
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>Tomato blight</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. Azoxystrobin</li> | |
<li>2. Boscalid</li> | |
<li>3. Mancozeb</li> | |
<li>4. Chlorothalonil</li> | |
<li>5. Propiconazole</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=='Tomato Bacterial spot': | |
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>Tomato Bacterial spot</b></center></h3> | |
<h4>PESTICIDES TO BE USED:</h4> | |
<ul> | |
<li>1. Copper oxychloride</li> | |
<li>2. Streptomycin</li> | |
<li>3. tetracycline</li> | |
<li>4. Oxytetracline(Terramycin)</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> | |
""" | |
elif predicted_label=='Tomato Healthy': | |
predicted_label = """<h3 align="center">Tomato Healthy</h3><br><br> | |
<center>No need use Pesticides</center>""" | |
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) |