Machine learning dans Earth Engine

API de machine learning

Le machine learning (ML) est une technique puissante pour analyser les données d'observation de la Terre. Earth Engine dispose de fonctionnalités intégrées permettant aux utilisateurs de créer et d'utiliser des modèles de ML pour des scénarios courants à l'aide d'API faciles à utiliser.

Une tâche de ML courante consiste à classer les pixels des images satellite dans deux catégories ou plus. Cette approche est utile pour la cartographie de l'utilisation et de la couverture des sols, ainsi que pour d'autres applications populaires.

  • Classification supervisée : une technique de ML pour classifier les terres consiste à utiliser des exemples de vérité terrain pour apprendre à un modèle à faire la différence entre les classes. Les classificateurs supervisés intégrés à Earth Engine sont compatibles avec ce processus.
  • Classification non supervisée : dans la classification non supervisée, aucun exemple de vérité terrain n'est fourni à l'algorithme d'entraînement. Au lieu de cela, l'algorithme divise les données disponibles en clusters en fonction des différences inhérentes. Les classificateurs non supervisés d'Earth Engine sont particulièrement utiles lorsqu'aucune donnée de vérité terrain n'existe, lorsque vous ne connaissez pas le nombre final de classes ou lorsque vous souhaitez effectuer des tests rapides.
  • Régression : alors qu'un modèle de classification tente de regrouper chaque entrée dans une classe discrète, un modèle de régression tente de prédire une variable continue pour chaque entrée. Par exemple, un modèle de régression peut prédire la qualité de l'eau, le pourcentage de couverture forestière, le pourcentage de couverture nuageuse ou le rendement des cultures. Pour en savoir plus, consultez la section Régression linéaire d'ee.Reducers.

Entraînement et prédiction en dehors d'Earth Engine

Le deep learning et les réseaux de neurones sont des techniques de machine learning qui peuvent fonctionner efficacement pour les données complexes comme les images satellite. Le deep learning et les réseaux de neurones ne sont pas compatibles avec les API Machine Learning d'Earth Engine. Pour en profiter, vous devrez utiliser un framework comme TensorFlow ou PyTorch et entraîner votre modèle en dehors d'Earth Engine.

Vous pouvez également choisir d'effectuer l'entraînement en dehors d'Earth Engine si vous connaissez déjà un framework comme scikit-learn pour le machine learning classique ou XGBoost pour les arbres de décision avec boosting de gradient.

Enfin, vous pouvez entraîner un modèle en dehors d'Earth Engine si votre ensemble de données est très volumineux et dépasse les limites indiquées ci-dessous.

Exporter des données depuis Earth Engine pour l'entraînement

Obtenir des prédictions à partir d'un modèle en dehors d'Earth Engine

Si vous entraînez un modèle en dehors d'Earth Engine, vous disposez de plusieurs options pour obtenir des prédictions à partir de ce modèle.

Autres raisons d'entraîner des modèles en dehors d'Earth Engine

En plus de la familiarité et des préférences, vous pouvez entraîner un modèle en dehors d'Earth Engine si vous souhaitez utiliser des architectures de modèle (par exemple, des réseaux neuronaux convolutifs) qui ne sont pas compatibles avec les API de machine learning d'Earth Engine, si vous souhaitez utiliser davantage de fonctionnalités de Vertex AI ou si vous rencontrez des limites de mise à l'échelle avec les API de machine learning d'Earth Engine.

Limites de l'ensemble d'entraînement

L'entraînement à l'aide de ee.Classifier ou ee.Clusterer est généralement efficace avec des ensembles de données allant jusqu'à 100 Mo. En guise de règle générale très approximative, en supposant une précision de 32 bits (c'est-à-dire float), cela peut prendre en charge les ensembles de données d'entraînement qui satisfont (où n est le nombre d'exemples et b est le nombre de bandes) :

nb ≤ (100 * 2 20) / 4

Par exemple, si vous effectuez l'entraînement à l'aide de 100 bandes, le nombre d'exemples utilisés pour l'entraînement doit être inférieur à 200 000.

Limites d'inférence

Comme Earth Engine traite des blocs d'images de 256 x 256, les requêtes d'inférence sur les images doivent comporter moins de 400 bandes (en supposant une précision de 32 bits des images).

Vous pouvez réentraîner un classificateur plusieurs fois pour que l'ensemble de données de chaque entraînement reste dans les limites.

      var trainings = ee.List.sequence(0, 3).map(function(cover) {
          return image.addBands(landcover.eq(cover).stratifiedSample()
      })

      var classifier = ee.Classifier.smileCart()
          .train(trainings.get(0), "cover")
          .train(trainings.get(1), "cover")
          .train(trainings.get(2), "cover")
          .train(trainings.get(3), "cover")
    

Limites de taille des modèles

De plus, le modèle lui-même doit être inférieur à 100 Mo. De nombreux classificateurs peuvent être configurés pour limiter leur complexité et donc leur taille. Exemple :

      var classifier = ee.Classifier.smileRandomForest({
          numberOfTrees: 10,
          minLeafPopulation: 10,
          maxNodes: 10000
      })