YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

🩺 Chest X-Ray Pneumonia Detection using Deep Learning

Python TensorFlow Keras Flask Streamlit OpenCV CNN VGG16


πŸ“Œ Project Overview

This project is an AI-powered Chest X-Ray Pneumonia Detection System that automatically classifies chest X-ray images into:

  • βœ… NORMAL
  • 🦠 PNEUMONIA

The project demonstrates multiple Deep Learning approaches and compares their performance using:

  • Custom CNN (10 Epochs)
  • Improved CNN (20 Epochs)
  • Transfer Learning (VGG16)

The trained models are deployed using Flask, while the frontend is developed using Streamlit, creating a complete end-to-end AI medical imaging application.


πŸš€ Features

βœ” Binary Classification

βœ” Three Deep Learning Models

βœ” Custom CNN Architecture

βœ” Improved CNN Architecture

βœ” Transfer Learning using VGG16

βœ” Real-time Image Prediction

βœ” Flask REST Backend

βœ” Streamlit Interactive UI

βœ” Hugging Face Model Hosting

βœ” GPU Training Support

βœ” Model Comparison

βœ” Confidence Score Prediction

βœ” Production Ready


🧠 Problem Statement

Pneumonia is one of the leading causes of death worldwide.

Radiologists inspect Chest X-rays manually which is:

  • Time Consuming
  • Error Prone
  • Expensive

This project automates the diagnosis process using Deep Learning.


πŸ“‚ Dataset

Chest X-Ray Dataset

Dataset
β”‚
β”œβ”€β”€ train
β”‚      β”œβ”€β”€ NORMAL
β”‚      └── PNEUMONIA
β”‚
β”œβ”€β”€ validation
β”‚      β”œβ”€β”€ NORMAL
β”‚      └── PNEUMONIA
β”‚
└── test
       β”œβ”€β”€ NORMAL
       └── PNEUMONIA

Image Format

  • JPG
  • JPEG
  • PNG

Classes

Label Description
NORMAL Healthy Lung
PNEUMONIA Infected Lung

βš™οΈ Tech Stack

Programming

  • Python

Deep Learning

  • TensorFlow
  • Keras

Computer Vision

  • OpenCV
  • NumPy
  • Matplotlib

Backend

  • Flask

Frontend

  • Streamlit

Deployment

  • Hugging Face
  • Render

Version Control

  • Git
  • GitHub

πŸ— Complete Project Architecture

                   Chest X-Ray Image
                           β”‚
                           β–Ό
                  Upload Image (UI)
                           β”‚
                           β–Ό
                Streamlit Frontend
                           β”‚
                           β–Ό
                 Flask REST API
                           β”‚
                           β–Ό
                 Image Preprocessing
                           β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                  β”‚                   β”‚
        β–Ό                  β–Ό                   β–Ό
    CNN Model          CNN 20 Model       VGG16 Model
        β”‚                  β”‚                   β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                           β–Ό
                 Prediction Probability
                           β”‚
                           β–Ό
             NORMAL / PNEUMONIA Result
                           β”‚
                           β–Ό
                  Display Prediction

πŸ“Š End-to-End Workflow

Dataset
    β”‚
    β–Ό
Image Loading
    β”‚
    β–Ό
Image Preprocessing
    β”‚
    β–Ό
Resize Images (100x100)
    β”‚
    β–Ό
Convert to Array
    β”‚
    β–Ό
Normalize Images
    β”‚
    β–Ό
Train / Validation Split
    β”‚
    β–Ό
Model Training
    β”‚
    β–Ό
Model Evaluation
    β”‚
    β–Ό
Save Best Model
    β”‚
    β–Ό
Deploy Model
    β”‚
    β–Ό
User Upload Image
    β”‚
    β–Ό
Prediction

🧹 Image Preprocessing Pipeline

Each X-Ray undergoes the following preprocessing steps:

Step 1

Load Image

↓

Step 2

Convert to Grayscale (CNN Models)

↓

Step 3

Convert to RGB (VGG16)

↓

Step 4

Resize

100 Γ— 100

↓

Step 5

Convert to NumPy Array

↓

Step 6

Normalize Pixel Values

0 β†’ 255

↓

0 β†’ 1

↓

Step 7

Feed into Model


πŸ€– Model 1

Custom CNN (10 Epochs)

Architecture

Input (100Γ—100Γ—1)

↓

Conv2D (64)

↓

MaxPooling

↓

Dropout

↓

Conv2D (128)

↓

