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)