import streamlit as st import tensorflow as tf import cv2 import numpy as np from PIL import Image, ImageOps import imageio.v3 as iio #from io import BytesIO @st.cache_resource() def load_model(): model=tf.keras.models.load_model('./hip_impant_model.h5') return model with st.spinner('Model is being loaded..'): model=load_model() st.write(""" # Image Classification """ ) file = st.file_uploader("Upload an X-ray image", type= ['png', 'jpg']) # def model_prediction(image, model): # resize = tf.image.resize(image, (256,256)) # yhat = model.predict(np.expand_dims(resize/255, 0)) # if(yhat>0.5): # result = "Prediction is loose" # else: # result = "Prediction is control" # return result def model_prediction(image, model): item = cv2.resize(image,dsize=(256,256), interpolation=cv2.INTER_CUBIC) yhat = model.predict(np.expand_dims(item/255, 0)) if(yhat>0.5): result = "Prediction is loose" else: result = "Prediction is control" return result def on_click(): if file is None: st.text("Please upload an image file") else: image = Image.open(file) st.image(image, use_column_width=True) img = iio.imread(file) predictions = model_prediction(img, model) st.write(prediction) print( "This image most likely belongs to {}." .format(prediction) ) st.button('Predict', on_click=on_click)