【GEE】基于GEE进行非监督学习
1 简介与摘要
之前写了多季节叠加的监督学习,所以这次简单写一个非监督学习吧。。
这次为了简单明了,就不整那么多虚的了,在这里我不叠图层了,有需要的可以参考前一篇博客自己添加输入的图层。
2 制作输入影像
首先,同样的我们需要制作一个自带n个图层(波段)的影像。
我们需要先根据我们所选的卫星数据先放一个云掩膜函数。本例中我使用的是sentinel2影像(10m分辨率),所以我先放一个他的云掩膜函数在上面:
function maskS2clouds(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));return image.updateMask(mask).divide(10000);
}
然后,我们开始筛选我们需要的影像。时间段是start到end之间(这个参数需要自填),筛选云量在20%以下的影像再进行云掩膜:
var s2 = ee.ImageCollection('COPERNICUS/S2_SR');var img = ee.Image(s2.filterBounds(roi).filterDate(start, end).filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20)).map(maskS2clouds).mean().clip(roi));
然后开始选我们需要的波段,叠成一个新的影像。我写这个例子的时候懒得算指数了,如果要叠出花样了可以参考我上一篇博客计算各种指数叠波段的方法。下面我简单地把哨兵自带的1-9波段放进去:
var image = img.select('B2');
var image = image.addBands([img.select('B3'), img.select('B4'), img.select('B5'),img.select('B6'), img.select('B7'), img.select('B8'),img.select('B9')]);
然后得到的这个image就是我们要扔进去非监督学习的输入影像了。
3 非监督学习
我们有了影像,我们要在影像的范围内生成采样点,这样机器才知道要自己学什么。范围是roi,尺度是scale(本例中为10),numpixels是生成的个数:
// sampling
var training = image.sample({region: roi,scale: scale,numPixels: numpixels
});
采样完开始选择方法。方法选我比较喜欢的wekaKMeans,里面填的classes是期望划分的类别数,training是刚才采的样,result是非监督分类完的图:
// select method
var clusterer = ee.Clusterer.wekaKMeans(classes).train(training);var result = image.cluster(clusterer);
如果想要使用其他非监督分类方法可以在GEE代码界面左上角的docs检索,或者参考这篇博客:google earth engine(GEE)进行非监督分类
4 影像的显示与结果
最后我们用几行代码让结果显示在在地图上:
Map.centerObject(roi, 11);
Map.addLayer(image.clip(roi), {bands: ["B4", "B3", "B2"], min:0, max:0.25}, "raw_img");
Map.addLayer(result.randomVisualizer(), {}, 'clusters')
下面是我用真彩色合成的影像:

下图是分类结果:

然后设置一下cluster这个图层,给他调一下色:

通过inspector我们可以查询cluster的值,然后和合成的真彩色进行对比,然后调色。比如我们点一下点发现原来深绿色这类是海冰,然后它在cluster的值是1,所以我们设置第二个色块palette为海冰的颜色(0是第一个色块,1是第二个,依此类推)(记得把上面range也调一下,比如我这里分五类那就是0-5):

