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
- El formato de datos TFRecord está optimizado para el entrenamiento en TensorFlow. La página de ejemplos de aprendizaje automático incluye varios flujos de trabajo de TensorFlow que muestran cómo entrenar un modelo con TFRecords.
- Como alternativa, para ver un ejemplo de cómo descargar datos con Apache Beam, alojado en Google Cloud Dataflow, y, luego, entrenar en Vertex AI con TensorFlow, visita el instructivo sobre la clasificación de la cobertura del suelo y sigue un notebook de Colab.
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.
-
El paquete
ee.Model
de Earth Engine permite realizar predicciones con los datos de Earth Engine y un modelo entrenado alojado en Vertex AI de Google. Puedes alojar tu modelo entrenado personalizado en Vertex AI y realizar la inferencia directamente en Earth Engine conee.Model.fromVertexAi
. Consulta la guía de predicciones de imágenes o la guía de predicciones de tablas para obtener más información. - Como alternativa, en el instructivo sobre la clasificación de la cobertura terrestre, se muestra cómo puedes realizar predicciones con un servicio en la nube, como Cloud Functions.
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 })