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

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


Développé par [Kodjo Jean DEGBEVI (@kjd-dktech)] - Licence CC-BY-NC-4.0

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support