File size: 2,575 Bytes
4281c7b 373b23b 4281c7b a73316b 4281c7b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# Bismillahir Rahmaanir Raheem
# Almadadh Ya Gause Radi Allahu Ta'alah Anh - Ameen
# Import necessary libraries from fastai and gradio
from fastai.vision.all import *
import gradio as gr
# Load the trained fastai model for predictions
learn = load_learner('pneumonia_model.pkl')
# Define the possible categories for prediction
# Use the categories directly from the DataLoaders vocab
# categories: 'PNEUMONIA' or 'NORMAL'
categories = learn.dls.vocab
# Function to make a prediction on an input image
def predict(img):
pred, idx, probs = learn.predict(img) # Get the prediction, index, and probabilities
return dict(zip(categories, map(float, probs))) # Return the probabilities mapped to categories
# Title of the Gradio interface
title = "Pediatric Pneumonia Chest X-Ray Predictor"
# Description of the interface, including model and dataset information
description = """
A pediatric pneumonia chest x-ray predictor model trained on the chest-xray-pneumonia dataset using ResNet34 via
<a href='http://www.fast.ai/' target='_blank'>fast.ai</a>. The dataset is from:
<a href='http://www.kaggle.com/datasets/paultimothymooney/chest-xray-pneumonia' target='_blank'>Chest X-Ray Images (Pneumonia)</a>
and the associated scientific journal paper is
<a href='http://www.cell.com/cell/fulltext/S0092-8674(18)30154-5' target='_blank'>Identifying Medical Diagnoses and Treatable
Diseases by Image-Based Deep Learning</a>. The accuracy of the model is: 87.50%
"""
# Article or additional information to be displayed
article = """
<p style='text-align: center'><span style='font-size: 15pt;'>Pediatric Pneumonia Chest X-Ray Predictor. Dr Zakia Salod. 2024. </span></p>
"""
# Gradio input component for image upload
image = gr.Image(height=512, width=512)
# Gradio output component for displaying the label
label = gr.Label()
# Example images to demonstrate the model's predictions
examples = [
['IM-0001-0001.jpeg'],
['person159_bacteria_747.jpeg'],
['person1618_virus_2805.jpeg'],
]
# Create the Gradio interface
iface = gr.Interface(
fn=predict, # Function to call for predictions
title=title, # Title of the interface
description=description, # Description of the interface
article=article, # Additional article or information
inputs=image, # Input component
outputs=label, # Output component
theme="default", # Theme of the interface
examples=examples # Example images
)
# Launch the Gradio interface
iface.launch(inline=False)
|