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

相关推荐
刘发财4 小时前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
牛奶6 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶6 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
Kagol9 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
GIS之路10 小时前
ArcGIS Pro 中的 notebook 初识
前端
JavaGuide10 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端
ssshooter11 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
格砸11 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
Live0000012 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉12 小时前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化