Spaces:
Build error
Build error
| import streamlit as st | |
| import PIL.Image as Image | |
| import numpy as np | |
| import pandas as pd | |
| import requests | |
| from io import BytesIO | |
| from fastai.vision.all import load_learner | |
| # Initialize Streamlit app | |
| st.title("White Blood Cell Classifier") | |
| # Add a description or subtitle | |
| st.markdown(""" | |
| This app allows you to classify white blood cells from an uploaded image. | |
| You can upload an image of a blood sample, and the app will predict the type of white blood cell present. | |
| Choose from various cell types like eosinophil, lymphocyte, monocyte, and neutrophil. | |
| Note: To get the best results, please make sure there is only one WBC in the image. This model has not been trained on basophils. | |
| """) | |
| # Load the FastAI model for WBC identification | |
| fastai_model = load_learner('model1.pkl') | |
| # File uploader for image input | |
| uploaded_file = st.file_uploader("Upload an image for classification", type=["jpg", "png"]) | |
| if uploaded_file: | |
| # Open the uploaded image | |
| image = Image.open(uploaded_file).convert('RGB') | |
| # Display the uploaded image with a caption | |
| st.image(image, caption="Reduced Size Image", use_column_width=False, width=150) # 150 pixels wide | |
| # Perform inference with the FastAI model | |
| pred, idx, probs = fastai_model.predict(image) | |
| # Display a title for the results section | |
| st.subheader("White Blood Cell Classification Results") | |
| # Define categories for classification | |
| categories = ('EOSINOPHIL', 'LYMPHOCYTE', 'MONOCYTE', 'NEUTROPHIL') | |
| # Create a DataFrame with classification probabilities | |
| results_df = pd.DataFrame( | |
| {'Cell Type': categories, 'Probability': probs.tolist()} | |
| ) | |
| # Highlight the most likely class | |
| most_likely_class = categories[idx] | |
| st.success(f"Predicted Class: {most_likely_class}") | |
| # Additional information about the probabilities | |
| st.write("Detailed Classification Results:") | |
| st.table(results_df) | |
| # Display the probabilities as a bar chart | |
| st.bar_chart(results_df.set_index('Cell Type')) | |
| else: | |
| st.warning("Upload an image to start classification.") | |