MaxPooling

↓

Dropout

↓

Conv2D (256)

↓

MaxPooling

↓

Dropout

↓

Flatten

↓

Dense (64)

↓

Dropout

↓

Dense (1)

↓

Sigmoid

Loss

Binary Crossentropy

Optimizer

Adam

Epochs

10

πŸ€– Model 2

Improved CNN (20 Epochs)

Architecture

Input

↓

Conv2D (64)

↓

ReLU

↓

MaxPooling

↓

Dropout

↓

Conv2D (128)

↓

ReLU

↓

MaxPooling

↓

Dropout

↓

Conv2D (256)

↓

ReLU

↓

MaxPooling

↓

Dropout

↓

Flatten

↓

Dense (64)

↓

Dropout

↓

Dense (1)

↓

Sigmoid

Epochs

20

Optimizer

Adam

Loss

Binary Crossentropy

πŸ€– Model 3

Transfer Learning (VGG16)

Pretrained

ImageNet

Frozen Layers

All VGG16 Convolution Layers

Custom Head

Flatten

↓

Dense (256)

↓

Dense (128)

↓

Dense (64)

↓

Dense (1)

↓

Sigmoid

Callbacks

  • ModelCheckpoint
  • EarlyStopping

🧠 Why VGG16?

Instead of training from scratch,

VGG16 already knows how to detect

  • Edges
  • Shapes
  • Textures
  • Patterns

Only the classifier is trained on Chest X-rays.

This greatly improves performance while reducing training time.


πŸ“ Saved Models

model_xray.h5

Custom CNN


model_pre.h5

Improved CNN


best_model.keras

Best Transfer Learning Model


πŸ“ˆ Training Strategy

  • GPU Training
  • Batch Size = 4 (CNN)
  • Batch Size = 32 (VGG16)
  • Validation Dataset
  • Binary Crossentropy
  • Adam Optimizer
  • Early Stopping
  • Model Checkpoint

πŸ“Š Prediction Pipeline

Upload Image

↓

Read Image

↓

Resize

↓

Preprocess

↓

Load Model

↓

Predict Probability

↓

Threshold = 0.5

↓

NORMAL

or

PNEUMONIA

🌐 Deployment Architecture

                 User
                  β”‚
                  β–Ό
          Streamlit Frontend
                  β”‚
                  β–Ό
            Flask Backend
                  β”‚
                  β–Ό
         Load Selected Model
                  β”‚
      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
      β–Ό           β–Ό            β–Ό
   CNN10       CNN20       VGG16
      β”‚           β”‚            β”‚
      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β–Ό
          Prediction Engine
                  β”‚
                  β–Ό
          Display Result

πŸ“‚ Project Structure

Chest-XRay-Pneumonia-Detection
β”‚
β”œβ”€β”€ app.py
β”œβ”€β”€ config.py
β”œβ”€β”€ predictor.py
β”œβ”€β”€ utils.py
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ README.md
β”‚
β”œβ”€β”€ models
β”‚     β”œβ”€β”€ model_xray.h5
β”‚     β”œβ”€β”€ model_pre.h5
β”‚     └── best_model.keras
β”‚
β”œβ”€β”€ static
β”‚
β”œβ”€β”€ templates
β”‚
β”œβ”€β”€ css
β”‚
β”œβ”€β”€ dataset
β”‚
└── screenshots

▢️ Installation

Clone Repository

git clone https://github.com/yourusername/Chest-XRay-Pneumonia-Detection.git

Install Dependencies

pip install -r requirements.txt

Run Flask

python app.py

Run Streamlit

streamlit run app.py

πŸ–₯ Example Prediction

Input

Chest X-Ray Image

↓

Model Prediction

Probability : 0.9821

Prediction :

🦠 PNEUMONIA

πŸ“ˆ Future Improvements

  • EfficientNet
  • ResNet50
  • DenseNet121
  • Grad-CAM Heatmaps
  • Multi-Class Disease Detection
  • DICOM Support
  • Cloud Deployment
  • Docker
  • CI/CD Pipeline
  • REST API Authentication

πŸ‘¨β€πŸ’» Author

Sudheer Muthyala

B.Tech – Electronics and Communication Engineering

Machine Learning | Deep Learning | Computer Vision | Python | Flask | Streamlit

GitHub: https://github.com/M-Sudheer18


⭐ If you found this project helpful

Please consider giving this repository a ⭐ on GitHub. It motivates future improvements and helps others discover the project.

Downloads last month
61
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support