--- license: cc-by-nc-4.0 language: - fr - en tags: - earth-observation - sentinel-2 - land-cover - remote-sensing - random-forest - deforestation - togo --- # ForestWatch Togo : Land Cover AI Monitor 🌍🛰️ Ce dépôt contient les artefacts de production (modèle d'Intelligence Artificielle et scaler) du projet **ForestWatch Togo**.
Ce système permet de classifier l'occupation des sols à partir de l'imagerie satellite Sentinel-2 (*résolution 10m*). ## 🧠 Détails du Modèle * **Algorithme :** `RandomForestClassifier` (Scikit-Learn). * **Entraînement :** Entraîné sur un jeu de données extrait via Google Earth Engine, ciblant spécifiquement la région du Togo. * **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 : ```python features_attendues = [ 'B12', 'B12_contrast', 'B12_diss', 'B4', 'B4_var', 'B8', 'B8_asm', 'B8_contrast', 'B8_diss', 'NDBI', 'NDBI_contrast', 'NDBI_diss', 'NDVI', 'NDVI_contrast', 'NDVI_diss', 'NDWI', 'NDWI_contrast', 'NDWI_diss' ] ``` * **Sorties (6 Classes) :** 1: Eau | 2: Arbres/Forêt | 3: Végétation inondée | 4: Cultures | 5: Urbain | 6: Savane & Buissons / Sol Nu ## 📦 Architecture des fichiers * `rfc_production_v1.joblib` : Le modèle prédictif final. * `scaler_production.joblib` : Le StandardScaler (indispensable pour conformer les données avant l'inférence). ## 💻 Exemple d'utilisation (Python) Voici comment télécharger dynamiquement les artefacts depuis ce repository et effectuer une prédiction en Python : ```python import pandas as pd import joblib from huggingface_hub import hf_hub_download REPO_ID = "kjd-dktech/forestwatch-tg" # 1. Télécharger et charger les poids de production depuis Hugging Face scaler_path = hf_hub_download(repo_id=REPO_ID, filename="scaler_production.joblib") model_path = hf_hub_download(repo_id=REPO_ID, filename="rfc_production_v1.joblib") scaler = joblib.load(scaler_path) model = joblib.load(model_path) # 2. Préparer vos nouvelles données # Le tableau doit contenir exactement les 18 features attendues features_attendues = [ 'B12', 'B12_contrast', 'B12_diss', 'B4', 'B4_var', 'B8', 'B8_asm', 'B8_contrast', 'B8_diss', 'NDBI', 'NDBI_contrast', 'NDBI_diss', 'NDVI', 'NDVI_contrast', 'NDVI_diss', 'NDWI', 'NDWI_contrast', 'NDWI_diss' ] donnees_entree = pd.DataFrame([ # Simulation d'un pixel (18 valeurs fictives) [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] ], columns=features_attendues) # 3. Appliquer la normalisation X_scaled = scaler.transform(donnees_entree) # 4. Prédire la classe d'occupation du sol predictions = model.predict(X_scaled) print("Classe prédite :", predictions[0]) # Ex: Sortie 2 (Forêt) ``` ## 🚀 Utilisation en Production Ce modèle est conçu pour fonctionner dynamiquement avec l'API Stateless développée pour le projet.
L'API télécharge automatiquement ces poids lors de son démarrage grâce à `huggingface_hub`. Pour utiliser le code complet, l'API et l'infrastructure Docker, veuillez consulter le repository GitHub officiel : 🔗 **[GitHub - ForestWatch Togo](https://github.com/kjd-dktech/forestwatch-tg)** --- *Développé par [Kodjo Jean DEGBEVI (@kjd-dktech)] - Licence CC-BY-NC-4.0*