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
- 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 demuestran cómo entrenar un modelo con TFRecords.
- Como alternativa, para ver un ejemplo de cómo descargar datos con Apache Beam, que se aloja en Google Cloud Dataflow, y, luego, entrenar en Vertex AI con TensorFlow, visita el instructivo de clasificación de cobertura del suelo y sigue los pasos con 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 datos en Earth Engine y un modelo entrenado alojado en Vertex AI de Google. Puedes alojar tu modelo personalizado entrenado en Vertex AI y realizar inferencias directamente en Earth Engine conee.Model.fromVertexAi
. Consulta Cómo conectarse a modelos alojados en Vertex AI para obtener más información. - Como alternativa, en el instructivo de clasificación de 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 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 })