ScanSmartAI / app.py
devfire's picture
Update app.py
6a704db verified
import gradio as gr
from tensorflow.keras.models import load_model
import numpy as np
from PIL import Image
# Load model
model = load_model('xray_image_classifier_model.keras')
# Define solutions
solutions = {
"Pneumonia": "Consult a doctor immediately. Follow prescribed antibiotics if given, rest well, and stay hydrated.",
"Normal": "Your X-ray appears normal. However, if you experience symptoms, consult a doctor for further evaluation."
}
# Prediction function
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"
# Get the corresponding solution
solution = solutions.get(predicted_class, "No specific advice available.")
return predicted_class, solution
# CSS Styling
css = """
.gradio-container {
background-color: #f5f5f5;
font-family: Arial, sans-serif;
}
.gr-button {
background-color:#007bff;
color: white;
border: none;
border-radius: 5px;
font-size: 16px;
padding: 10px 20px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.gr-button:hover {
background-color: #0056b3;
}
.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
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
"""
# Gradio UI
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_prediction = gr.Textbox(label="Model Analysis Output", elem_classes=["gr-textbox", "gr-box-text"])
output_solution = gr.Textbox(label="Recommended Solution", 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_prediction, output_solution])
gr.Markdown(description)
# Launch the app
interface.launch()