papsmear_main / app.py
onlyshrey98's picture
Update app.py
8a11042 verified
import gradio as gr
import tensorflow as tf
import numpy as np
from PIL import Image
# Load your Pap Smear model
model = tf.keras.models.load_model("papsmear-test_model.h5")
# Optimal threshold
THRESHOLD = 0.5
# Preprocessing function
def preprocess_image(img):
img = img.resize((224, 224)) # adjust if your model uses a different size
img = np.array(img) / 255.0
img = np.expand_dims(img, axis=0)
return img
# Prediction function
def classify_image(image):
processed = preprocess_image(image)
prediction = model.predict(processed)[0][0]
if prediction > THRESHOLD:
label = "🩸 Positive (Possible Abnormality Detected)"
confidence = prediction
else:
label = "✅ Negative (Normal Pap Smear)"
confidence = 1 - prediction
return {label: float(confidence)}
# Gradio Interface
demo = gr.Interface(
fn=classify_image,
inputs=gr.Image(type="pil", label="Upload Pap Smear Image"),
outputs=gr.Label(num_top_classes=1, label="Classification Result"),
title="Pap Smear Test Analyzer 🧫",
description="Upload a Pap smear image to classify whether it is Normal (Negative) or Abnormal (Positive).",
)
if __name__ == "__main__":
demo.launch()