|
import streamlit as st |
|
import tensorflow as tf |
|
import cv2 |
|
import numpy as np |
|
from PIL import Image, ImageOps |
|
import imageio.v3 as iio |
|
|
|
@st.cache_resource() |
|
def load_model(): |
|
model=tf.keras.models.load_model('./hip_impant_model.h5') |
|
return model |
|
|
|
st.title(":blue[Nishant Guvvada's] :red[AI Journey] The Hip-Implant X-ray Assistant") |
|
image = Image.open('./title.jpg') |
|
st.image(image) |
|
st.write(""" |
|
# Image Classification |
|
""" |
|
) |
|
|
|
file = st.file_uploader("Upload an X-ray image", type= ['png', 'jpg']) |
|
|
|
def model_prediction(path): |
|
resize = tf.image.resize(path, (256,256)) |
|
with st.spinner('Model is being loaded..'): |
|
model=load_model() |
|
yhat = model.predict(np.expand_dims(resize/255, 0)) |
|
return yhat |
|
|
|
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) |
|
image = image.convert('RGB') |
|
predictions = model_prediction(np.array(image)) |
|
if (predictions>0.5): |
|
st.write("""# Prediction : Implant is loose""") |
|
else: |
|
st.write("""# Prediction : Implant is in control""") |
|
|
|
st.button('Predict', on_click=on_click) |