Un système MLOps de bout en bout pour classifier l'occupation des sols à partir de l'imagerie Sentinel-2. Allant de l'extraction sur Google Earth Engine jusqu'au déploiement d'une API FastAPI sécurisée et dockerisée.
Contexte & Vision
L'Afrique de l'Ouest, et le Togo en particulier, fait face à des défis environnementaux majeurs, dont la déforestation. Pour monitorer ces changements à grande échelle, j'ai développé ForestWatch Togo, un pipeline intelligent alliant télédétection spatiale, Machine Learning et architecture MLOps.
L'objectif : Fournir un outil capable "d'ingérer" des pixels Sentinel-2 à 10 mètres de résolution et de prédire, avec fiabilité, l'occupation des sols (Forêts, Cultures, Eau, Sols nus, etc.).
Phase 1 : R&D et Ingénierie des features (Google Earth Engine)
La donnée brute est le nerf de la guerre. L'extraction a été réalisée via l'API Python de Google Earth Engine (GEE). Pour dépasser les limites des simples bandes colorées, j'ai implémenté :
Le calcul d'indices spectraux critiques : NDVI (végétation), NDWI (eau), NDBI (bâti).
L'ingénierie de métriques de textures via la matrice de cooccurrence (GLCM - Gray-Level Co-occurrence Matrix), permettant à l'algorithme de comprendre le pattern spatial d'un feuillage forestier par rapport à un champ cultivé.
Phase 2 : Modélisation et Plafond radiométrique
En modélisation algorithmique, j'ai opté pour un modèle ensembliste robuste : le RandomForestClassifier. L'Analyse Exploratoire des Données (EDA) et l'optimisation par GridSearch ont mis en évidence un défi technique très intéressant : le plafond radiométrique. Les savanes et buissons, physiquement très similaires, créaient un effet de trou noir statistique qui biaisait les prédictions. La solution apportée : Fusion stratégique des classes ambigües et optimisation massive axée sur le score f1_macro pour donner la priorité algorithmique à la détection de notre cible métier principale (la forêt), atteignant ainsi un excellent compromis Précision / Rappel.
Phase 3 : Grade Production et MLOps
Ce projet n'est pas resté au stade de Notebook Jupyter. Il a été pensé pour l'industrialisation. Stateless API (FastAPI) : Création d'une API REST capable de recevoir des fichiers bruts (`.csv`, `.json`, `.xlsx`). Inférence intelligente : Le code de prédiction inclut un modèle de rejet strict et un modèle adaptatif. Si des données manquent, le backend recalcule dynamiquement les indices spectraux à la volée. Couplage Hugging Face Hub : Pour garantir un repository léger, les artefacts `.joblib` d'Intelligence Artificielle sont téléchargés de manière asynchrone et sécurisée depuis Hugging Face au démarrage du système. Conteneurisation maximale : L'écosystème est packagé via un Dockerfile optimisé pour Python 3.13-slim, piloté par un docker-compose.prod.yml, prêt à être interfacé avec n'importe quel système d'information géographique (QGIS, ArcGIS ou application web front-end).