NovooBasak
Update app.py
fed537f verified
import streamlit as st
from fastai.vision.all import *
from PIL import Image
# Load the model
learn = load_learner('model.pkl')
st.set_page_config(page_title="Breast Cancer Detector", layout="centered")
st.title("🩺 Breast Cancer Detection (MIAS ROI Dataset)")
st.write("Upload a mammogram ROI image to see if it's **cancerous** or **normal**.")
# Option to upload an image
uploaded_file = st.file_uploader("Upload an Image", type=["png", "jpg", "jpeg"])
# Select input source
img = None
if uploaded_file is not None:
img = Image.open(uploaded_file).convert('RGB')
if img is not None:
st.image(img, caption='Input Image', use_column_width=True)
# Convert to fastai's PILImage
img_fastai = PILImage.create(img)
# Prediction
pred_class, pred_idx, probs = learn.predict(img_fastai)
# Show results
st.subheader(f"Prediction: {pred_class.upper()}")
# Show both class probabilities
for cls, prob in zip(learn.dls.vocab, probs):
st.write(f"**{cls.capitalize()}**: {prob*100:.2f}% confidence")
st.markdown("---")
# Sample Images
st.subheader("Try with Sample Images:")
col1, col2 = st.columns(2)
with col1:
if st.button('Sample Normal'):
sample_path = 'normal_sample.png' # You must upload this in Hugging Face
img = Image.open(sample_path).convert('RGB')
st.image(img, caption="Normal Sample", use_column_width=True)
img_fastai = PILImage.create(img)
pred_class, pred_idx, probs = learn.predict(img_fastai)
st.subheader(f"Prediction: {pred_class.upper()}")
for cls, prob in zip(learn.dls.vocab, probs):
st.write(f"**{cls.capitalize()}**: {prob*100:.2f}% confidence")
with col2:
if st.button('Sample Cancer'):
sample_path = 'cancer_sample.png' # You must upload this too
img = Image.open(sample_path).convert('RGB')
st.image(img, caption="Cancer Sample", use_column_width=True)
img_fastai = PILImage.create(img)
pred_class, pred_idx, probs = learn.predict(img_fastai)
st.subheader(f"Prediction: {pred_class.upper()}")
for cls, prob in zip(learn.dls.vocab, probs):
st.write(f"**{cls.capitalize()}**: {prob*100:.2f}% confidence")
st.markdown("---")
st.write("Made by Novoo.")