APIs de machine learning
O aprendizado de máquina (ML) é uma técnica poderosa para analisar dados de observação da Terra. O Earth Engine tem recursos integrados para permitir que os usuários criem e usem modelos de ML em cenários comuns com APIs fáceis de usar.
Uma tarefa comum de ML é classificar os pixels em imagens de satélite em duas ou mais categorias. A abordagem é útil para mapeamento de uso e cobertura da terra e outros aplicativos populares.
- Classificação supervisionada:uma técnica de ML para classificar a terra é usar exemplos de informações empíricas para ensinar um modelo a diferenciar entre classes. Os classificadores supervisionados integrados do Earth Engine oferecem suporte a esse processo.
- Classificação não supervisionada:na classificação não supervisionada, nenhum exemplo de informação empírica é fornecido ao algoritmo de treinamento. Em vez disso, o algoritmo divide os dados disponíveis em clusters com base em diferenças inerentes. Os classificadores não supervisionados do Earth Engine são particularmente úteis quando não há dados de verdade básica, quando você não sabe o número final de classes ou quando quer fazer experimentos rápidos.
- Regressão:enquanto um modelo de classificação tenta agrupar cada entrada em uma classe discreta, um modelo de regressão tenta prever uma variável contínua para cada entrada. Por exemplo, um modelo de regressão pode prever a qualidade da água, a porcentagem de cobertura florestal, a porcentagem de cobertura de nuvens ou a produtividade das plantações. Para mais informações, consulte a seção "Regressão linear" de ee.Reducers.
Treinamento e previsão fora do Earth Engine
O aprendizado profundo e as redes neurais são técnicas de machine learning que funcionam bem com dados complexos, como imagens de satélite. Nem o aprendizado profundo nem as redes neurais são compatíveis com as APIs de aprendizado de máquina do Earth Engine. Em vez disso, para aproveitar esses recursos, use um framework como TensorFlow ou PyTorch e treine seu modelo fora do Earth Engine.
Também é possível treinar fora do Earth Engine se você já conhece um framework como o scikit-learn para machine learning clássico ou o XGBoost para árvores de decisão com aumento de gradiente.
Por fim, talvez seja necessário treinar um modelo fora do Earth Engine se o conjunto de dados for muito grande e exceder os limites documentados abaixo.
Exportar dados do Earth Engine para treinamento
- O formato de dados TFRecord é otimizado para treinamento no TensorFlow. A página de exemplos de machine learning inclui vários fluxos de trabalho do TensorFlow que mostram como treinar um modelo usando TFRecords.
- Como alternativa, para um exemplo de como baixar dados usando o Apache Beam, hospedado no Google Cloud Dataflow, e treinar na Vertex AI usando o TensorFlow, acesse o tutorial de classificação de cobertura da terra e siga um notebook do Colab.
Como receber previsões de um modelo fora do Earth Engine
Se você treinar um modelo fora do Earth Engine, terá algumas opções para receber previsões dele.
-
O pacote
ee.Model
do Earth Engine permite fazer previsões usando dados do Earth Engine e um modelo treinado hospedado na Vertex AI do Google. É possível hospedar seu modelo treinado de maneira personalizada na Vertex AI e realizar inferências diretamente no Earth Engine usandoee.Model.fromVertexAi
. Consulte o guia de previsões de imagens ou o guia de previsões de tabelas para mais informações. - Como alternativa, o tutorial de classificação de cobertura da terra demonstra como fazer previsões usando um serviço de nuvem como o Cloud Functions.
Outros motivos para treinar modelos fora do Earth Engine
Além da familiaridade e da preferência, talvez você queira treinar um modelo fora do Earth Engine se quiser usar arquiteturas de modelo (por exemplo, redes neurais convolucionais) que não são compatíveis com as APIs de machine learning do Earth Engine, se quiser usar mais recursos da Vertex AI ou se encontrar limites de escalonamento com as APIs de machine learning do Earth Engine.
Limites do conjunto de treinamento
O treinamento usando ee.Classifier
ou ee.Clusterer
geralmente é eficaz com conjuntos de dados de até 100 MB. Como uma diretriz muito aproximada, supondo uma precisão de 32 bits (ou seja, ponto flutuante), isso pode acomodar conjuntos de dados de treinamento que atendam a (em que n é o número de exemplos e b é o número de bandas):
nb ≤ (100 * 2 20) / 4
Por exemplo, se você treinar usando 100 bandas, o número de exemplos usados para treinamento deverá ser menor que 200.000.
Limites de inferência
Como o Earth Engine processa blocos de imagens de 256 x 256, as solicitações de inferência em imagens precisam ter menos de 400 bandas (considerando a precisão de 32 bits das imagens).
É possível treinar um classificador mais de uma vez para manter o conjunto de dados de cada execução de treinamento dentro dos 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 tamanho do modelo
Além disso, o modelo precisa ter menos de 100 MB. Muitos dos nossos classificadores podem ser configurados para limitar a complexidade e, portanto, o tamanho. Exemplo:
var classifier = ee.Classifier.smileRandomForest({ numberOfTrees: 10, minLeafPopulation: 10, maxNodes: 10000 })