Google Earth Engine(GEE)深度学习入门教程- 环境搭建篇

本人的研究方向是基于深度学习方法的作物遥感识别。经查阅目前的相关教程资料后,发现深度学习的GEE教程几乎没有,所以开始动笔写下此片文章,给后面研究这个方向的人提供一点帮助吧。

教程的背景

为什么要写这份教程?

OIP

一、深度学习越来越重要了

  1. 数据爆炸:随着互联网的普及和各种传感器技术的发展,我们产生的数据量呈指数级增长。深度学习是处理大规模数据的有效工具,可以从海量数据中学习并提取有用的信息和模式。
  2. 计算能力的提升:随着计算机硬件和算力的不断提升,如图形处理器(GPU)和专用深度学习芯片(如TPU),我们能够更快、更高效地训练和运行深度学习模型。这使得深度学习在实践中更加可行和实用。
  3. 算法的发展:深度学习算法的不断发展和改进也是其重要性增加的原因之一。例如,卷积神经网络(CNN)在图像处理领域的成功,递归神经网络(RNN)在自然语言处理领域的应用等。这些算法的创新使得深度学习能够解决更加复杂和抽象的问题。目前,基于Transformer的ChatGPT语言大模型已经确确实实改变了我们的生活。
  4. 应用领域的拓展:深度学习不仅在计算机视觉和自然语言处理等传统领域取得了巨大成功,还在许多其他领域得到了广泛应用。例如,医疗诊断、金融风险评估、智能交通、地理信息处理等。深度学习的广泛应用使得它成为各行各业的重要工具。

image-20240102150530822

二、Google Earth Engine(GEE)是重要的遥感信息处理工具

传统的遥感影像处理工具,如ENVI、Erdas Imagine、ArcGIS等,在传统遥感数据处理领域得到广泛应用。Google Earth Engine是由Google开发的,于2010年发布。)其是一个强大的云计算平台,旨在支持大规模地理空间数据的存储、处理、分析和可视化。它提供了丰富的遥感数据集和分析工具,使用户能够在云端高效地进行地理信息处理。

Google Earth Engine (GEE) 相较于传统工具有以下几个优势:

  1. 大规模数据处理能力:GEE可以处理大量的地理空间数据,包括遥感影像、地形数据、气象数据等。它利用云计算技术,将数据存储在云端,并提供高性能的计算资源,使用户能够快速处理大规模数据集。
  2. 丰富的数据集:GEE提供了全球范围内的多种类型的遥感数据集,包括高分辨率影像、地表温度、降雨数据等。这些数据集可以用于各种地理信息处理任务,如图像分类、时间序列分析等。
  3. 编程接口和算法库:GEE提供了基于JavaScriptPython的编程接口,使用户能够使用自己熟悉的编程语言进行地理信息处理。此外,GEE还提供了丰富的算法库,包括图像处理、空间分析、机器学习等领域的算法,方便用户进行各种分析和模型构建。
  4. 可视化和共享功能:GEE提供了强大的可视化工具,用户可以将处理结果以地图、图表等形式进行展示。此外,用户还可以将自己的数据、代码和分析结果共享给其他用户,促进合作和知识共享。
  5. 强大的社区支持:GEE拥有庞大的用户社区,用户可以在社区中获取帮助、分享经验和协作开发。此外,GEE还提供了丰富的文档、教程和示例代码,帮助用户快速上手和解决问题。

总之,GEE是一个功能强大、易于使用的地理信息处理平台,为我们提供了丰富的数据集、分析工具和社区支持,帮助我们高效地进行地理信息处理和分析。

三、Google Earth Engine(GEE)的深度学习教程很少

GEE的官方教程中多是机器学习的教程和案例代码,有关深度学习的教程和代码较少,只有如下几个:

  • 托管深度学习模型进行预测

  • Tensorflow 和 Vertex AI 示例

  • TFRecord数据格式

