|
import streamlit as st |
|
from tensorflow.keras.models import load_model |
|
from PIL import Image |
|
import numpy as np |
|
|
|
model = load_model("model_grapevine_disease_detection.h5") |
|
|
|
def process_image(img): |
|
img = img.convert("RGB") |
|
img = img.resize((50,50)) |
|
img = np.array(img) |
|
if img.ndim == 2: |
|
img = np.stack((img,)*3, axis=-1) |
|
img = img/255.0 |
|
img = np.expand_dims(img, axis=0) |
|
return img |
|
|
|
st.title("GRAPEVINE DISEASE CLASSIFICATION") |
|
st.divider() |
|
|
|
col1, col2, col3 = st.columns([1,2,1]) |
|
with col2: |
|
st.image("grapevine_disease.jpeg") |
|
st.divider() |
|
|
|
st.success("Upload your grapevine image and classify the images with the following labels: Black Rot, ESCA, Healthy, and Leaf Blight with CNN deep learning.") |
|
st.divider() |
|
|
|
st.write("Upload your image and see the results") |
|
st.divider() |
|
|
|
file = st.file_uploader("Choose an image", type=["jpg", "jpeg", "png", "webp"]) |
|
|
|
if file is not None: |
|
img = Image.open(file) |
|
st.image(img, caption="Downloaded image") |
|
image = process_image(img) |
|
prediction = model.predict(image) |
|
predicted_class = np.argmax(prediction) |
|
|
|
class_names = {0:"Black Rot", 1:"ESCA", 2:"Healthy", 3:"Leaf Blight"} |
|
|
|
st.write(f"Predicted Grapevine Disease: {class_names[predicted_class]}") |