|
import gradio as gr |
|
import numpy as np |
|
from PIL import Image |
|
from keras.models import load_model |
|
|
|
|
|
banana_model = load_model("trained model/best_model.h5") |
|
|
|
|
|
class_names_disease = { |
|
0: 'BUNCHY_TOP', |
|
1: 'CORDANA', |
|
2: 'PANAMA', |
|
3: 'SIGATOKA' |
|
} |
|
|
|
|
|
class_names_ripeness = ["Banana_G1", "Banana_G2", "Rotten"] |
|
model = load_model("trained model/best_model.h5") |
|
|
|
def preprocess_image(image): |
|
img = Image.open(image) |
|
img = img.resize((256, 256)) |
|
img_array = np.array(img) |
|
img_array = img_array / 255.0 |
|
img_array = np.expand_dims(img_array, axis=0) |
|
return img_array |
|
|
|
|
|
def predict(image): |
|
img_array = preprocess_image(image) |
|
predictions = model.predict(img_array) |
|
predicted_class = np.argmax(predictions) |
|
predicted_label = class_names_disease[predicted_class] |
|
return predicted_label |
|
|
|
def predict_disease(uploaded_file): |
|
if uploaded_file is not None: |
|
predicted_label = predict(uploaded_file) |
|
return predicted_label |
|
|
|
|
|
def predict_ripeness(image): |
|
img_array = preprocess_image(image) |
|
predictions = banana_model.predict(img_array) |
|
predicted_class = np.argmax(predictions) |
|
predicted_label = class_names_ripeness[predicted_class] |
|
return predicted_label |
|
|
|
inputs = gr.inputs.File(label="Upload an image...") |
|
outputs = gr.outputs.Textbox(label="Prediction") |
|
|
|
gr.Interface(fn=predict_disease, inputs=inputs, outputs=outputs, title="Banana Disease Detection").launch() |
|
|