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

相关推荐
光影少年2 小时前
angular生态及学习路线
前端·学习·angular.js
記億揺晃着的那天4 小时前
Vue + Element UI 表格自适应高度如何做?
javascript·vue.js·ui
无尽夏_5 小时前
HTML5(前端基础)
前端·html·html5
Jagger_5 小时前
敏捷开发流程-精简版
前端·后端
FIN66685 小时前
昂瑞微冲刺科创板:创新驱动,引领射频芯片国产化新征程
前端·安全·前端框架·信息与通信·芯片
GISer_Jing5 小时前
ByteDance——jy真题
前端·javascript·面试
睡美人的小仙女1275 小时前
浏览器为何屏蔽本地文件路径?
前端
真的想不出名儿5 小时前
Vue 中 props 传递数据的坑
前端·javascript·vue.js
FIN66685 小时前
昂瑞微:深耕射频“芯”赛道以硬核实力冲刺科创板大门
前端·人工智能·科技·前端框架·信息与通信·智能
阳光阴郁大boy5 小时前
星座运势网站技术解析:从零打造现代化Web应用
前端·javascript