- 🎯 Aperçu du Projet
- 🚀 Fonctionnalités
- 🛠 Architecture Technique
- 📊 Performance et Résultats
- 🔧 Installation et Utilisation
- 📁 Structure du Projet
- 🎓 Apprentissage et Découvertes
- 🔄 Évolution du Projet
- 🔮 Roadmap et Améliorations Futures
- 🤝 Contribution
- 📄 Licence
Développer un système de détection automatisée du paludisme par analyse d'images de frottis sanguins utilisant un réseau neuronal convolutif (CNN) implémenté avec le framework Rust Burn.
Le paludisme affecte 229 millions de personnes annuellement, causant 400,000 décès. Le diagnostic traditionnel par microscope est :
- ⏱️ Long (15-30 minutes par échantillon)
- 👨🔬 Dépendant de l'expertise du technicien
- 📉 Sujet à l'erreur humaine (fatigue, variation inter-opérateur)
Notre modèle CNN automatise la classification des cellules sanguines en :
- ✅ Parasitized (infectées par Plasmodium)
- ✅ Uninfected (saines)
Avec une précision de 85-92% et un temps d'analyse réduit à quelques secondes.
- Classification Binaire : Infection vs Non-infection
- Prétraitement Automatique : Redimensionnement, normalisation, augmentation de données
- Entraînement Distribué : Support multi-workers et cache optimisé
- Monitoring Temps Réel : Métriques de loss et accuracy en direct
- Sauvegarde Automatique : Checkpoints et modèle final
- Batch Normalization pour convergence accélérée
- Adaptive Pooling pour gestion des tailles d'image variables
- Weight Decay pour régularisation L2
- Dropout pour prévention du overfitting
- Learning Rate Adaptatif pour stabilité
Backend: Burn + NdArray (CPU/GPU)
Langage: Rust 2021 Edition
Traitement d'images: image-rs
Sérialisation: Serde
Parallélisme: Rayon (data loading)Input (80×80×3)
↓
Conv2D (24 filters) → BatchNorm → ReLU → MaxPool (2×2)
↓
Conv2D (48 filters) → BatchNorm → ReLU → MaxPool (2×2)
↓
Conv2D (96 filters) → BatchNorm → ReLU → MaxPool (2×2)
↓
AdaptiveAvgPool (4×4)
↓
Flatten → FC (192) → Dropout → ReLU → FC (64) → Output (2)
image_size: 80×80×3 # Compromis qualité/vitesse
batch_size: 64 # Optimisé CPU
learning_rate: 0.001 # Adam optimisé
epochs: 15 # Convergence garantie
dropout: 0.3 # Régularisation équilibrée| Métrique | Valeur Cible | Statut Actuel |
|---|---|---|
| Accuracy | 85-92% | ✅ Atteint |
| Training Time | 2-4 heures | ✅ Atteint |
| Inference Time | < 1s/image | ✅ Atteint |
| Modèle Size | < 50MB | ✅ Atteint |
| GPU Memory | < 2GB | ✅ Atteint |
| Version | Accuracy | Temps | Paramètres | Avantages |
|---|---|---|---|---|
| Originale | 90-95% | 4 jours | 1.2M | Meilleure précision |
| Équilibrée | 85-92% | 2-4h | 450K | Optimal qualité/vitesse |
| Ultra-Rapide | 80-85% | 30-60min | 150K | Démonstration rapide |
# Rust (stable)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Dépendances système (Ubuntu/Debian)
sudo apt install build-essential pkg-config libssl-dev# Cloner le repository
git clone https://github.com/username/malaria-detection-cnn
cd malaria-detection-cnn
# Construction en mode release
cargo build --release
# Préparation des données
mkdir -p data/{Parasitized,Uninfected}
# Placer les images dans les dossiers respectifsdata/
├── Parasitized/ # 13,779 images infectées
│ ├── cell_1.png
│ ├── cell_2.png
│ └── ...
└── Uninfected/ # 13,779 images saines
├── cell_1.png
├── cell_2.png
└── ...
# Mode équilibré (recommandé)
cargo run --release
# Mode debug (développement)
cargo run
# Tests unitaires
cargo test
# Benchmark
cargo benchBurn_malaria_model_2/
├── Cargo.toml # Configuration Rust
├── Cargo.lock # Verrouillage des dépendances
├── src/
│ ├── main.rs # Point d'entrée principal
│ ├── config/
│ │ └── model_config.rs # Configuration hyperparamètres
│ ├── model/
│ │ └── malaria_cnn.rs # Architecture CNN
│ ├── data/
│ │ └── dataset.rs # Dataset et batcher
│ └── training/
│ └── trainer.rs # Logique d'entraînement
├── data/ # Dataset (à créer)
│ ├── Parasitized/
│ └── Uninfected/
└── malaria-model-balanced/ # Modèles sauvegardés (auto-généré)
- Performance Rust : 50-100x plus rapide que Python équivalent
- Optimisation Mémoire : Gestion efficace des 27,558 images
- Convergence Stable : BatchNorm et learning rate adaptatif
- Qualité Préservée : 90% de la précision originale avec 98% de temps en moins
- Temps d'Entraînement Initial : 4 jours estimés → optimisation nécessaire
- Gestion Mémoire : Cache vs performance → compromis trouvé
- Compilation Rust : Courbe d'apprentissage du borrow checker
- Data Loading : Parallélisation et optimisation I/O
- Réduction Dimensions : 128×128 → 80×80 (qualité préservée)
- Architecture Léger : Réduction paramètres 70%
- Cache Intelligent : Préchargement partiel et parallélisation
- Batch Processing : Augmentation batch size pour optimisation CPU
- ✅ Architecture CNN de base
- ✅ Pipeline de données fonctionnel
- ✅ Entraînement basique opérationnel
- ✅ Réduction temps entraînement (4 jours → 4 heures)
- ✅ Optimisation mémoire et calcul
- ✅ Implémentation métriques avancées
- ✅ Code modulaire et maintenable
- ✅ Configuration externalisée
- ✅ Sauvegarde/chargement modèles
- Data Augmentation avancée (rotation, flip, contraste)
- Cross-Validation k-fold pour robustesse
- Visualisation des features maps et attention
- API REST pour inference en production
- Transfer Learning avec modèles pré-entraînés
- Segmentation des parasites dans les cellules
- Multi-Class Classification (espèces de Plasmodium)
- Déploiement Mobile avec ONNX/TFLite
- Federated Learning pour confidentialité des données
- Active Learning pour annotation automatique
- Integration LIS/HIS systèmes hospitaliers
- Validation Clinique multi-centres
- Diagnostic Accéléré : Minutes → secondes
- Accessibilité : Zones rurales et ressources limitées
- Standardisation : Réduction variabilité inter-opérateur
- Coût Réduit : Automatisation des analyses de routine
- Télémédecine : Diagnostic à distance
- Screening de Masse : Campagnes de santé publique
- Recherche : Analyse de grands datasets épidémiologiques
- Éducation : Outil d'apprentissage pour techniciens
- Fork le repository
- Feature Branch :
git checkout -b feature/amazing-feature - Commit :
git commit -m 'Add amazing feature' - Push :
git push origin feature/amazing-feature - Pull Request
- Rustfmt pour le formatage
- Clippy pour les lintings
- Tests Unitaires pour chaque module
- Documentation exhaustive
# Installation environnement
rustup component add clippy rustfmt
# Vérification code
cargo clippy -- -D warnings
cargo fmt --check
# Tests
cargo test
cargo test -- --nocapture # Avec outputCe projet est distribué sous licence MIT - voir le fichier LICENSE pour plus de détails.
Si vous utilisez ce code dans un contexte de recherche, merci de citer :
@software{malaria_detection_2024,
author = {FOSSOUO WATO MARTIAL},
title = {Malaria Detection CNN with Burn Framework},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/rustnew/Malaria_model_2}}
}
- Équipe Burn pour le framework exceptionnel
- Communauté Rust pour le support et les ressources
- NIH pour le dataset de frottis sanguins publics
- Contributeurs qui améliorent continuellement le projet