Détection de la Rétinopathie Diabétique avec EfficientNet

📅 November 2024 📂 Medical ai
Détection de la Rétinopathie Diabétique avec EfficientNet
Medical AI EfficientNet Deep Learning Computer Vision Healthcare Classification Transfer Learning

🎯 Project Overview

Système de Deep Learning pour la détection et classification automatique de la rétinopathie diabétique à partir d’images de rétine. Le modèle utilise EfficientNetB0 pour classer les images en 5 stades de gravité, permettant une détection précoce et un suivi automatisé de la maladie.

Équipe:

  • Abdelrhafour EL MOUSSAOUI
  • Mouad AOUTIR
  • El Mehdi HICHAM
  • Mohammed Imrane GRICH

Supervisé par: Pr. Souad EDDAROUICH

Key Achievement: 97% de précision sur l’ensemble de validation avec un modèle léger et efficace.


🔍 Problem Statement

Medical Context

La rétinopathie diabétique est l’une des complications les plus fréquentes du diabète et constitue une cause majeure de cécité dans le monde. La détection précoce est essentielle pour limiter les risques de perte de vision.

Challenges

  • 🏥 Diagnostic manuel: Lent et subjectif, nécessite des ophtalmologistes experts
  • 📈 Volume croissant: Augmentation des cas de diabète dans le monde
  • 🎯 Subtilité des signes: Difficile de détecter les stades précoces
  • 💰 Coût élevé: Examens réguliers coûteux et chronophages
  • 🌍 Accès limité: Manque de spécialistes dans zones rurales

Solution

Modèle de Deep Learning basé sur EfficientNetB0 pour:

  • Classification automatique en 5 stades
  • Détection précoce et objective
  • Suivi automatisé de l’évolution
  • Accessibilité améliorée au diagnostic

🏗️ Dataset: APTOS 2019

Description

Source: Kaggle Competition - APTOS 2019 Blindness Detection
Volume: 3,662 images de rétine haute résolution
Annotation: Ophtalmologistes experts

Classes (5 Stades)

Classe Label Description Distribution
No_DR (0) Absence Rétine normale, aucune anomalie ~45%
Mild (1) Légère Microanévrysmes, hémorragies légères ~15%
Moderate (2) Modérée Anomalies vasculaires évidentes ~20%
Severe (3) Grave Hémorragies abondantes, œdème ~12%
Proliferate_DR (4) Proliférative Néovascularisation, risque de cécité ~8%
![Class Distribution](/assets/img/projects/retinopathy_classes.png) **Distribution des classes dans APTOS 2019**

🔧 Preprocessing Pipeline

Image Processing

Étape 1: Filtrage Gaussien

  • Réduction du bruit visuel
  • Préservation des caractéristiques essentielles
  • Amélioration de la qualité

Étape 2: Redimensionnement

target_size = (224, 224)  # EfficientNetB0 input

Étape 3: Normalisation

pixels_normalized = pixels / 255.0  # [0, 1]

Data Augmentation

Technique Paramètres Objectif
Zoom ±20% Variabilité de prise de vue
Shift Horizontal ±20% Déplacements de position
Shift Vertical ±20% Variations d’orientation
Rotation ±15° Robustesse aux rotations

Configuration:

datagen = ImageDataGenerator(
    rescale=1./255,
    zoom_range=0.2,
    width_shift_range=0.2,
    height_shift_range=0.2,
    validation_split=0.2
)

🏗️ Model Architecture

EfficientNetB0

![EfficientNet Architecture](/assets/img/projects/efficientnet_arch.png) **Architecture EfficientNetB0 avec classification personnalisée**

Pourquoi EfficientNet?

Critère EfficientNetB0 ResNet-50 VGG-16
Paramètres 5.3M ✅ 25M 138M
Accuracy 97% ✅ 95% 94%
Vitesse Rapide ✅ Moyen Lent
Mémoire Faible ✅ Moyenne Élevée

Avantages:

  • Compound Scaling: Optimisation équilibrée (depth/width/resolution)
  • Efficacité: Moins de paramètres, mêmes performances
  • Pré-entraînement: ImageNet (transfer learning)
  • Rapidité: Inférence temps-réel possible

Custom Classification Head

model = tf.keras.Sequential([
    # Backbone pré-entraîné
    EfficientNetB0(
        input_shape=(224, 224, 3),
        weights='imagenet',
        include_top=False
    ),
    
    # Classification head personnalisée
    Flatten(),
    Dense(5, activation='softmax')  # 5 classes
])

Training Configuration

