File size: 2,341 Bytes
963e2ed
 
8fc0fba
963e2ed
 
 
 
 
 
 
 
0a67438
cbbc74d
0a67438
8f625d2
012bd7a
c305649
9011a6a
 
80427c9
0a67438
 
 
 
 
 
 
 
 
 
 
 
28626eb
 
0a67438
 
05ad779
 
139557c
522e7eb
139557c
 
05ad779
139557c
012bd7a
 
 
 
 
 
 
 
 
 
 
 
19c5891
012bd7a
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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()