但其仅有的教程在有些细节上解释的不够清楚,给初学者带来很多麻烦。

中文互联网上教程也不多,寥寥几篇,内容也不够丰富和全面。目前检索到的教程如下:

  • Google Earth Engine(Tensorflow深度学习) - 知乎 (zhihu.com)
  • Google Earth Engine(GEE)—TensorFlow支持深度学习等高级机器学习方法(非免费项目)

概述

image-20240102163817072

使用GEE平台做深度学习,首先我们要明白一个基础问题,GEE云平台本身不支持深度学习模型的训练,它仅支持经典机器学习算法和提供tensorflow深度模型预测的接口,我们应该将其视为一个数据预处理工具

GEE使用深度学习方法做研究的基础流程是:

在线模型训练

  1. GEE预处理遥感数据导出到谷歌云存储(付费)里。
  2. 使用Colab Notebooks 和Vertex AI (谷歌AI云平台(付费))交互,访问谷歌云存储中的数据,租用google的TPU,基于tensorflow框架在线训练深度学习模型。
  3. 上传训练好的模型,在GEE端进行在线模型推理,得到大范围的推理结果。

本地模型训练

  1. GEE预处理遥感数据导出到谷歌云存储(付费)里。
  2. 下载数据到本地。
  3. 使用jupyter Notebooks 或pycharm读取数据,使用本地GPU,基于tensorflow框架在线训练深度学习模型。
  4. 上传训练好的模型,在GEE端进行模型推理,得到大范围的推理结果。或者在本地进行小范围的模型推理。

本教程是使用本地GPU进行模型训练,推理也是在本地进行的。GEE支持JS和python 2种客户端,本教程是使用的JS客户端。预计分为以下几个章节来撰写:

  1. 环境搭建篇
  2. GEE导出篇
  3. GEE预处理篇
  4. Python数据读入篇
  5. Python深度学习训练篇
  6. 官方教程解析篇

环境搭建篇

前置条件:GEE账号、GPU、本地python开发IDE、conda虚拟环境

所需条件:

  • 谷歌云存储(GCS)
  • tensorflow +keras+tensorboard

一、谷歌云存储(GCS)

Google Cloud Storage(GCS)是谷歌云平台(GCP)一部分, 这是一个云存储平台,旨在存储大型非结构化数据集。

我们需要在云存储创建储存桶,将GEE处理好的数据导出其中暂存。使用Python程序下载储存桶中的文件,保存本地。

1、购买付费的云存储服务

首先需要有一个谷歌账号,登录云平台,开始使用,每个新用户都免费获得 $300 赠金,在未来 90 天内试用 Google Cloud。但是账号认证需要付款信息验证,即绑定一张国外银行卡(不能使用中国银行卡、支付宝和微信付费)。

解决方案有两种:

  • 想办法在网络上找代理商注册一个虚拟国外银行卡(尝试失败了)
  • 找到一个有国外银行卡的同学或朋友,绑定他的(我最终采用的方法)

必须搞定这个账号,不然数据是无法导出保存的。

2、创建存储桶
image-20240102200750490

账号注册完成之后,应该需要创建一个项目,GCP中的一切都围绕着项目展开。 每个项目可以有多个存储桶,围绕它们构建Google Cloud Storage的架构。 每个存储桶可以包含任意数量的对象,可以是文件夹和/或文件。 创建存储桶时,会为其分配存储类别和地理位置。 这些设置可以在创建存储桶时指定,但以后不能更改。

存储桶具有特定的命名约定 ,必须严格遵守这些约定 ,否则GCP将不允许您创建存储桶。 存储桶名称在全球范围内是唯一的,因此需要以防止冲突的方式进行选择。 但是,删除的存储桶使用的名称可以重复使用。此外,将名称分配给存储桶后就无法更改。 如果要更改它,唯一的解决方案是使用所需名称创建一个新存储桶,将内容从前一个存储桶移动到新存储桶,然后删除前一个存储桶。

