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
- Le format de données TFRecord est optimisé pour l'entraînement dans TensorFlow. La page des exemples de machine learning inclut plusieurs workflows TensorFlow qui montrent comment entraîner un modèle à l'aide de TFRecords.
- Pour obtenir un exemple de téléchargement de données à l'aide d'Apache Beam, hébergé dans Google Cloud Dataflow, puis d'entraînement dans Vertex AI à l'aide de TensorFlow, consultez le tutoriel sur la classification de l'occupation des sols et suivez-le avec un notebook Colab.
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.
-
Le package
ee.Model
d'Earth Engine permet d'effectuer des prédictions à l'aide de données dans Earth Engine et d'un modèle entraîné hébergé sur Vertex AI de Google. Vous pouvez héberger votre modèle entraîné sur mesure dans Vertex AI et effectuer des inférences directement dans Earth Engine à l'aide deee.Model.fromVertexAi
. Pour en savoir plus, consultez la section Se connecter aux modèles hébergés sur Vertex AI. - Le tutoriel sur la classification de l'occupation des sols explique également comment effectuer des prédictions à l'aide d'un service cloud tel que Cloud Functions.
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 })