File size: 6,397 Bytes
87a2e39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# 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.