# 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 ```bash git clone cd tuberculosis_detection ``` ### 2. Installer les dépendances ```bash 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 : ```python # 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 : ```xml ``` #### iOS Ajoutez dans `ios/Runner/Info.plist` : ```xml NSCameraUsageDescription Cette app a besoin d'accéder à la caméra pour prendre des photos de radiographies. NSPhotoLibraryUsageDescription Cette app a besoin d'accéder à la galerie pour sélectionner des radiographies. ``` ### 5. Lancer l'application ```bash # Vérifier les appareils disponibles flutter devices # Lancer sur l'appareil connecté flutter run # Ou lancer en mode release flutter run --release ``` ## 📱 Utilisation 1. **Charger une image** : Utilisez les boutons "Galerie" ou "Caméra" 2. **Analyser** : Appuyez sur "🔍 Analyser l'image" 3. **Consulter les résultats** : Diagnostic, probabilité et nodules détectés 4. **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 principale - `TuberculosisDetectionScreen` : É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 ```dart // 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 ```dart // 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 ```bash # 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 ```bash # Réinitialiser les permissions de l'app flutter clean flutter pub get flutter run ``` ### Erreurs de build ```bash # Nettoyer le build flutter clean flutter pub get # Reconstruire flutter build apk --debug ``` ## 📦 Build de Production ### Android (APK) ```bash flutter build apk --release # Le fichier sera dans build/app/outputs/flutter-apk/ ``` ### Android (App Bundle) ```bash flutter build appbundle --release # Pour publication sur Google Play Store ``` ### iOS ```bash 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 - [Documentation Flutter](https://docs.flutter.dev/) - [TensorFlow Lite Flutter](https://pub.dev/packages/tflite_flutter) - [Image Picker Plugin](https://pub.dev/packages/image_picker) - [Material Design Guidelines](https://material.io/design) ## 🤝 Contribution Pour contribuer au projet : 1. Fork le repository 2. Créer une branche feature (`git checkout -b feature/AmazingFeature`) 3. Commit les changements (`git commit -m 'Add AmazingFeature'`) 4. Push sur la branche (`git push origin feature/AmazingFeature`) 5. 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.