|
|
|
import os |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import streamlit as st |
|
import tensorflow as tf |
|
import numpy as np |
|
from PIL import Image |
|
|
|
|
|
|
|
def load_model(): |
|
model = tf.keras.models.load_model("cassava_leaf_disease_model.keras") |
|
return model |
|
|
|
model = load_model() |
|
|
|
|
|
CLASS_NAMES = ["Cassava Bacterial Blight Disease", "Cassava Brown Streak Disease", "Cassava Green Mottle Disease", "Cassava Mosaic Disease", "Healthy"] |
|
|
|
|
|
st.title("Cassava Leaf Disease Identifier") |
|
st.write("Upload an image of a cassava leaf to identify its disease.") |
|
|
|
|
|
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "png", "jpeg"]) |
|
|
|
if uploaded_file is not None: |
|
image = Image.open(uploaded_file).resize((224, 224)) |
|
st.image(image, caption="Uploaded Image", use_column_width=True) |
|
|
|
|
|
img_array = np.array(image) / 255.0 |
|
img_array = np.expand_dims(img_array, axis=0) |
|
|
|
|
|
prediction = model.predict(img_array) |
|
predicted_class = CLASS_NAMES[np.argmax(prediction)] |
|
|
|
st.write(f"Prediction: **{predicted_class}**") |
|
|