Spaces:
Sleeping
Sleeping
import cv2 | |
import numpy as np | |
import tensorflow as tf | |
from PIL import Image | |
import gradio as gr | |
# Load the trained model | |
model = tf.keras.models.load_model("pneumonia_detection.h5") | |
# Define the prediction function | |
def predict_xray(image): | |
# Convert PIL image to OpenCV format (numpy array) | |
image = np.array(image) | |
# Resize image to 150x150 (as per your training) | |
image = cv2.resize(image, (150, 150)) | |
# Reshape and normalize | |
image = image.reshape(1, 150, 150, 3) / 255.0 # Normalization (if used in training) | |
# Make prediction | |
prediction = model.predict(image)[0] # Get probabilities for both classes | |
# Class labels | |
labels = ["The Patient is Normal.", "The Patient has Pneumonia."] | |
# Get predicted class and confidence scores | |
predicted_class = np.argmax(prediction) # Class with highest probability | |
confidence = prediction[predicted_class] * 100 # Convert to percentage | |
return f"{labels[predicted_class]} ({confidence:.2f}% confidence)" | |
# Create Gradio UI | |
iface = gr.Interface( | |
fn=predict_xray, | |
inputs=gr.Image(type="pil"), # Accepts image input | |
outputs="text", # Returns class label with confidence | |
title="Pneumonia Detection", | |
description="Upload a chest X-ray image, and the model will predict if the patient has pneumonia or is normal, along with confidence scores." | |
) | |
# Launch the app | |
iface.launch() | |