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 observación de la Tierra. Earth Engine tiene capacidades integradas que permiten a los usuarios compilar y usar modelos de AA para 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. Este enfoque es útil para la asignación de la cobertura y el uso del suelo, y otras aplicaciones populares.

  • Clasificación supervisada: Una técnica de AA para clasificar la tierra es usar ejemplos de verdad fundamental para enseñarle a un modelo a diferenciar entre clases. Los clasificadores supervisados integrados de Earth Engine respaldan 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 especialmente útiles cuando no existen datos de referencia, 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 con datos complejos, como las 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 marco de trabajo como scikit-learn para el aprendizaje automático clásico o XGBoost para los árboles de decisión potenciados por gradiente.

Por último, es posible que desees entrenar 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.

Cómo exportar 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 quieres usar arquitecturas de modelos (p.ej., redes neuronales convolucionales) que no son compatibles con las APIs de aprendizaje automático de Earth Engine, si quieres 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, suponiendo una precisión de 32 bits (es decir, flotante), esto puede admitir conjuntos de datos de entrenamiento que satisfagan la siguiente ecuación (donde n es la cantidad de ejemplos y b es la cantidad de bandas):

nb ≤ (100 * 2 20) / 4

Por 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 x 256, las solicitudes de inferencia sobre imágenes deben tener menos de 400 bandas (nuevamente, 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 en el tamaño del modelo

Además, el modelo en sí 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
      })