上图0是积雪(白)、1是海冰(灰)、2是海洋(蓝)、3是植被(绿)、4是裸地(褐)。
5 本例完整代码
本例使用sentinel2影像,对2020年11月1日到2021年3月1日海参崴地区的影像进行合成与非监督分类(5类)。代码的参数写在最前面,可以根据需要自行调整。
var classes = 5;
var scale = 10;
var numpixels = 5000;
var start = '2020-11-01'
var end = '2021-03-31'function maskS2clouds(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));return image.updateMask(mask).divide(10000);
}// select images
var s2 = ee.ImageCollection('COPERNICUS/S2_SR');var img = ee.Image(s2.filterBounds(roi).filterDate(start, end).filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20)).map(maskS2clouds).mean().clip(roi));var image = img.select('B2');
var image = image.addBands([img.select('B3'), img.select('B4'), img.select('B5'),img.select('B6'), img.select('B7'), img.select('B8'),img.select('B9')]); // sampling
var training = image.sample({region: roi,scale: scale,numPixels: numpixels
});// select method
var clusterer = ee.Clusterer.wekaKMeans(classes).train(training);var result = image.cluster(clusterer);Map.centerObject(roi, 11);
Map.addLayer(image.clip(roi), {bands: ["B4", "B3", "B2"], min:0, max:0.25}, "raw_img");
Map.addLayer(result.randomVisualizer(), {}, 'clusters')相关文章:
【GEE】基于GEE进行非监督学习
1 简介与摘要 之前写了多季节叠加的监督学习,所以这次简单写一个非监督学习吧。。 这次为了简单明了,就不整那么多虚的了,在这里我不叠图层了,有需要的可以参考前一篇博客自己添加输入的图层。 2 制作输入影像 首先,…...
多视图聚类的论文阅读(一)
当聚类的方式使用的是某一类预定义好的相似性度量时, 会出现如下情况: 数据聚类方面取得了成功,但它们通常依赖于预定义的相似性度量,而这些度量受原始方法的影响:当输入维数相对较高时,往往是无效的。 1. Deep Mult…...
K-Means算法进行分类
已知数据集D中有9个数据点,分别是(1,2),(2,3), (2,1), (3,1),(2,4),(3,5),(4,3),(1,5),(4,2)。采用K-Means算法进行聚类,k2,设初始中心点为(1.1,2.2),(2.3,3.…...
深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv 计算机竞赛
文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 *…...
网络协议入门 笔记一
一、服务器和客户端及java的概念 JVM (Java Virtual Machine) : Java虚拟机,Java的跨平台:一次编译,到处运行,编译生成跟平台无关的字节码文件 (class文件),由对应平台的JVM解析字节码为机器指令 (010101)。 如下图所示࿰…...
系列十一、你平时工作用过的JVM常用基本配置参数有哪些?
一、常用参数 1.1、-Xms 功能:初始内存大小,默认为物理内存的1/64,等价于 -XX:InitialHeapSize 1.2、-Xmx 功能:最大分配内存,默认为物理内存的1/4,等价于 -XX:MaxHeapSize 1.3、-Xss 功能:设置…...
如何为视频添加旁白,有哪些操作技巧?
简而言之,画外音是视频的旁白,在教程视频中添加旁白可以使视频更加有趣,并向观看者传达更多的信息。 如果您是视频制作人,想要为视频添加旁白,可阅读以下文章,可以帮助您更好地进行配音。 制作配音的技巧…...
如何简单挖掘公益SRC?
目录 1、寻找漏洞 1)谷歌语法 2)fofa 2、挖掘漏洞 3、提交报告 第一步:“标题”和“厂商信息”和“所属域名” 第二步:其它内容 第三步:复现步骤 0、IP域名归属证明 1、漏洞页 2、该干啥 3、注入的结果 4、上榜吉时 时间&#x…...
PhpStorm激活
https://www.lmcc.top/articles/485.html 可用: 1、打开https://search.censys.io/ 2、搜索:services.http.response.headers.location: account.jetbrains.com/fls-auth 3、可以看到出现了很多对应跳转到 jetbrains 的服务器IP和网址,我们随便点击一…...
mysql 怎么做定时备份 / mysql 备份 / sql文件导出
在MySQL数据库中,你可以使用不同的方法来定时备份数据库。以下是其中的一种方法,使用Linux系统中的cron任务和mysqldump命令来创建定时备份: 创建备份脚本: 首先,创建一个脚本文件,比如backup_script.sh&am…...
416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
【软件安装】Centos系统中安装docker容器(华为云HECS云耀服务器)
这篇文章,主要介绍Centos系统中安装docker容器(华为云HECS云耀服务器)。 目录 一、安装docker 1.1、卸载旧版本docker 1.2、更新repo镜像 1.3、安装依赖包 1.4、添加docker-ce镜像 1.5、安装docker-ce 1.6、查看docker安装版本 1.7、…...
GitHub Proxy 快速下载github文件
https://ghproxy.com/ 解决 经常被墙 下载缓慢 访问不了...
大厂秋招真题【栈】Bilibili2019秋招-简单表达式求值
文章目录 题目描述与示例题目描述输入描述输出描述示例输入输出 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 给定一个合法的表达式字符串,其中只包含非负整数、加法、减法以及乘法符号(不…...
(一)RISC-V 指令集及寄存器介绍
1. RISC-V指令集介绍 RISC-V 念作 “risk-five”,代表着 Berkeley 所研发的第五代精简指令集。 该项目 2010 年始于加州大学伯克利(Berkeley)分校,希望选择一款 ISA用于科研和教学。经过前期多年的研究和选型,最终决定…...
二十三种设计模式:解密职责链模式-购物优惠活动的设计艺术
在购物领域,为了吸引和激励消费者,商家常常会推出各种优惠活动,比如满减、打折、赠品等。然而,这些优惠活动的处理逻辑通常较为复杂,需要根据购物订单的条件进行判断和处理。本文将深入探讨职责链模式的实现方式&#…...
竞赛 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉
文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…...
unexpected end of stream on
SpringCloud使用FeignClient调用第三方接口报错unexpected end of stream on ; 解决方法: 1.检查服务器端口是否被占用 lsof -i:端口; 2.nacos添加超时配置:...
【微信小程序篇】- 组件
最近自己在尝试使用AIGC写一个小程序,页面、样式、包括交互函数AIGC都能够帮我完成(不过这里有一点问题AIGC的上下文关联性还是有限制,会经常出现对于需求理解跑偏情况,需要不断的重复强调,并纠正错误,才能得到你想要的…...
使用Sqoop命令从Oracle同步数据到Hive,修复数据乱码 %0A的问题
一、创建一张Hive测试表 create table test_oracle_hive(id_code string,phone_code string,status string,create_time string ) partitioned by(partition_date string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ,; 创建分区字段partition_date,…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
