Author: Rouibah Hanine
This project performs binary classification of chest X-ray images: Pneumonia vs Normal.
Two main approaches were developed:
- Direct training of a Convolutional Neural Network (CNN) on images
- Hand-crafted feature extraction (PHOG, Gabor, Fourier, DCT) using two strategies:
- Sequential processing
- Concatenated features
followed by classification with SGDClassifier (logistic loss)
- Sequential processing
Pneumonia Vs. Normal Classification/
├──Code/
├────── CNN.py # Train CNN directly
├────── Data_Augmentation.py # Script d'augmentation
├────── FeaturesExtraction_Sequentiel.py # Sequential Features Extraction
├────── FeaturesExtraction_Concatenated.py # Concatenated Features Extraction
├────── Train_Sequentiel_Features.py # Train with Sequential Features
├────── Train_Concatenated_Features.py # Train with Concatenated Features
├──Data # Extarcted Features
├──Datasets
├──Models
├──UI #Interface of prediction
├──Report
In addition to the models, a user-friendly web interface was developed for real-time prediction.

- Select model: CNN or ML (Concatenated Features)
- Upload a chest X-ray image
- Instant result: Sick (Pneumonia) or Not Sick (Normal)
- Confidence percentage
- Automatically saves the uploaded image with prediction
-Flask
->py -m flask run --port 8000
-Training set: 3,200 Pneumonia + 708 Normal
-Validation set: 651 Pneumonia + 621 Normal
-Strong initial class imbalance → addressed with targeted data augmentation
-Augmentation rules:
-20% of Pneumonia images
-100% of Normal images
-Applied transformations: rotation ±15°, shift 5%, zoom 10%, horizontal flip
📄 Full Report (PDF)
This project is licensed under the MIT License - see the LICENSE file for details.