Spaces:
Sleeping
Sleeping
import streamlit as st | |
import gdown | |
import tensorflow as tf | |
from PIL import Image | |
import numpy as np | |
from io import BytesIO | |
# Google Drive file ID | |
MODEL_URL = "https://drive.google.com/uc?id=1MUaUD7o7euJGWFHDbFo50LZSvP1wsk-y" | |
# Download model from Google Drive | |
def download_model(): | |
output = 'pharyngitis_model.h5' | |
gdown.download(MODEL_URL, output, quiet=False) | |
model = tf.keras.models.load_model(output) | |
return model | |
# Load model | |
model = download_model() | |
# Preprocessing function for the input image | |
def preprocess_image(image): | |
image = Image.open(image).convert('RGB') | |
image = image.resize((224, 224)) | |
image_array = np.array(image) / 255.0 # Normalize the image | |
image_array = np.expand_dims(image_array, axis=0) # Add batch dimension | |
return image_array | |
# Prediction function | |
def predict(image): | |
image_array = preprocess_image(image) | |
prediction = model.predict(image_array) | |
return prediction | |
# Streamlit UI setup | |
st.title("Pharyngitis Classifier") | |
st.write("Upload an image of the throat to check if pharyngitis is detected. Please note that this is not a substitute for professional medical advice. If you feel unwell, consult a doctor.") | |
# File uploader widget | |
uploaded_image = st.file_uploader("Upload Image", type=["jpg", "png", "jpeg"]) | |
if uploaded_image is not None: | |
# Display a loading animation | |
with st.spinner("Please wait... Classifying the image"): | |
prediction = predict(uploaded_image) | |
# Display result | |
if prediction[0] < 0.5: | |
st.success("No Pharyngitis Detected") | |
else: | |
st.error("Pharyngitis Detected") | |
# Show uploaded image | |
st.image(uploaded_image, caption="Uploaded Image", use_column_width=True) | |