Google Earth Engine 机器学习入门:基础知识与实用示例详解

Google Earth Engine(简称 GEE)是一个强大的云端地理空间数据处理平台,支持大规模卫星影像和地理数据的分析。它内置了机器学习(ML)功能,方便用户进行土地分类、回归预测等任务。下面用最简单的语言介绍 GEE 中机器学习的基础知识,并配合代码示例,帮助中国用户快速理解和上手。

1. 机器学习基础概念

  • 机器学习:通过数据训练模型,让计算机自动识别规律,完成分类或预测任务。
  • 训练:用带标签的数据教模型认识不同类别或数值。
  • 预测:用训练好的模型对新数据进行分类或数值估计。

2. GEE 支持的机器学习类型

2.1 监督式分类(Supervised Classification)

  • 需要准备带有"正确答案"的训练样本(如土地类型标签)。
  • 模型学习如何根据卫星影像的像素特征区分不同类别。
  • 常用于土地利用/土地覆盖(LULC)分类。

2.2 非监督式分类(Unsupervised Classification)

  • 不需要标签,算法自动根据数据特征将像素分成若干组(聚类)。
  • 适合没有地面真值数据或想快速探索数据结构时使用。

2.3 回归(Regression)

  • 预测连续数值而非类别,比如预测森林覆盖率、作物产量、水质指标等。

3. GEE 机器学习的限制

  • 训练数据大小限制:一般训练数据不超过 100MB,约等于 100 万个样本点乘以波段数的乘积满足 n×b≤100×2204n \times b \leq \frac{100 \times 2^{20}}{4}n×b≤4100×220。
  • 模型大小限制:训练好的模型文件不能超过 100MB。
  • 推理限制:单次推理图像波段数不能超过 400。
  • 不支持深度学习:GEE 机器学习 API 不支持神经网络和深度学习模型,需在外部用 TensorFlow、PyTorch 等训练后导入。

4. GEE 机器学习工作流程示例

下面以监督式分类为例,演示如何用 GEE 进行土地覆盖分类。

4.1 准备训练样本

使用 Code Editor 的绘图工具,手动标注不同土地类型的点,赋予类别标签:

javascript 复制代码
// 假设已有四类:0-城市,1-裸地,2-水体,3-植被
var urbanPoints = /* 用户绘制的城市点 */;
var barePoints = /* 裸地点 */;
var waterPoints = /* 水体点 */;
var vegPoints = /* 植被点 */;

// 合并所有训练点
var trainingPoints = urbanPoints.merge(barePoints).merge(waterPoints).merge(vegPoints);

4.2 采样影像数据作为训练特征

javascript 复制代码
var image = ee.Image('COPERNICUS/S2_SR/20200101T000239_20200101T000239_T48MYQ'); // 示例 Sentinel-2 影像

// 从影像中采样训练点的像素值,属性名为 'landcover'
var trainingData = image.sampleRegions({
  collection: trainingPoints,
  properties: ['landcover'],
  scale: 10
});

4.3 训练分类器

javascript 复制代码
// 使用随机森林分类器,树的数量为 50
var classifier = ee.Classifier.smileRandomForest(50).train({
  features: trainingData,
  classProperty: 'landcover',
  inputProperties: image.bandNames()
});

4.4 应用分类器进行预测

php 复制代码
javascript
var classified = image.classify(classifier);

// 可视化分类结果
Map.addLayer(classified, {min: 0, max: 3, palette: ['red', 'yellow', 'blue', 'green']}, 'Land Cover Classification');

5. 回归模型示例:估计地上生物量(AGB)

回归模型用于预测连续变量,比如森林的生物量。

javascript 复制代码
// 假设已有地面样本数据 agbdSamples,包含生物量值 'AGB'
// 采样影像特征
var trainingData = image.sampleRegions({
  collection: agbdSamples,
  properties: ['AGB'],
  scale: 30
});

// 训练随机森林回归模型
var regressor = ee.Classifier.smileRandomForest(100).setOutputMode('REGRESSION').train({
  features: trainingData,
  classProperty: 'AGB',
  inputProperties: image.bandNames()
});

// 预测生物量
var agbPrediction = image.classify(regressor);

Map.addLayer(agbPrediction, {min: 0, max: 300, palette: ['white', 'green']}, 'AGB Prediction');

6. 导出训练数据与模型

  • 训练数据可导出为 CSV、TFRecord 等格式,用于外部训练。
  • 训练好的模型可导入 Vertex AI 进行托管和推理。
  • GEE 支持将结果导出到 Google Drive、Cloud Storage 或 Earth Engine 资产。

示例导出训练数据:

javascript 复制代码
Export.table.toDrive({
  collection: trainingData,
  description: 'TrainingDataExport',
  fileFormat: 'CSV'
});

7. 代码优化建议

  • 先过滤再处理 :先用 .filterDate().filterBounds().select() 减少数据量,提升效率。
  • 合理设置分辨率:避免使用过小的 scale,减少计算量。
  • 分批训练:当训练数据过大时,分批采样训练,避免内存溢出。

8. 总结

机器学习类型 适用场景 说明
监督式分类 土地覆盖分类、变化检测 需要带标签的训练样本
非监督式分类 数据探索、无标签数据 自动聚类,无需标签
回归 连续变量预测 预测数值,如生物量、产量等

GEE 机器学习功能强大,适合快速构建和应用传统机器学习模型。对于深度学习和大规模训练,建议结合 TensorFlow、Vertex AI 等外部工具。

通过以上基础介绍和示例代码,您可以快速理解并开始使用 Google Earth Engine 进行机器学习分析,助力地理空间数据的智能处理与应用。

相关推荐
37手游后端团队23 分钟前
8分钟带你看懂什么是MCP
人工智能·后端·面试
玲小珑25 分钟前
Auto.js 入门指南(六)多线程与异步操作
android·前端
白瓷梅子汤28 分钟前
跟着官方示例学习 @tanStack-table --- Header Groups
前端·react.js
喝牛奶的小蜜蜂32 分钟前
个人小程序:不懂后台,如何做数据交互
前端·微信小程序·小程序·云开发
FG.36 分钟前
Day13
java·面试
front_explorers37 分钟前
Umi项目必看,从Webpack到Rspack,KMI引领性能革命🚀
前端
旺仔牛仔QQ糖38 分钟前
都写那么多项目了, 傻傻分不清楚NODE_ENV 和 模式(Mode) 两者区别是什么
前端·面试
xcLeigh43 分钟前
HTML5实现简洁的体育赛事网站源码
前端·html
渔舟唱晚@1 小时前
Axios 取消请求的演进:CancelToken vs. AbortController
javascript
棉花糖超人1 小时前
【从0-1的CSS】第1篇:CSS简介,选择器已经常用样式
前端·css