PlantDr-Tomato / app.py
project21's picture
Create app.py
1b95f2b verified
raw
history blame
16.8 kB
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)