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
```bash
git clone <votre-repo>
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
<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` :
```xml
<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
```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.