太方便了,在Google Earth Engine上可直接跑的深度学习模型用于不透水面分类

大家都知道,在Google Earth Engine上做分类,多数是随机森林等逐像素分类模型。性能很好,但是对于上下文信息则利用较少,而且训练的时候并不能非常好的利用样本数据,因此在上面使用深度学习模型就成为了需要完成的重要步骤。

GEE学习室的老师们最近使用GEE训练了深度学习模型用于不透水面分类,可以直接应用于不同年份和不同地区的研究,去除了繁琐的影像下载,大大提高了实用性。

以北京市为例,使用Sentinel-2影像数据,然后利用深度学习模型,可以很快就得到不透水面的分类专题图,如下所示:

图片

图片

放大结果图看,如下所示,可以发现细节保持的很好。而且,如果对比其他的土地利用分类产品,就会发现使用深度学习得到的结果会好很多。

图片

图片

最后,我们给出代码,方便有需要的同学直接调用查看。

// set study area
var roi = AOI2;
Map.addLayer(roi,{'color':'grey'},'studyarea');
Map.centerObject(roi);

// define the year and band info
var year = 2020;
var S2_bands = ["B2", "B3", "B4", "B8", "B11", "B12"];
// select sentinel-2 images
var s2Image = ee.ImageCollection('COPERNICUS/S2_SR') //S2_SR
                .filter(ee.Filter.calendarRange(year,year,'year'))
                .filter(ee.Filter.calendarRange(5,10,'month'))
                .filterBounds(roi)
                .map(rmS2cloud)
                .select(S2_bands)
                .mean()
                .clip(roi);
var visParam = {
  "Bands":["B8","B4","B3"],
  "min":0.0,
  "max":0.2
};              
Map.addLayer(s2Image,visParam,"S2SRCol");
var imgMedian = s2Image;

// 直接调用模型
var model = require('users/nietaoyuan/aGEECommonModule:geeDLUrbanModel.js');
var imgPredict = model.urbanModel(imgMedian,roi);
Map.addLayer(imgPredict,{'palette':'red'}, 'CNN_urban');

var urbanMask_1 = CLCD_2020.eq(8).clip(roi);
Map.addLayer(urbanMask_1.selfMask(), {'palette':'red'}, 'urbanMask_1',false);

var urbanMask_2 = CAS_2020.gte(51).and(CAS_2020.lte(53)).clip(roi);
Map.addLayer(urbanMask_2.selfMask(), {'palette':'blue'}, 'urbanMask_2',false);

// remove cloud from Sentinel-2
function rmS2cloud(image) {
  var qa = image.select('QA60');

  // Bits 10 and 11 are clouds and cirrus, respectively.
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;

  // Both flags should be set to zero, indicating clear conditions.
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
      .and(qa.bitwiseAnd(cirrusBitMask).eq(0));
  var mask2 = image.select("B2").lte(2000);
  return image.updateMask(mask).updateMask(mask2).divide(1e4)
              .copyProperties(image)
              .copyProperties(image, ["system:time_start", "system:time_end"]);
}

加入我们

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值