Aprendizado de máquina no Earth Engine

APIs de machine learning

O aprendizado de máquina (ML) é uma técnica poderosa para analisar dados da Observação da Terra. O Earth Engine tem recursos integrados para permitir que os usuários criem e usem modelos de ML para 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. Essa abordagem é útil para o mapeamento de uso da terra e cobertura da terra e outras aplicações comuns.

  • Classificação supervisionada:uma técnica de ML para classificar terrenos é usar exemplos de informações empíricas para ensinar um modelo a diferenciar classes. Os classificadores supervisionados integrados do Earth Engine são compatíveis com esse processo.
  • Classificação não supervisionada:na classificação não supervisionada, nenhum exemplo de informações empíricas é 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 no terreno, 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 o rendimento da safra. 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 aprendizado de máquina que podem funcionar bem para 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, você precisa usar um framework como o TensorFlow ou o PyTorch e treinar seu modelo fora do Earth Engine.

Você também pode treinar fora do Earth Engine se já conhece um framework como o scikit-learn para machine learning clássico ou o XGBoost para árvores de decisão com reforço de gradiente.

Por fim, é possível treinar um modelo fora do Earth Engine se o conjunto de dados for muito grande e exceder os limites documentados abaixo.

Como exportar dados do Earth Engine para treinamento

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 fazer previsões com ele.

Outros motivos para treinar modelos fora do Earth Engine

Além de familiaridade e preferência, você pode 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 a precisão de 32 bits (ou seja, flutuante), isso pode acomodar conjuntos de dados de treinamento que satisfaçam (onde n é o número de exemplos e b é o número de faixas):

nb ≤ (100 * 2 20) / 4

Por exemplo, se você treinar usando 100 bandas, o número de exemplos usados para o treinamento precisa ser menor que 200.000.

Limites de inferência

Como o Earth Engine processa blocos de imagem de 256 x 256, as solicitações de inferência em imagens precisam ter menos de 400 bandas (novamente, supondo 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
      })