Aprendizaje automático en Earth Engine

API de aprendizaje automático

El aprendizaje automático (AA) es una técnica potente para analizar datos de la observación de la Tierra. Earth Engine tiene capacidades integradas que permiten a los usuarios compilar y usar modelos de AA en situaciones comunes con APIs fáciles de usar.

Una tarea común de AA es clasificar los píxeles de las imágenes satelitales en dos o más categorías. El enfoque es útil para el mapeo de cobertura y uso del suelo y otras aplicaciones populares.

  • Clasificación supervisada: Una técnica de AA para clasificar terrenos es usar ejemplos de verdad fundamental para enseñar a un modelo a diferenciar entre clases. Los clasificadores supervisados integrados en Earth Engine admiten este proceso.
  • Clasificación no supervisada: En la clasificación no supervisada, no se proporcionan ejemplos de verdad fundamental al algoritmo de entrenamiento. En cambio, el algoritmo divide los datos disponibles en clústeres según las diferencias inherentes. Los clasificadores no supervisados de Earth Engine son particularmente útiles cuando no existen datos de verdad del terreno, cuando no conoces la cantidad final de clases o cuando deseas realizar una experimentación rápida.
  • Regresión: Mientras que un modelo de clasificación intenta agrupar cada entrada en una clase discreta, un modelo de regresión intenta predecir una variable continua para cada entrada. Por ejemplo, un modelo de regresión podría predecir la calidad del agua, el porcentaje de cobertura forestal, el porcentaje de cobertura de nubes o el rendimiento de los cultivos. Para obtener más información, consulta la sección Regresión lineal de ee.Reducers.

Entrenamiento y predicción fuera de Earth Engine

El aprendizaje profundo y las redes neuronales son técnicas de aprendizaje automático que pueden funcionar bien para datos complejos, como imágenes satelitales. Ni el aprendizaje profundo ni las redes neuronales son compatibles con las APIs de aprendizaje automático de Earth Engine. En cambio, para aprovecharlos, deberás usar un framework como TensorFlow o PyTorch y entrenar tu modelo fuera de Earth Engine.

También puedes entrenar fuera de Earth Engine si ya conoces un framework como scikit-learn para el aprendizaje automático clásico o XGBoost para árboles de decisión con aumento de gradiente.

Por último, te recomendamos que entrenes un modelo fuera de Earth Engine si tu conjunto de datos es muy grande y supera los límites que se documentan a continuación.

Exporta datos de Earth Engine para el entrenamiento

Cómo obtener predicciones de un modelo fuera de Earth Engine

Si entrenas un modelo fuera de Earth Engine, tienes algunas opciones para obtener predicciones de ese modelo.

Otros motivos para entrenar modelos fuera de Earth Engine

Además de la familiaridad y la preferencia, es posible que desees entrenar un modelo fuera de Earth Engine si deseas usar arquitecturas de modelos (p.ej., redes neuronales convolucionales) que no son compatibles con las APIs de aprendizaje automático de Earth Engine, si deseas usar más funciones de Vertex AI o si encuentras límites de escalamiento con las APIs de aprendizaje automático de Earth Engine.

Límites del conjunto de entrenamiento

El entrenamiento con ee.Classifier o ee.Clusterer suele ser eficaz con conjuntos de datos de hasta 100 MB. Como guía muy aproximada, si se supone una precisión de 32 bits (es decir, flotante), esto puede admitir conjuntos de datos de entrenamiento que satisfagan (donde n es la cantidad de ejemplos y b es la cantidad de bandas):

nb ≤ (100 * 2 20) / 4

A modo de ejemplo, si entrenas con 100 bandas, la cantidad de ejemplos que se usan para el entrenamiento debe ser inferior a 200,000.

Límites de inferencia

Dado que Earth Engine procesa mosaicos de imágenes de 256 × 256, las solicitudes de inferencia en las imágenes deben tener menos de 400 bandas (una vez más, suponiendo una precisión de 32 bits de las imágenes).

Puedes volver a entrenar un clasificador más de una vez para mantener el conjunto de datos de cada ejecución de entrenamiento dentro de los límites.

      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")
    

Límites de tamaño del modelo

Además, el modelo debe tener un tamaño inferior a 100 MB. Muchos de nuestros clasificadores se pueden configurar para limitar su complejidad y, por lo tanto, su tamaño. Por ejemplo:

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