| 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() |
|
|