3、 Python GCS库安装

官方教程:Python client library | Google Cloud

为了方便下载云存储的文件,我们需要安装python对应的库

pip install google-cloud-storage

使用python程序访问储存桶文件需要对python客户端进行验证(即用户登录)

Google 的身份验证方法官方教程中提供了多种方法,我采用的方案是服务账号密钥,

如需创建服务账号密钥并将其提供给 ADC,请执行以下操作:

  1. 按照创建服务账号密钥中的说明,创建一个具有您的应用所需的角色的服务账号,并为该服务账号创建密钥。

    或者教程可参考【GoogleDriveApi】创建Google凭据(OAuth2和Service Account)_获其中的Service Account凭据创建,导出得到json格式的凭据。

    image-20240108121153804

  2. 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含凭据的 JSON 文件的路径。例如下图:

    image-20240108121513303

4、 Python GCS库测试

from google.cloud import storage
import os
# 实例化 Storage 客户端
client = storage.Client()

# 指定存储桶名称
bucket_name = 'yqs'
# 指定文件夹名称
folder_name = 'predict'
# 得到指定存储桶的引用
bucket = client.get_bucket(bucket_name)

# 列出存储桶中的所有对象
for blob in bucket.list_blobs(prefix=folder_name):
    print(blob.name)

如果可以正常打印的话代表你把这部分搞定了。

下面附上GCS的下载代码:

from google.cloud import storage
import os
def download_blob(bucket_name, source_blob_name, destination_file_name):
    """
    下载 GCS 存储桶中指定的文件。
    """
    # 初始化 GCS 客户端
    storage_client = storage.Client()

    # 获取指定的存储桶和文件
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(source_blob_name)

    # 下载文件
    blob.download_to_filename(destination_file_name)

    print(f"File {source_blob_name} has been downloaded to {destination_file_name}.")
def download_folder(bucket_name, folder_name, destination_folder):
    """
    下载 GCS 存储桶中指定文件夹下的所有文件。
    """
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)

    # 列出指定路径下的所有文件
    blobs = bucket.list_blobs(prefix=folder_name)
    for blob in blobs:
        # 获取文件名
        file_name = blob.name.split("/")[-1]
        # 设置过滤规则,例如非gz格式的不下载
        if file_name[-2:] != 'gz':
            continue
        # 检查目标文件夹中是否已经存在同名的文件,如果存在,则不再下载
        if os.path.isfile(f"{destination_folder}/{file_name}"):
            print(f"File {blob.name} already exists in {destination_folder}.")
        else:
            print(f"File {blob.name} is downloading to {destination_folder}/{file_name}.")
            blob.download_to_filename(f"{destination_folder}/{file_name}")
            print(f"File {blob.name} has been downloaded to {destination_folder}/{file_name}.")
# # 下载指定路径下的文件夹到本地文件夹
download_folder("yqs", "yangfangVal", "data/yangfang") 
# 下载指定路径下的文件到本地
#download_blob("yqs", "yangfangVal/eval_patches_g0.tfrecord.gz", "data/yangfang/eval_patches_g0.tfrecord.gz")

通过这段代码可以批量下载存储桶中的文件,而不需要手动在浏览器一个一个下载。

二、本地深度学习环境

首先罗列出所需下载的东西(window环境下):

  • 显卡支持:CUDA 、cuDNN
  • python虚拟环境:Anaconda
  • 深度学习底层框架:tensorflow-gpu
  • 高层框架:Keras
  • IDE:Jupyter Lab、Pycharm 或其他
  • 数据可视化:tensorboard

提供作者的一个硬件配置及软件版本参考:

项目内容
中央处理器Intel® Xeon® Gold 6248R CPU @ 3.00GHz
内存192GB
显卡NVIDIA Quadro P4000
操作系统Windows 10
CUDACuda10.4
IDEJupyter Lab 3.6
软件平台及框架Python3.9、Tensorflow2.10、Keras2.10

