Retour

Application d'imagerie médicale pour la fibrose pulmonaire

Application web d'intelligence artificielle pour le suivi de la fibrose pulmonaire, et segmentation 3D des poumons à partir de scanners

30 juin 2026
Application d'imagerie médicale pour la fibrose pulmonaire
PythonFastAPINext.jsDockerXGBoostSegmentation 3DDICOM

Introduction

Ce projet a été développé dans le cadre de la majeure IMAGE à l'EPITA et propose une solution d'intelligence artificielle pour accompagner les pneumologues dans le suivi de la fibrose pulmonaire, une maladie qui réduit progressivement la capacité respiratoire des patients.

Au lieu de faire des calculs manuels complexes, le médecin importe les scanners 3D de son patient sur la plateforme, et PulmoSight se charge de mesurer précisément le volume pulmonaire en 3D et d'estimer l'évolution de la capacité respiratoire sur un an grâce à des modèles prédictifs.

Le point de départ est un jeu de données médicales composé de scanners CT complets au format DICOM, où chaque patient est représenté par une série de coupes axiales des poumons :

Coupes axiales d'un scanner CT pulmonaire
Coupes axiales d'un scanner CT pulmonaire

Architecture logicielle

Pour transformer notre recherche algorithmique en un outil utilisable en clinique, nous avons mis en place une architecture logicielle basée sur des conteneurs Docker.

L'application est découpée en deux services distincts encapsulés dans des conteneurs Docker : un front-end dynamique en Next.js pour l'interface médecin, et un back-end en FastAPI (Python), afin de permettre au site de faire de gros calculs de reconstruction 3D.


Segmentation 3D des poumons

La première étape du traitement consiste à isoler les poumons du patient au milieu du scanner (qui contient aussi les os, le cœur ou la table d'examen).

Prétraitement des images

Avant toute analyse, les fichiers DICOM bruts sont convertis en unités Hounsfield (HU), une échelle standardisée qui exprime la densité des tissus (l'air étant à -1000 HU, l'eau à 0 HU). Un seuillage sur ces valeurs permet de ne garder que les zones correspondant à l'air pulmonaire :

Standardisation en unités Hounsfield : (1) Coupe brute ; (2) Seuillage sur HU
Standardisation en unités Hounsfield : (1) Coupe brute ; (2) Seuillage sur HU

Étapes de la segmentation

Notre programme applique ensuite une série d'opérations morphologiques pour extraire un masque 3D précis des poumons. L'image ci-dessous montre les 6 étapes successives du processus, de la coupe originale jusqu'au résultat final :

Étapes de la segmentation 3D : (1) Coupe originale ; (2) Frontière externe ; (3) Air brut ; (4) Poumons internes ; (5) Masque final ; (6) Résultat
Étapes de la segmentation 3D : (1) Coupe originale ; (2) Frontière externe ; (3) Air brut ; (4) Poumons internes ; (5) Masque final ; (6) Résultat

Ce masque permet d'extraire automatiquement deux indicateurs cruciaux : le volume pulmonaire total d'air et le pourcentage de tissus endommagés (fibrosés).


Prédiction de l'évolution respiratoire (Machine Learning)

Prédire la santé d'un patient nécessite non seulement de donner une tendance, mais aussi d'indiquer le niveau d'incertitude de cette prévision pour pouvoir guider un potentiel médecin en toute sécurité.

Nous avons entraîné un modèle de Machine Learning (XGBoost) qui croise les biomarqueurs extraits des scanners avec les données cliniques du patient (âge, historique, tabagisme). Notre modèle calcule des intervalles de confiance (à 80 % et 95 %) pour chaque semaine à venir :

Courbes prédictives de la FVC pour deux patients, avec intervalles de confiance à 80% et 95%
Courbes prédictives de la FVC pour deux patients, avec intervalles de confiance à 80% et 95%

Comparaison des modèles

Nous avons testé plusieurs algorithmes (XGBoost, Random Forest, SVR, Régression Linéaire, MLP) et mesuré deux métriques clés : l'erreur absolue moyenne (MAE) et la racine de l'erreur quadratique moyenne (RMSE). XGBoost s'est imposé comme le meilleur modèle, battant nettement la référence naïve :

Comparaison MAE et RMSE des différents modèles de Machine Learning
Comparaison MAE et RMSE des différents modèles de Machine Learning

Interface utilisateur

Tous ces calculs, bien que complexes, sont restitués de manière simple et intuitive sur un tableau de bord pensé pour les praticiens.

PulmoSight permet de centraliser le dossier du patient, et d'accéder facilement à la reconstruction 3D interactive des poumons (avec le volume exact en millilitres), à une jauge colorée indiquant la sévérité actuelle de la maladie (calculée selon les normes médicales GLI-2012), et à la courbe prédictive de la capacité respiratoire sur 52 semaines :

Vue d'ensemble de l'interface utilisateur de PulmoSight
Vue d'ensemble de l'interface utilisateur de PulmoSight

Score de maladie

Le score de maladie compare la capacité respiratoire prédite par notre modèle à la FVC optimale théorique (calculée depuis l'âge, la taille et le sexe du patient selon le standard GLI-2012). Une jauge graduée de 0 à 4 indique instantanément la sévérité :

Jauge du score de maladie GLI-2012 avec ratio de fibrose
Jauge du score de maladie GLI-2012 avec ratio de fibrose

Courbe prédictive

La courbe de prédiction affiche semaine par semaine la FVC estimée, accompagnée de son intervalle de confiance à 95 % et d'un seuil critique en rouge pour alerter le médecin :

Courbe prédictive de la FVC sur 24 semaines avec seuil critique
Courbe prédictive de la FVC sur 24 semaines avec seuil critique