model.compile(
    optimizer='Adam',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

Hyperparamètres:

  • Learning Rate: 0.001
  • Batch Size: 32
  • Epochs: 40
  • Optimizer: Adam
  • Loss: Categorical Crossentropy

🚀 Training Process

Training Strategy

Ressources:

  • GPU: NVIDIA GeForce RTX 4060 (8GB VRAM)
  • Durée: ~2 heures pour 40 epochs
  • Dataset Split: 80% train / 20% validation

Monitoring:

  • Loss et Accuracy à chaque epoch
  • Validation régulière pour éviter overfitting
  • Early stopping (patience: 10 epochs)

Training Curves

![Training History](/assets/img/projects/retinopathy_training.png) **Évolution de Loss et Accuracy pendant l'entraînement**

📊 Results & Performance

Quantitative Results

Métrique Training Validation
Accuracy 98.5% 97.0%
Loss 0.045 0.089
Precision 97.8% 96.5%
Recall 98.2% 96.8%

Per-Class Performance

Classe Precision Recall F1-Score Support
No_DR 0.99 0.98 0.99 330
Mild 0.94 0.92 0.93 110
Moderate 0.96 0.95 0.96 146
Severe 0.93 0.94 0.94 88
Proliferate_DR 0.98 0.97 0.98 58

Confusion Matrix

            Predicted
            0    1    2    3    4
Actual  0 [323   4    2    1    0]
        1 [  5 101    3    1    0]
        2 [  2   4  139    1    0]
        3 [  1   2    2   83    0]
        4 [  0   1    0    1   56]

🛠️ Challenges & Solutions

Challenge 1: Déséquilibre de Classes

Problème: Classes sous-représentées (Proliferate_DR: 8%)
Solution:

  • Weighted loss function
  • Aggressive data augmentation pour classes minoritaires
  • SMOTE (Synthetic Minority Over-sampling)

Challenge 2: Overfitting

Problème: Écart entre training (98.5%) et validation (97%)
Solution:

  • Dropout layers (p=0.3)
  • Data augmentation intensive
  • Early stopping
  • Régularisation L2

Challenge 3: Qualité Variable des Images

Problème: Variations d’éclairage, résolution, bruit
Solution:

  • Filtrage gaussien préalable
  • Normalisation systématique
  • Augmentation simulant variations réelles

💼 Impact & Value

For Healthcare

Détection précoce automatisée (stade Mild/Moderate)
Accessibilité améliorée aux zones sans spécialistes
Réduction des coûts de diagnostic (60-70%)
Suivi automatisé de l’évolution des patients

Clinical Benefits

Aide à la décision pour ophtalmologistes
Priorisation des cas urgents (Severe/Proliferate)
Objectivité du diagnostic (élimination biais humain)
Scalabilité pour screening de masse


🔮 Future Improvements

Short-Term:

  • Fine-tuning sur EfficientNetB3/B7 (>98% accuracy)
  • Explainability (Grad-CAM pour localisation lésions)
  • API REST pour intégration hospitalière

Long-Term:

  • Détection multi-maladies (DMLA, glaucome)
  • Application mobile pour screening terrain
  • Federated Learning pour respect vie privée
  • Intégration dossiers médicaux électroniques

🛠️ Technical Stack

Deep Learning: TensorFlow 2.0, Keras
Computer Vision: OpenCV, PIL
Data Processing: NumPy, Pandas
Visualization: Matplotlib, Seaborn
Hardware: NVIDIA RTX 4060 (8GB VRAM)
Dataset: APTOS 2019 (Kaggle)


🎓 Skills Developed

  • Medical AI: Classification de pathologies oculaires
  • Transfer Learning: Fine-tuning EfficientNet
  • Data Augmentation: Techniques avancées pour medical imaging
  • Model Optimization: Hyperparameter tuning, regularization
  • Clinical Understanding: Interprétation de rétinographies

📚 Key References

  1. EfficientNet (Tan & Le, 2019) - ICML
  2. APTOS 2019 - Kaggle Blindness Detection
  3. Diabetic Retinopathy Detection (Gulshan et al., 2016) - JAMA
  4. Deep Learning for Medical Imaging (Esteva et al., 2017) - Nature

📧 Contact

Team Members:

  • El Mehdi Hicham - mehdihicham736@gmail.com
  • Mohammed Imrane GRICH
  • Abdelrhafour EL MOUSSAOUI
  • Mouad AOUTIR

Supervisor: Pr. Souad EDDAROUICH
Institution: Faculté des Sciences, Ibn Tofail University

LinkedIn: linkedin.com/in/elmehdihicham
GitHub: github.com/MehdiHCH


🏆 Achievements

97% Accuracy sur validation set
Modèle léger (5.3M paramètres)
Temps d’inférence < 100ms par image
Robuste aux variations d’acquisition
Déployable sur infrastructure modeste


Système de détection précoce de la rétinopathie diabétique alliant précision médicale et efficacité computationnelle pour un accès démocratisé au diagnostic ophtalmologique.