至于这些环境的安装教程,网络上已经有太多了,本文不赘述:

提供参考:

  • 机器学习:完整配置TensorFlow开发环境 - 知乎 (zhihu.com)

  • Anaconda 搭建 Tensorflow 2 开发环境 - 知乎 (zhihu.com)

  • JupyterLab最全详解,如果你还在使用Notebook,那你就out了! - 知乎 (zhihu.com)

  • JupyterLab TensorBoard Pro:功能完备的 TensorBoard 插件 (high-flyer.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302005.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop集群环境下HDFS实践编程过滤出所有后缀名不为“.abc”的文件时运行报错:java.net.ConnectException: 拒绝连接;

一、问题描述 搭建完Hadoop集群后,在Hadoop集群环境下运行HDFS实践编程使用Eclipse开发调试HDFS Java程序(文末有源码): 假设在目录“hdfs://localhost:9000/user/hadoop”下面有几个文件,分别是file1.txt、file2.tx…

PySimpleGUI主题窗口样式

说明 PySimpleGUI是一个基于Tthinter的简单GUI框架,可以作为python下跨平台的轻量级UI来使用。我看到示例代码里有设置主题的代码,所以找官方文档看了下,可以预览素有主题,方法是: import PySimpleGUI as sg sg.them…

微信公众号-订阅通知

第一步: 公众号需要实名认证,完成以后! 设置-开发里找到基本配置: 开发者ID(AppID):xxxxxxxxxxxxxxxxxxxxxxxxx 开发者密码(AppSecret):xxxxxxxxxxxxxxxxxxxxxxxxx 白名单IP也要填写上你的服务器IP哦! 第二步&am…

Hadoop-HA高可用

一、集群规划 二、HDFS高可用 官方地址 在opt目录下创建一个ha文件夹&#xff0c;将/opt/module/下的 hadoop-3.1.3拷贝到/opt/ha目录下&#xff08;记得删除data 和 log目录&#xff09; 配置core-site.xml hdfs-site.xml <configuration><!-- NameNode数据存…

【无标题】山姆奥特曼喊话AI创业者

这里写自定山姆奥特曼充满激情地向创业者们发出呼吁&#xff0c;他表示AI是一个可以媲美互联网早期机遇的巨大机会。与此相关的人士认为&#xff0c;现在是互联网和移动互联网创业者们行动起来的时候了&#xff01;他们应该全面拥抱大模型的应用层创业。第一波红利期在6-8个月内…

电子实验室设备:从零开始配置实验室(一)

本文译自 Electronics Lab Equipment: Kitting out a Lab from Scratch 随着多次国际迁徙以及在几家公司&#xff08;或其分支机构&#xff09;工作&#xff0c;尤其是在没有强大电子工程团队的情况下&#xff0c;我不得不为自己和客户设置多个电子实验室。那些计划进行内部测试…

Vue3+TS+Vite 构建自动导入开发环境

关注⬆️⬆️⬆️⬆️ 专栏后期更新更多前端内容 在一个使用 Vue 3、Vite 和 TypeScript 的项目中,配置 unplugin-auto-import 和 unplugin-vue-components 插件可以极大地提高开发效率,因为它们可以自动导入 Vue 相关的 API 和 Vue 组件,从而减少了手动导入的需要。 文章目…

【leetcode】力扣算法之有效的数独【中等难度】

题目描述 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&…

【Android Studio】创建第一个APP工程及生成APK安装包

&#x1f31f;博主领域&#xff1a;嵌入式领域&人工智能&软件开发 前言&#xff1a;本文详细介绍创建Android Studio第一个APP工程及打包生成APK安装包。 如下两个博客我记录了第一次创建项目时出现的问题&#xff0c;若你也遇见了同样的问题&#xff0c;可参考&#…

【Linux基础】Linux权限

目录 前言1.shell命令以及运行原理2.Linux权限的概念2.1什么是权限2.2权限的本质 3.Linux权限管理3.1文件访问者的分类&#xff08;人&#xff09;3.2文件类型和访问权限&#xff08;事物属性&#xff09;3.3文件权限值的表示方法3.4文件访问权限的相关设置方法a)chmodb)chownc…

GPDB - 高可用 - 流复制状态

GPDB - 高可用 - 流复制状态 GPDB的高可用基于流复制&#xff0c;通过FTS进行自动故障切换。自动故障切换需要根据primary-mirror流复制的各种状态进行判断。本节就聊聊primary-mirror流复制的各种状态。同样适用于PgSQL 1、WalSndState typedef enum WalSndState {WALSNDSTATE…

值得一试的国产效率神器

当谈到国产小众工作效率软件时&#xff0c;以下是我为您推荐的四款应用。它们可能不太被大众所熟知&#xff0c;但它们各自都有独特的功能和特点&#xff0c;可以帮助您提高工作效率。 首先是“有道云笔记”。作为一款国内知名的笔记应用&#xff0c;有道云笔记提供了强大的笔…

俄罗斯“沙虫”侵入乌克兰电信巨头Kyivstar内网长达数月

去年12月&#xff0c;乌克兰最大的电信运营商Kyivstar遭到了一次严重的网络攻击&#xff0c;约2400万用户受到了网络中断的影响。据乌克兰安全情报局网络负责人透露&#xff0c;此次攻击由俄罗斯黑客组织"沙虫"&#xff08;Sandworm&#xff09;所为。 该黑客组织成…

[DM8] 达梦8配置兼容Oracle

查看版本信息 select *&#xff0c;id_code from v$version; 查询解释&#xff1a; DM Database Server 64 V8 1-1-190-21.03.12-136419-ENT 64 版本位数标识&#xff0c;64表示为64位版本&#xff0c;无64则表示为32位版本 V8 大版本号&#xff0c;目前主要是V7、V8 1-1-190…

不用写一行代码!Python最强自动化神器!-palywright

不用写一行代码!Python最强自动化神器! 1、Playwright介绍 Playwright是一个由Microsoft开发的开源自动化测试工具,它可以用于测试Web应用程序。Playwright支持多种浏览器,包括Chrome、Firefox和WebKit,同时也支持多种编程语言,如JavaScript、TypeScript、Python和C#。 2…

【已解决】Pytorch RuntimeError: expected scalar type Double but found Float

本文作者&#xff1a; slience_me 文章目录 项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a; 项目场景&#xff1a; 在训练模型时候&#xff0c;将数据集输入到网络中去&#xff0c;在执行卷积nn.conv1d()的时候&#xff0c;报出此错误 问题描述 报错…

Taro+vue3 电影H5 选择座位的时候 判断当前的座位是否 旁边留空 或者中间座位留空

const onConfirm () > {const area_arr selectedSeat.value.map((item) > {return item.areaId;});const abc isRepeat(area_arr);if (!abc) {Taro.showToast({title: "请选择同一价格的座位&#xff0c;暂不支持跨区域选座~~",icon: "none",dura…

二叉树-遍历-单独精讲

遍历:遍历每个元素。 寻常遍历root只会指一次。 而二叉树遍历每个元素则会指三次。 中序遍历-节点的中序 void traveres(TreeNode* root){if(!root)return;traveres(root->left);cout << root->val << endl;traveres(root->right);}中序遍历亦叫节点的中…

安防视频云平台/可视化监控云平台ARM版EasyCVR无法下载录像文件,如何解决?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。GB28181视频监控/AI智能大数据视频分析EasyCVR平台已经广泛应用在工地…

Python办公自动化 – 对数据进行正则表达式匹配

Python办公自动化 – 对数据进行正则表达式匹配 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动化 – …