import os import streamlit as st import tensorflow as tf from tensorflow import image from keras import models import numpy as np from PIL import Image import pandas as pd import logging import logger log = logging.getLogger(__name__) st.title("Rice Disease Classifier") log.info("Looking for Model...: ") versions = os.listdir("models") latest = os.listdir('models/'+ versions[-1]) log.info(f"models/{versions[-1]}/{latest[0]}") if latest: log.info(f"Model found : {latest}") else: versions = ['0.3'] latest = ['model.h5'] desc = pd.read_csv("files/description.csv") model = models.load_model(f"models/{versions[-1]}/{latest[0]}", compile=False) log.info("Compiling Model!") model.compile( optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'] ) log.info("Model Loaded Succesfully.") dis = list(desc.disease.values) def image_classifier(inp): inp = image.resize(inp, (256,256)) inp = np.expand_dims(inp,0) pred= model.predict(inp) return dis[np.argmax(pred)] , f"Confidence - {round(max(pred[0])*100,2)}%" def detail(pro): x = desc[desc["disease"]==pro] return list(x["hindi"])[0], list(x["desc"])[0], list(x["hndesc"])[0], list(x["pre"])[0], list(x["hnpre"])[0] cho = st.file_uploader("Upload Image From Gallery", type=['png','jpg','jpeg','webp']) if cho is not None: img = Image.open(cho) st.write("or") if st.button("Open Camera"): cam = st.camera_input("Take image") if cam is not None: img = Image.open(cam) if st.button("Detect"): col1,col2,col3 = st.columns(3) pro, conf = image_classifier(img) hin, des, hnd, pre, hnp = detail(pro) with col2: st.image(img) st.write("\n\n") st.header(pro) st.subheader(f"({hin})") st.subheader(conf) st.write("\n\n\n\n") st.subheader(f"Description :") st.write(des) st.write("\n\n") st.write(hnd) st.write("\n\n\n") st.subheader(f"Precautions :") st.write(pre) st.write("\n\n") st.write(hnp)