kisambu's picture
Upload du modèle de détection de tuberculose
87a2e39 verified

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

  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

// 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 :

  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.