import os import streamlit as st import numpy as np import PIL.Image #from PIL import Image from fastai.vision.all import * import pathlib import matplotlib.pyplot as pt plt = platform.system() if plt == 'Windows': pathlib.PosixPath = pathlib.WindowsPath model = load_learner('ksl_model.pkl') def predict(image_path): # load the image and convert into # numpy array #image= Image.open(image) # image = Image.open(image) # PIL images into NumPy arrays pred_label= model.predict(image_path) return pred_label # def show_likelihood(pred_label): # class_probs = pred_label[9].numpy() # classes = pred_label[9] # class_labels = [classes[i] for i in range(len(class_probs))] # fig = pt.figure(figsize=(10, 10)) # pt.barh(class_labels, class_probs) # pt.ylabel("Class") # pt.xlabel("Probability") # pt.title("Class Probabilities") # pt.xlim(0, 1) # pt.ylim(-1, len(class_probs)) # st.pyplot(fig) def main(): # Add an image to your app image = "ksl1.jpg" st.image(image) st.write("# KSL Image Classification App") st.write("This app allows you to upload a KSL image and have it classified by a pre-trained machine learning model into one of 9 classes.") uploaded_file = st.file_uploader("Upload an image", type=["jpg", "png", "jpeg"]) if uploaded_file is not None: image = PIL.Image.open(uploaded_file) image_path = os.path.join("tempDir",uploaded_file.name) with open(image_path, "wb") as f: f.write(uploaded_file.getbuffer()) st.image(image, caption="Uploaded Image", use_column_width=True) pred_label = predict(image_path) st.write("The image was classified as:", pred_label[0]) # show_likelihood(pred_label) if __name__ == '__main__': main()