danielolusipe's picture
Update app.py
8f625d2
import streamlit as st
import tensorflow as tf
import zipfile
from tensorflow.keras.models import load_model
# Unzipping model
zip_ref = zipfile.ZipFile("L10_fine_tuned_model.zip", "r")
zip_ref.extractall()
zip_ref.close()
# Loading model
model_1=load_model("L10_fine_tuned_model")
model_2=load_model("L10_fine_tuned_model")
@st.cache(allow_output_mutation=True)
def load_and_predict_image(model,Input,scale=False):
classes=['bacterial_leaf_blight', 'bacterial_leaf_streak', 'bacterial_panicle_blight', 'blast', 'brown_spot', 'dead_heart', 'downy_mildew', 'hispa', 'normal', 'tungro']
#img=tf.io.read_file(Input)
img=tf.io.decode_image(Input,channels=3)
img=tf.image.resize(img,size=(224,224))
if scale:
img/255.
else:
img
pred_probs=model_1.predict(tf.expand_dims(img,axis=0))
pred_labels=tf.argmax(pred_probs,axis=1)[0].numpy()
pred_class=classes[pred_labels]
return pred_class
def main():
st.set_page_config(page_title="Paddy Disease Detector",
page_icon="🌱",
layout="wide",
initial_sidebar_state="expanded")
st.title("Paddy Disease Detector")
st.write("A Computer vision model that classifies a given paddy leaf images into one of the nine disease categories or a normal leaf accurately.")
col1, col2 = st.columns(2)
with col1:
uploaded_file=st.file_uploader("Click to upload paddy leaf")
selected_model = st.selectbox("Select Model",("model 1", "model 2"), index=0)
if uploaded_file is not None:
uploaded_img=uploaded_file.read()
col2.image(uploaded_file,width=500)
predict=st.button("Predict!")
if predict:
if uploaded_file is not None:
with st.spinner('Please Wait πŸ‘©β€πŸ³'):
# setting model and rescalling
if selected_model == 'model 1':
pred_model = model_1
pred_rescale = False
else:
pred_model = model_2
pred_rescale = False
# makeing prediction
pred = load_and_predict_image(model=pred_model, Input=uploaded_img, scale=pred_rescale)
col1.success(f"It's an {pred}")
else:
st.warning('Please Upload Image')
if __name__=='__main__':
main()