kjd-dktech commited on
Commit
332c6d8
·
verified ·
1 Parent(s): 48c7b5c

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +97 -3
README.md CHANGED
@@ -1,3 +1,97 @@
1
- ---
2
- license: cc-by-nc-4.0
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-nc-4.0
3
+ language:
4
+ - fr
5
+ - en
6
+ tags:
7
+ - earth-observation
8
+ - sentinel-2
9
+ - land-cover
10
+ - remote-sensing
11
+ - random-forest
12
+ - deforestation
13
+ - togo
14
+ ---
15
+
16
+ # ForestWatch Togo : Land Cover AI Monitor 🌍🛰️
17
+
18
+ Ce dépôt contient les artefacts de production (modèle d'Intelligence Artificielle et scaler) du projet **ForestWatch Togo**.<br>
19
+ Ce système permet de classifier l'occupation des sols à partir de l'imagerie satellite Sentinel-2 (*résolution 10m*).
20
+
21
+ ## 🧠 Détails du Modèle
22
+
23
+ * **Algorithme :** `RandomForestClassifier` (Scikit-Learn).
24
+ * **Entraînement :** Entraîné sur un jeu de données extrait via Google Earth Engine, ciblant spécifiquement la région du Togo.
25
+ * **Variables d'entrée (Features) :** Le modèle s'attend à recevoir un tableau (`pandas.DataFrame`) contenant très exactement ces **18 colonnes**, et dans cet ordre strict :
26
+ ```python
27
+ features_attendues = [
28
+ 'B12', 'B12_contrast', 'B12_diss',
29
+ 'B4', 'B4_var',
30
+ 'B8', 'B8_asm', 'B8_contrast', 'B8_diss',
31
+ 'NDBI', 'NDBI_contrast', 'NDBI_diss',
32
+ 'NDVI', 'NDVI_contrast', 'NDVI_diss',
33
+ 'NDWI', 'NDWI_contrast', 'NDWI_diss'
34
+ ]
35
+ ```
36
+ * **Sorties (6 Classes) :**
37
+ 1: Eau | 2: Arbres/Forêt | 3: Végétation inondée | 4: Cultures | 5: Urbain | 6: Savane & Buissons / Sol Nu
38
+
39
+ ## 📦 Architecture des fichiers
40
+
41
+ * `rfc_production_v1.joblib` : Le modèle prédictif final.
42
+ * `scaler_production.joblib` : Le StandardScaler (indispensable pour conformer les données avant l'inférence).
43
+
44
+ ## 💻 Exemple d'utilisation (Python)
45
+
46
+ Voici comment télécharger dynamiquement les artefacts depuis ce repository et effectuer une prédiction en Python :
47
+
48
+ ```python
49
+ import pandas as pd
50
+ import joblib
51
+ from huggingface_hub import hf_hub_download
52
+
53
+ REPO_ID = "kjd-dktech/forestwatch-tg"
54
+
55
+ # 1. Télécharger et charger les poids de production depuis Hugging Face
56
+ scaler_path = hf_hub_download(repo_id=REPO_ID, filename="scaler_production.joblib")
57
+ model_path = hf_hub_download(repo_id=REPO_ID, filename="rfc_production_v1.joblib")
58
+
59
+ scaler = joblib.load(scaler_path)
60
+ model = joblib.load(model_path)
61
+
62
+ # 2. Préparer vos nouvelles données
63
+ # Le tableau doit contenir exactement les 18 features attendues
64
+ features_attendues = [
65
+ 'B12', 'B12_contrast', 'B12_diss',
66
+ 'B4', 'B4_var',
67
+ 'B8', 'B8_asm', 'B8_contrast', 'B8_diss',
68
+ 'NDBI', 'NDBI_contrast', 'NDBI_diss',
69
+ 'NDVI', 'NDVI_contrast', 'NDVI_diss',
70
+ 'NDWI', 'NDWI_contrast', 'NDWI_diss'
71
+ ]
72
+
73
+ donnees_entree = pd.DataFrame([
74
+ # Simulation d'un pixel (18 valeurs fictives)
75
+ [0.10, 1.2, 0.5, 0.06, 0.05, 0.25, 0.15, 0.8, 0.4, -0.2, 0.3, 0.2, 0.6, 0.9, 0.3, -0.4, 0.5, 0.1]
76
+ ], columns=features_attendues)
77
+
78
+ # 3. Appliquer la normalisation
79
+ X_scaled = scaler.transform(donnees_entree)
80
+
81
+ # 4. Prédire la classe d'occupation du sol
82
+ predictions = model.predict(X_scaled)
83
+
84
+ print("Classe prédite :", predictions[0])
85
+ # Ex: Sortie 2 (Forêt)
86
+ ```
87
+
88
+ ## 🚀 Utilisation en Production
89
+
90
+ Ce modèle est conçu pour fonctionner dynamiquement avec l'API Stateless développée pour le projet. <br>
91
+ L'API télécharge automatiquement ces poids lors de son démarrage grâce à `huggingface_hub`.
92
+
93
+ Pour utiliser le code complet, l'API et l'infrastructure Docker, veuillez consulter le repository GitHub officiel :
94
+ 🔗 **[GitHub - ForestWatch Togo](https://github.com/kjd-dktech/forestwatch-tg)**
95
+
96
+ ---
97
+ *Développé par [Kodjo Jean DEGBEVI (@kjd-dktech)] - Licence CC-BY-NC-4.0*