Py学习  »  机器学习算法

GEE深度学习|涵盖水体、森林、农田等土地利用类型的可直接调用的GEE深度学习分类模型

走天涯徐小洋地理数据科学 • 3 周前 • 40 次点击  

前些日子,我们分享了在Google Earth Engine做水体识别的例子,并给出了模型,很多硕博生已经开始用了,并反馈说结果已经好于常用的水体指数。同时,有些同学和我们说,能不能多给出一些类别的模型,这样自己就知道自己的研究应该朝着哪些方向努力了。所以,我们这次在水体、不透水面的基础上,再增加农田和森林等土地利用类别,方便有需要的同学使用和调用。并希望大家能够积极地给我们一些反馈。

接着,我们还是先看下类别的分类效果,这里包括水体、农田和森林等。先来看下森林,这个是之前没有的。其中,上面的是Sentinel-2影像数据,下面的是分类结果图,可以看出在细节和边界完整方面保持的已经相当好了。

然后是Cropland类别,我们在东北测试的,看着效果特别好。

水体的识别效果也是相当炸裂,并且实现了整个东北三省的水体。打开可以看下细节图像,和主要水体的形状还是很温和的。而且,这里还需要透露一个关键数字,实现东北三省如此尺度的土地利用分类,只需要花费几个小时即可完成,这不得不说是非常大的进步了。

最后,我们给出代码,方便大家调用。大家只需要修改研究区就可以得到相应的结果。

森林分类调用代码:
// set study areavar roi = AOI3;Map.addLayer(roi,{'color':'grey'},'studyarea',false);Map.centerObject(roi,8);
// define the year and band infovar year = 2020;var S2_bands = ["B2", "B3", "B4", "B8", "B11", "B12"];// select sentinel-2 imagesvar s2Image = ee.ImageCollection('COPERNICUS/S2_SR') //S2_SR .filter(ee.Filter.calendarRange(year,year,'year')) .filter(ee.Filter.calendarRange(4,10,'month')) .filterBounds(roi) .map(rmS2cloud) .select(S2_bands) .median() .clip(roi);var visParam = { "bands":["B4","B3",'B2'], "min":0.0, "max":0.3}; Map.addLayer(s2Image,visParam,"S2SRCol");var imgMedian = s2Image;
// 直接调用模型var model = require('users/nietaoyuan/aGEECommonModule:geeCNN_forestModel.js');var imgPredict = model.forestModel(imgMedian,roi);imgPredict = imgPredict.clip(roi); Map.addLayer(imgPredict,{'palette':'red'}, 'CNN_Forest');
// remove cloud from Sentinel-2function 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"]);}
Cropland分类调用代码:
// set study areavar roi = AOI2;Map.addLayer(roi,{'color':'grey'},'studyarea',false);Map.centerObject(roi,8);
// define the year and band infovar year = 2020;var S2_bands = ["B2", "B3", "B4", "B8", "B11", "B12"];// select sentinel-2 imagesvar s2Image = ee.ImageCollection('COPERNICUS/S2_SR') //S2_SR .filter(ee.Filter.calendarRange(year,year,'year')) .filter(ee.Filter.calendarRange(4,10,'month')) .filterBounds(roi) .map(rmS2cloud) .select(S2_bands) .median() .clip(roi);var visParam = { "bands":["B4","B3",'B2'], "min":0.0, "max":0.3}; Map.addLayer(s2Image,visParam,"S2SRCol");var imgMedian = s2Image;
// 直接调用模型var model = require('users/nietaoyuan/aGEECommonModule:geeCNN_cropModel.js');var imgPredict = model.croprModel(imgMedian,roi);imgPredict = imgPredict.clip(roi);Map.addLayer(imgPredict,{'palette':'red'}, 'CNN_Crop');
// remove cloud from Sentinel-2function 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"]);}

东北三省水体分类结果图获取

请通过下方联系方式添加小编微信,小编告知获取方式。

交流合作

GEE学习室是一群由认真学习和使用GEE等遥感大数据平台的高校博士生(含在读和已毕业)组建的团队,致力于GEE等大数据原创和优质算法开发,希冀通过团队的努力为遥感大数据智能处理普及和广大学子科研之路提供绵薄之力
本学习室业已创建了5个学习交流群,即则喜群、明辨群、如琢群、修远群思齐群来自各地高校和研究所,涵盖本科、硕士和博士群体,交流群每天活跃度非常高

想加入交流的加小编微信邀请进群(扫描下方二维码咨询报名或菜单栏“联系我们”选项框都可以找到小编哟)。注意,咨询加群验证信息请备注为“研究方向-学校-加群”格式否则不予通过。例如,假如你是武汉大学的土地利用分类方向的研究生,则可以备注“LULC-武大-加群”;假如你是北京大学的生态学方向的研究生,则可以备注“生态学-北大-加群”。

如果有帮助,点赞或者关注一下呗

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/168769
 
40 次点击