Application Flutter - Détection de Tuberculose Pulmonaire
Cette application Flutter reproduit les fonctionnalités de votre application Streamlit pour la détection de tuberculose à partir de radiographies thoraciques.
🚀 Fonctionnalités
- Interface utilisateur moderne : Design Material adapté pour mobile
- Prise de photos : Caméra intégrée ou sélection depuis la galerie
- Intelligence artificielle : Classification automatique avec TensorFlow Lite
- Détection de nodules : Analyse visuelle des anomalies pulmonaires
- Partage d'images : Export et partage des résultats d'analyse
- Interface intuitive : Navigation par drawer et layout responsive
📋 Prérequis
- Flutter SDK (version 3.0 ou supérieure)
- Dart SDK (version 2.18 ou supérieure)
- Android Studio / VS Code avec extensions Flutter
- Un appareil Android/iOS ou émulateur
🛠️ Installation
1. Cloner le projet
git clone <votre-repo>
cd tuberculosis_detection
2. Installer les dépendances
flutter pub get
3. Ajouter le modèle TensorFlow Lite
Créez le dossier assets/models/ dans votre projet et placez-y votre modèle :
assets/
models/
mon_modele_final.tflite
Important : Convertissez votre modèle Keras en format TensorFlow Lite :
# Script Python pour convertir le modèle
import tensorflow as tf
# Charger votre modèle Keras
model = tf.keras.models.load_model('mon_modele_final.keras')
# Convertir en TFLite
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()
# Sauvegarder
with open('mon_modele_final.tflite', 'wb') as f:
f.write(tflite_model)
4. Configuration des permissions
Android
Le fichier android/app/src/main/AndroidManifest.xml doit contenir :
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
iOS
Ajoutez dans ios/Runner/Info.plist :
<key>NSCameraUsageDescription</key>
<string>Cette app a besoin d'accéder à la caméra pour prendre des photos de radiographies.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Cette app a besoin d'accéder à la galerie pour sélectionner des radiographies.</string>
5. Lancer l'application
# Vérifier les appareils disponibles
flutter devices
# Lancer sur l'appareil connecté
flutter run
# Ou lancer en mode release
flutter run --release
📱 Utilisation
- Charger une image : Utilisez les boutons "Galerie" ou "Caméra"
- Analyser : Appuyez sur "🔍 Analyser l'image"
- Consulter les résultats : Diagnostic, probabilité et nodules détectés
- Partager : Exportez l'image analysée via le bouton "Partager"
🏗️ Architecture du Code
lib/
main.dart # Point d'entrée et interface principale
assets/
models/
mon_modele_final.tflite # Modèle TensorFlow Lite
Classes principales
TuberculosisDetectionApp: Application principaleTuberculosisDetectionScreen: Écran principal avec logique métier_preprocessImage(): Préprocessing des images pour le modèle_detectNodules(): Détection simulée des nodules pulmonaires_analyzeImage(): Pipeline complet d'analyse
🔧 Personnalisation
1. Modifier les paramètres du modèle
// Dans _preprocessImage()
final resized = img.copyResize(image, width: 224, height: 224);
// Dans _analyzeImage()
final isTB = prediction > 0.5; // Seuil de décision
2. Personnaliser l'interface
// Couleurs du thème
theme: ThemeData(
primarySwatch: Colors.blue, // Changer la couleur principale
),
// Textes de l'interface
title: Text('🩺 Votre Titre Personnalisé'),
3. Ajouter de nouvelles fonctionnalités
- Historique des analyses
- Export PDF des rapports
- Mode sombre/clair
- Support multi-langues
🐛 Dépannage
Problème de modèle TensorFlow Lite
# Vérifier que le modèle est bien présent
ls -la assets/models/
# Si le modèle n'est pas trouvé, l'app fonctionne en mode simulation
Problèmes de permissions
# Réinitialiser les permissions de l'app
flutter clean
flutter pub get
flutter run
Erreurs de build
# Nettoyer le build
flutter clean
flutter pub get
# Reconstruire
flutter build apk --debug
📦 Build de Production
Android (APK)
flutter build apk --release
# Le fichier sera dans build/app/outputs/flutter-apk/
Android (App Bundle)
flutter build appbundle --release
# Pour publication sur Google Play Store
iOS
flutter build ios --release
# Nécessite un compte développeur Apple
🔒 Sécurité et Confidentialité
- Données locales : Toutes les analyses sont effectuées sur l'appareil
- Pas de cloud : Aucune image n'est envoyée vers des serveurs externes
- Permissions minimales : Seuls caméra et stockage sont demandés
- Avertissement médical : Interface claire sur les limitations de l'outil
📚 Ressources Supplémentaires
🤝 Contribution
Pour contribuer au projet :
- Fork le repository
- Créer une branche feature (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'Add AmazingFeature') - Push sur la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
📄 Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
⚠️ Avertissement Médical
Cette application est destinée à l'aide au diagnostic uniquement. Elle ne remplace pas l'avis d'un professionnel de santé qualifié. Toujours consulter un médecin pour un diagnostic définitif.