Skip to content

Repository files navigation

Détection de Pneumonie par Deep Learning

Classification d'images radiographiques thoraciques (pneumonie / normal) par réseau de neurones convolutif, implémenté en PyTorch.

Projet académique, module Deep Learning.

Données

Dataset Chest X-Ray Images (Pneumonia), disponible publiquement sur Kaggle : https://www.kaggle.com/datasets/paultimothymooney/chest-xray-pneumonia

Le dataset n'est pas versionné dans ce dépôt. Après téléchargement, le placer ainsi :

archive/chest_xray/
├── train/
│   ├── NORMAL/
│   └── PNEUMONIA/
├── val/
└── test/

Structure

DEEPLEARNING/
├── pneumonia-pytorch-LOCAL.ipynb   # Notebook principal : entraînement et évaluation
├── pneumonia_detector_3.py         # Script d'inférence
├── generate_html.py                # Génération du rapport HTML
├── rapport_dl.html                 # Rapport
└── Pneumonia_Detection.pptx        # Présentation

Utilisation

python -m venv venv
venv\Scripts\activate
pip install torch torchvision pandas matplotlib scikit-learn

Puis exécuter pneumonia-pytorch-LOCAL.ipynb.

Architecture

CNN de type VGG, 8 couches convolutives (3×3, padding 1) organisées en blocs 64 → 128 → 256 → 512 canaux, séparés par des MaxPool2d(2,2).

Paramètre Valeur
Époques 15
Batch size 16 (train), 8 (validation / test)

Résultats

Jeu Accuracy Loss
Entraînement (époque 15) 98,18 % 0,0502
Test (624 images) 87,50 % 0,6550

Baseline classe majoritaire : 62,50 % : le jeu de test contient 390 images PNEUMONIA pour 234 NORMAL ; un modèle répondant systématiquement « pneumonie » atteindrait 62,5 %. Le modèle apporte donc un gain réel de 25 points, mais l'accuracy seule reste insuffisante pour juger un classifieur médical déséquilibré.

Limites méthodologiques

Ces résultats sont à lire avec trois réserves, assumées explicitement :

  • Le jeu de validation ne contient que 16 images (8 NORMAL / 8 PNEUMONIA), limite connue du dataset Kaggle. L'accuracy de validation ne peut varier que par pas de 1/16, et reste figée à 0,875 de l'époque 9 à l'époque 15. Toute sélection de modèle fondée sur ce signal est peu fiable.
  • Écart entraînement/test de ~11 points (98,2 % contre 87,5 %) : surapprentissage net, non corrigé ici.
  • Accuracy seule : en classification médicale déséquilibrée, le rappel sur la classe PNEUMONIA (patients malades manqués) et la précision sur NORMAL sont les métriques décisives. Matrice de confusion, précision, rappel et F1 restent à calculer.

Répartition du dataset

Split NORMAL PNEUMONIA Total
train 1 341 3 875 5 216
val 8 8 16
test 234 390 624

Notes

Les poids entraînés (Pneumonia_model.pt, 1.5 GB) ne sont pas versionnés, ils dépassent la limite de 100 MB par fichier de GitHub. Le modèle se régénère en exécutant le notebook.

Auteur

Amjad AAYD

About

Pneumonia detection on chest X-rays with a VGG-style CNN in PyTorch, 87.5% on 624 test images

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages