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 进行机器学习分析,助力地理空间数据的智能处理与应用。

相关推荐
a濯16 分钟前
element plus el-table多选框跨页多选保留
javascript·vue.js
蓝婷儿34 分钟前
前端面试每日三题 - Day 32
前端·面试·职场和发展
星空寻流年2 小时前
CSS3(BFC)
前端·microsoft·css3
九月TTS2 小时前
开源分享:TTS-Web-Vue系列:Vue3实现固定顶部与吸顶模式组件
前端·vue.js·开源
H309192 小时前
vue3+dhtmlx-gantt实现甘特图展示
android·javascript·甘特图
CodeCraft Studio2 小时前
数据透视表控件DHTMLX Pivot v2.1发布,新增HTML 模板、增强样式等多个功能
前端·javascript·ui·甘特图
一把年纪学编程2 小时前
【牛马技巧】word统计每一段的字数接近“字数统计”
前端·数据库·word
llc的足迹2 小时前
el-menu 折叠后小箭头不会消失
前端·javascript·vue.js
九月TTS3 小时前
TTS-Web-Vue系列:移动端侧边栏与响应式布局深度优化
前端·javascript·vue.js
Johnstons3 小时前
AnaTraf:深度解析网络性能分析(NPM)
前端·网络·安全·web安全·npm·网络流量监控·网络流量分析