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
- 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 demonstram como treinar um modelo usando TFRecords.
- Como alternativa, para conferir um exemplo de como fazer o download de dados usando o Apache Beam, hospedado no Google Cloud Dataflow, e depois treinar no Vertex AI usando o TensorFlow, acesse o tutorial de classificação de cobertura do solo e siga as instruções em um notebook do Colaboratory.
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.
-
O pacote
ee.Model
do Earth Engine permite fazer previsões usando dados no Earth Engine e um modelo treinado hospedado na Vertex AI do Google. É possível hospedar seu modelo treinado personalizado na Vertex AI e realizar a inferência diretamente no Earth Engine usandoee.Model.fromVertexAi
. Consulte Como se conectar a modelos hospedados na Vertex AI para mais informações. - Como alternativa, o tutorial de classificação de cobertura de terra mostra 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 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 })