EASUSCML's picture
Update app.py
cb9f8e0 verified
import gradio as gr
from tensorflow.keras.models import load_model
import numpy as np
from PIL import Image
model = load_model('xray_image_classifier_model.keras')
def predict(image):
img = image.resize((150, 150))
img_array = np.array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)
prediction = model.predict(img_array)
predicted_class = 'Pneumonia' if prediction > 0.5 else 'Normal'
return predicted_class
css = """
.gradio-container {
background-color: #f5f5f5;
font-family: Arial, sans-serif;
}
.gr-button {
background-color:#007bff;
color: blue;
border: none; /* Remove default border */
border-radius: 5px; /* Rounded corners */
font-size: 16px; /* Adjust font size */
padding: 10px 20px; /* Add padding for a larger clickable area */
cursor: pointer; /* Change cursor to pointer to indicate it's clickable */
transition: background-color 0.3s ease; /* Smooth hover transition */
}
.gr-button:hover {
background-color: #0056b3; /* Darker blue on hover */
}
.gr-textbox, .gr-image {
border: 2px dashed #007bff;
padding: 20px;
border-radius: 10px;
background-color: #ffffff;
}
.gr-box-text {
color: #007bff;
font-size: 22px;
font-weight: bold;
text-align: center;
}
h1 {
font-size: 36px;
color: #007bff;
text-align: center;
}
p {
font-size: 20px;
color: #333;
text-align: center;
}
"""
description = """
**Automated Pneumonia Detection via Chest X-ray Classification**
This model leverages deep learning techniques to classify chest X-ray images as either 'Pneumonia' or 'Normal.' By utilizing the InceptionV3 architecture for transfer learning, combined with data preprocessing and augmentation, the model aims to deliver powerful performance in medical image analysis. It enhances the automation of diagnostic processes, aiding in the detection of pneumonia with high accuracy.
**Technologies Employed:**
- TensorFlow & Keras for model development
- InceptionV3 for transfer learning
- Numpy, Pandas, and Matplotlib for data handling and visualization
- Flask and Gradio for deployment and user interaction
"""
examples = [
["samples/normal_xray1.png"],
["samples/pneumonia_xray1.png"],
]
with gr.Blocks(css=css) as interface:
gr.Markdown("<h1>Automated Pneumonia Detection via Chest X-ray Classification</h1>")
gr.Markdown("<p>Submit a chest X-ray image below.</p>")
with gr.Row():
image_input = gr.Image(label="Drop Image Here", type="pil", elem_classes=["gr-image", "gr-box-text"])
output = gr.Textbox(label="Model Analysis Output", elem_classes=["gr-textbox", "gr-box-text"])
submit_btn = gr.Button("Initiate Diagnostic Analysis", elem_classes=["gr-button"])
submit_btn.click(fn=predict, inputs=image_input, outputs=output)
gr.Markdown(
'<div style="background-color: yellow; padding: 10px; border-radius: 5px; font-weight: bold;">'
'Sample Images: To test the model, select one of the sample images provided below. '
'Click on an image and then press the "Initiate Diagnostic Analysis" button to receive the results.'
'</div>'
)
gr.Examples(examples=examples, inputs=image_input)
gr.Markdown(description)
interface.launch()