# 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 # Function to determine if an image contains pneumonia # Checks if the filename contains 'virus' or 'bacteria' def is_pneumonia(x): return (x.find('virus')!=-1 or x.find('bacteria')!=-1) # Load the trained fastai model for predictions learn = load_learner('pneumonia_model.pkl') # Define the possible categories for prediction categories = ('Pneumonia', 'Normal') # 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 fast.ai. The dataset is from: Chest X-Ray Images (Pneumonia) and the associated scientific journal paper is Identifying Medical Diagnoses and Treatable Diseases by Image-Based Deep Learning. The accuracy of the model is: 87.50% """ # Article or additional information to be displayed article = """

Pediatric Pneumonia Chest X-Ray Predictor. Dr Zakia Salod. 2024.

""" # 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 = [ ['NORMAL2-IM-0222-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)