| import streamlit as st | |
| from PIL import Image | |
| import numpy as np | |
| import tensorflow as tf | |
| from werkzeug.utils import secure_filename | |
| import os | |
| os.environ["CUDA_VISIBLE_DEVICES"] = "-1" | |
| class_names = ['Potato___Early_blight', 'Potato___Late_blight', 'Potato___healthy'] | |
| def predict(model, img): | |
| img_array = tf.keras.preprocessing.image.img_to_array(img) | |
| img_array = tf.expand_dims(img_array, 0) | |
| predictions = model.predict(img_array) | |
| predictions_arr = [round(100 * i, 2) for i in predictions[0]] | |
| predicted_class = class_names[np.argmax(predictions[0])] | |
| confidence = round(100 * (np.max(predictions[0])), 2) | |
| return predicted_class, predictions_arr | |
| model = tf.keras.models.load_model('potato_model.h5', compile=False) | |
| def main(): | |
| st.set_page_config(page_title="Potato Disease Classifier") | |
| st.sidebar.title("Potato Disease Classifier") | |
| st.sidebar.info("Upload an image of a potato leaf to detect early or late blight.") | |
| st.title("Potato Disease Detection") | |
| uploaded_file = st.file_uploader("Upload a potato leaf image",type=['jpg','png','jpeg']) | |
| if uploaded_file is not None: | |
| image = Image.open(uploaded_file) | |
| st.image(image,caption="Uploaded Image",use_column_width=True) | |
| image = image.resize((256,256)) | |
| img_arr = np.array(image) | |
| predicted_class,predictions=predict(model,img_arr) | |
| response = { | |
| "predicted_class": predicted_class, | |
| "early": f"{predictions[0]:.2f}%", | |
| "late": f"{predictions[1]:.2f}%", | |
| "healthy": f"{predictions[2]:.2f}%" | |
| } | |
| st.success(f"Predicted Class : {response['predicted_class']}",icon="β ") | |
| st.write("Probabilities:") | |
| col1,col2,col3 = st.columns(3) | |
| col1.metric("Early Blight" , f"{response['early']}", f"{response['early']}") | |
| col2.metric("Late Blight" , f"{response['late']}", f"{response['late']}") | |
| col3.metric("Healthy" , f"{response['healthy']}", f"{response['healthy']}") | |
| if __name__ == "__main__": | |
| main() | |