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 en deux catégories ou plus. Cette approche est utile pour la cartographie de l'occupation des sols et d'autres applications populaires.

  • Classification supervisée:une technique de ML pour classer les terres consiste à utiliser des exemples de vérité terrain pour apprendre à un modèle à différencier les classes. Les classificateurs supervisés intégrés d'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 de différences inhérentes. Les classificateurs non supervisés d'Earth Engine sont particulièrement utiles lorsqu'il n'existe pas de données de référence, 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 dans 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 avec des données complexes, comme les images satellites. Ni le deep learning ni les réseaux de neurones ne sont compatibles avec les API de machine learning d'Earth Engine. Pour en profiter, vous devez utiliser un framework tel que TensorFlow ou PyTorch et entraîner votre modèle en dehors d'Earth Engine.

Vous pouvez également effectuer l'entraînement en dehors d'Earth Engine si vous connaissez déjà un framework tel que scikit-learn pour le machine learning classique ou XGBoost pour les arbres de décision boostés par 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 avez le choix entre 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 de neurones 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 de 100 Mo maximum. À titre indicatif, en supposant une précision de 32 bits (c'est-à-dire un float), cela peut accueillir des ensembles de données d'entraînement qui répondent aux conditions suivantes (où n est le nombre d'exemples et b est le nombre de bandes):

nb ≤ (100 * 2 20) / 4

Par exemple, si vous entraînez votre modèle avec 100 bandes, le nombre d'exemples utilisés pour l'entraînement doit être inférieur à 200 000.

Limites d'inférence

Étant donné qu'Earth Engine traite des tuiles d'images de 256 x 256 pixels, les requêtes d'inférence sur les images doivent comporter moins de 400 bandes (en supposant une précision de 32 bits pour les images).

Vous pouvez réentraîner un classificateur plusieurs fois pour que l'ensemble de données de chaque exécution d'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, par conséquent, leur taille. Exemple :

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