|
|
--- |
|
|
title: Classification With Segmentation |
|
|
emoji: 🏢 |
|
|
colorFrom: red |
|
|
colorTo: red |
|
|
sdk: gradio |
|
|
sdk_version: 5.49.1 |
|
|
app_file: app.py |
|
|
pinned: false |
|
|
license: mit |
|
|
--- |
|
|
|
|
|
# Classification With Segmentation |
|
|
|
|
|
This project implements a complete chest X-ray analysis pipeline using: |
|
|
|
|
|
**lung segmentation using UNet (Unet.ipynb)** |
|
|
|
|
|
**Two binary EfficientNet-B3 classifiers (pneumonia classification.ipynb):** |
|
|
|
|
|
- Normal vs Bacterial Pneumonia |
|
|
- Normal vs Viral Pneumonia |
|
|
|
|
|
**Intelligent decision fusion** |
|
|
|
|
|
- If both classifiers fire, the model selects the dominant probability and returns a final diagnosis. |
|
|
|
|
|
--- |
|
|
## Dataset |
|
|
- For Unet [Lung Mask Image Dataset](https://www.kaggle.com/datasets/newra008/lung-mask-image-dataset) |
|
|
- For binary EfficientNet-B3 classifiers [Pneumonia Multi-Class Dataset ](https://www.kaggle.com/datasets/kmljts/pneumonia-multiclass) |
|
|
## Interactive Gradio Web App |
|
|
- check out the live web app click [here](https://huggingface.co/spaces/Clocksp/classification_with_segmentation) |
|
|
- For Models click [here](https://huggingface.co/spaces/Clocksp/classification_with_segmentation/tree/main) |
|
|
### Includes |
|
|
- Lung segmentation mask |
|
|
- Masked classifier input |
|
|
- Bacterial & viral probability scores |
|
|
- Final diagnosis |
|
|
- Segmentation overlay |
|
|
- Static Test Samples Table at the bottom |
|
|
|
|
|
--- |
|
|
## Features |
|
|
|
|
|
### 1. Lung Segmentation (UNet) |
|
|
The UNet model extracts lung regions from chest X-rays, removing background and irrelevant anatomical structures. |
|
|
|
|
|
### 2. Masked Image Classification |
|
|
Two EfficientNet-B3 classifiers operate only on segmented lung regions, leading to improved diagnostic accuracy. |
|
|
|
|
|
|
|
|
### 3. Dual-Model Decision Logic |
|
|
|
|
|
| Condition | Final Output | |
|
|
|------------------------------|--------------------------| |
|
|
| Both bacterial & viral probabilities are low | **NORMAL** | |
|
|
| Bacterial probability high only | **BACTERIAL PNEUMONIA** | |
|
|
| Viral probability high only | **VIRAL PNEUMONIA** | |
|
|
| Both probabilities high | Chooses the **higher** probability | |
|
|
|
|
|
### 4. Important Note on Viral vs Bacterial Overlap |
|
|
|
|
|
Chest X-ray images of viral and bacterial pneumonia often look very similar, with overlapping radiological patterns such as: |
|
|
|
|
|
- Diffuse opacities |
|
|
- Patchy consolidations |
|
|
- Similar lung distribution |
|
|
|
|
|
Because of this natural similarity, perfect separation between viral and bacterial pneumonia is not guaranteed, and classifiers may show overlapping confidence values. A fallback rule chooses the class with the higher probability when both are high. |
|
|
|
|
|
--- |
|
|
|
|
|
## Model Details |
|
|
|
|
|
### UNet |
|
|
- **Input:** 300 × 300 |
|
|
- **Output:** Lung segmentation mask |
|
|
- **Purpose:** Improves classifier performance by isolating lung regions and removing irrelevant anatomy. |
|
|
|
|
|
|
|
|
### EfficientNet-B3 Classifiers |
|
|
Two separate binary classifiers are used: |
|
|
|
|
|
- **Normal vs Bacterial** |
|
|
- **Normal vs Viral** |
|
|
|
|
|
This modular setup allows each pneumonia type to be diagnosed independently and increases robustness. |
|
|
|
|
|
--- |
|
|
|
|
|
## Performance Metrics |
|
|
|
|
|
### 1. UNet Lung Segmentation |
|
|
The segmentation model achieves high spatial accuracy, ensuring downstream classifiers receive clean, lung-focused inputs. |
|
|
|
|
|
| Metric | Score | |
|
|
|------------------------------|---------| |
|
|
| Accuracy | 0.9899 | |
|
|
| Precision | 0.9828 | |
|
|
| Recall | 0.9749 | |
|
|
| F1 Score | 0.9788 | |
|
|
| IoU (Intersection over Union) | 0.9585 | |
|
|
| Dice Coefficient | 0.9788 | |
|
|
|
|
|
|
|
|
### 2. Normal vs Bacterial Pneumonia Classifier (EfficientNet-B3) |
|
|
|
|
|
#### Class-wise Performance |
|
|
| Class | Precision | Recall | F1-Score | Support | |
|
|
|---------------|-----------|--------|----------|---------| |
|
|
| Normal (0) | 0.98 | 0.97 | 0.97 | 475 | |
|
|
| Bacterial (1) | 0.98 | 0.99 | 0.99 | 834 | |
|
|
|
|
|
#### Overall Metrics |
|
|
| Metric | Score | |
|
|
|---------------|-------| |
|
|
| Accuracy | 0.98 | |
|
|
| Macro Avg F1 | 0.98 | |
|
|
| Weighted Avg F1 | 0.98 | |
|
|
|
|
|
**Confusion Matrix:** |
|
|
|
|
|
<img src="Assests/c1.png"> |
|
|
|
|
|
**ROC Curve:** |
|
|
<img src="Assests/r1.png"> |
|
|
|
|
|
### 3. Normal vs Viral Pneumonia Classifier (EfficientNet-B3) |
|
|
|
|
|
#### Class-wise Performance |
|
|
| Class | Precision | Recall | F1-Score | Support | |
|
|
|---------------|-----------|--------|----------|---------| |
|
|
| Normal (0) | 0.99 | 0.99 | 0.99 | 475 | |
|
|
| Viral (1) | 0.99 | 0.99 | 0.99 | 448 | |
|
|
|
|
|
#### Overall Metrics |
|
|
| Metric | Score | |
|
|
|---------------|-------| |
|
|
| Accuracy | 0.99 | |
|
|
| Macro Avg F1 | 0.99 | |
|
|
| Weighted Avg F1 | 0.99 | |
|
|
|
|
|
**Confusion Matrix:** |
|
|
<img src="Assests/c2.png"> |
|
|
|
|
|
**ROC Curve:** |
|
|
<img src="Assests/r2.png"> |
|
|
|
|
|
--- |
|
|
## ⚠️ Important Interpretation Note |
|
|
|
|
|
Despite strong quantitative performance, viral and bacterial pneumonia can present with highly overlapping radiological features, making them difficult to distinguish purely from chest X-ray images — even for trained radiologists. |
|
|
|
|
|
**Therefore:** |
|
|
|
|
|
- Some misclassification between **Viral ↔ Bacterial** is expected. |
|
|
- The system applies a **fallback decision rule** when both probabilities are high. |
|
|
- Outputs should **not** be used for any form of clinical diagnosis or medical decision-making. |
|
|
|
|
|
--- |
|
|
|
|
|
## License |
|
|
MIT License |
|
|
|