若内容图片加载失败,请联系博主qq624633573

1、内容梳理

对植被的健康状况进行清查和评估,需要花费大量的时间和劳动力。为简化这个过程,这一次,我们使用深度学习模型来识别树木,根据植被绿度来识别它的健康状况。

  • 首先,需要获得具有较高的空间和光谱分辨率的影像来识别树木;
  • 其次,创建训练样本并转换为可供深度学习模型使用的格式;
  • 最后,根据检测结果评估植被健康状况

我们有哪些数据:

2、创建训练样本

2.1 获取数据

下载深度学习文件并将其解压缩到 C: 盘。

地址:https://pan.baidu.com/s/1sLf1xWhkyfmE3RqkFa3iKQ(暗号:0e0b)

注:路径须为 C:\DeepLearning\Data,否则稍后引用此路径的文件将无法使用。

2.2 查看数据

  1. 启动 ArcGIS Pro。登录获得许可的 ArcGIS 帐户。

注:没有 ArcGIS Pro 或 ArcGIS 帐户,可以注册 ArcGIS 免费试用版。

    2.新建-地图

3.将工程命名为 CoconutHealth。保存到所选位置,单击确定

4.在地图选项卡的图层组中,单击添加数据

5.浏览至影像所在位置,选择 .tif 文件,确认添加。并重命名为Kolovai Palms。

观察:影像中有大量椰子树。如果通过字段单独计算,或视觉检查影像,需要花费数天的时间。使用深度学习模型的方法之前,我们需要创建一小部分椰子树的样本来训练模型。

6.首先,创建自定义地图显示,以便快速放大影像的不同区域。在地图窗口的底部,单击地图比例箭头并选择自定义

7.在比例属性窗口中,确保标准比例选项卡处于选中状态。在比例框中,输入 1:500。单击添加并单击确定。

8.在功能区上地图选项卡的查询组中,单击定位

9.转到定位搜索框,粘贴下列坐标,然后按 Enter 键:175.3458501°W 21.0901350°S

字母A用以标记坐标的位置。单击地图比例列表并选择 1:500

10.在功能区上,单击地图选项卡导航组中的书签。在菜单中,单击新建书签

11.在创建书签窗口中,命名为 Northwest palms 并单击确定

12.以 1:500 的比例为下列坐标创建书签:

13.保存工程。

坐标

书签名称

175.3413074°W 21.0949798°S

Central east palms

175.3479054°W 21.1018014°S

Southwest palms

175.3409475°W 21.1035265°S

Southeast palms

175.3479457°W 21.0959058°S

Central west palms

2.3 创建训练方案

在使用训练深度学习模型或任何影像分类模型的过程中,创建良好的训练样本至关重要。为了“教会”模型椰子树可能具有的大小、形状和光谱特征,我们需要为多建立一些训练样本。

  1. 单击功能区上的影像选项卡。

小贴士:ArcGIS Pro 会基于上下文工作,所以只有在内容窗口中选择了相关数据,才能使用某些工具和选项卡。要激活影像分析工具,必须选择栅格图层。

内容窗口中,确保已选中 Kolovai Palms。可使用影像分类测量工具组中的工具,激活新的选项卡:“栅格图层”以及“外观”和“数据”。

2.在影像分类组中,单击分类工具并选择训练样本管理器

训练样本管理器窗口默认显示国家土地覆被数据库(NLCD2011) 的分类方案。我们将创建一个方案,其中只有一类,就是我们感兴趣的椰子树。

3.在影像分类窗口中,单击创建新方案

移除 NLCD2011 方案。重命名新建方案并向其中添加一个类。

4.右键新建方案并选择编辑属性名称输入 Coconut Palms。单击保存

5.选择 Coconut Palms 方案后,单击添加新类按钮。

注:如果未看到该按钮,尝试展开窗口或单击下拉箭头以查看更多选项。

  1. 添加新类窗口中,设置以下参数:

    • 名称:输入 Palm。
    • :输入 1。
    • 颜色:选择火星红
  2. 单击确定

接下来使用 Palm 类创建要素,在每个书签中训练深度学习模型。

2.4 创建训练样本

  1. 书签中选择 Northwest palms 书签。
  2. 训练样本管理器窗口中,选择 Palm 类,单击圆形工具来绘制每棵椰子树。

3.在地图上单击椰子树的中心并在单棵树周围绘制圆。

4.在地图显示中的每棵树周围绘制圆。完成后,将记录大约 100 个样本。

5.为每个书签上的每棵树创建训练样本。

注:训练模型时使用的样本越多,模型执行分类的效果越好。

数字化训练样本过程可能比较耗时,但在这个过程中我们能够获得大量样本。我们为模型提供的样本越多,返回的结果就越准确。一切都是值得的!

6.样本创建完成后,保存至默认地理数据库 CoconutHealth.gdb

7.将要素类命名为 PalmTraining 并单击保存

  1. 在功能区上单击分析选项卡。在地理处理组中单击工具。搜索并打开导出训练数据进行深度学习工具。
  2. 导出训练数据进行深度学习工具中,输入以下参数并单击运行
    • 对于输入栅格,选择 Kolovai Palms
    • 对于输出文件夹,在 CoconutHealth 文件夹中创建一个名为 ImageChips 的文件夹,并单击确定
    • 对于输入要素类或分类栅格,选择 PalmTraining
    • 对于类值字段,选择 Classvalue

这是唯一的 ID 字段,用于表示训练样本数据集中的不同类。训练样本数据中只有一个类的类值为 1,该类值已由您在训练样本管理器中指定。由于您已创建训练样本面,而未使用点,因此无需指定缓冲半径值。

该工具完成后,刷新目录窗口中的 ImageChips 文件夹,就会看到其中填充有影像片样本和元数据。

8.保存工程。

在本节中,我们创建了训练样本,并将其导出为与深度学习模型兼容的格式来进行训练。在下一节中,我们将识别种植园的所有树木。

3、使用深度学习模型检测椰子树

在上一节中,我们创建了椰子树的训练样本,这些训练样本可用于通过深度学习框架(如 TensorFlow、Keras 或 CNTK)训练模型。借助 ArcGIS Pro 中的深度学习工具,我们可以在外部深度学习模型中训练数据,使用模型结果对影像进行分类。因此在我们的课程数据中已经包含了用于检测的训练模型。

  1. 克隆默认环境
  2. 在工程选项卡单击Python选项卡,在管理环境中克隆默认值,并选中克隆环境来激活该环境,该环境在重启Pro之后生效。
  3. 如有必要,安装 TensorFlow。

要运行该工具,需要安装 TensorFlow 框架。可在 ArcGIS Pro 中通过 Python 环境或 Python 命令提示符来完成。

注:要确认是否已安装 TensorFlow,请打开 Python 后台并在 Python 软件包管理程序中找到该软件包。

下面演示运行Python命令提示符添加模块的方式:

安装ArcGIS Pro时,已下载了Python命令提示符,若环境中没有tensorflow的模块包,打开Python Command Prompt,运行以下命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow

3.2准备分析

使用深度学习检测对象工具依赖于TensorFlow中的算法和推断函数。

1.在功能区视图选项卡单击目录窗口。浏览到CoconutHealth 文件夹中创建的 ImageChips 文件夹。右键复制路径

2.打开文件资源管理器并粘贴路径以导航到 ImageChips 文件夹。

已通过导出训练数据进行深度学习工具创建了:

两个文件夹、两个文本文件、一个 .json 文件和一个 .emd 文件。

esri_model_definition.emd 文件是一个模板,将由训练模型的数据科学家填写,其中包含用于训练的影像的深度学习框架、训练模型的文件路径、类名、模型类型和影像规范等信息。.emd 文件是经过训练的模型与 ArcGIS Pro 之间的桥梁。

3.在文本编辑器中打开下载好的 TensorFlowCoconutTrees.emd 文件。

其中包含 TensorFlow 框架、ObjectDetection 模型配置以及影像规范。

3.3 椰子树检测

从影像中提取要素时,大部分工作是准备数据、创建训练样本和训练模型。现在需要使用经过训练的模型来检测影像中的椰子树。

  1. 地理处理窗口中,搜索并打开使用深度学习检测对象工具。输入以下参数:

    • 输入栅格:选择 Kolovai Palms
    • 输出检测对象:输入 CoconutTrees。
    • 模型定义:输入 TensorFlowCoconutTrees.emd(与 C:\DeepLearning\Data 中的课程数据一起下载)。
    • 选中非极大值抑制的复选框。
    • 最大重叠比:输入 0.4。

score_threshold 参数是置信度阈值 - 将对象标记为椰子树时的可接受置信度是多少? 可以调整该数字以获得所需精度。

小编有话说:在卷积神经网络建模中执行影像卷积时,实际上是收缩了数据,与内部像素相比,在分析过程中影像边缘的像素使用得更少。默认情况下,填充参数为 0,当填充参数为1时意味着像素的附加边界已添加到影像的外边缘,且均具有值 0。由此可以减少由有效边缘像素和收缩带来的信息丢失。你也可以将参数更改为 1 或 2 来查看效果。

batch_size 参数定义了在每次训练迭代中用于训练网络的样本数。

例如,有1,000个训练样本且批量大小为100,则前100个训练样本将用于训练神经网络。在下一次迭代中,将使用接下来的 100 个样本,依此类推。如果是在 GPU 上运行 TensorFlow,请随意将批量大小增加到 10、20 或更多来查看结果。如果是在 CPU 上运行 TensorFlow,请将批量大小设置为 1。

  1. 将影像中的某处以 1:500 的比例放大。
  2. 单击使用深度学习检测对象工具上的环境选项卡。将范围更改为当前显示范围。如有必要,请将阈值填充批量大小得分参数分别更改为 0.60 和 1
  3. 单击运行

无论是在 CPU、GPU 还是 RAM 上运行,该工具都可能需要 20 分钟到 40 分钟才能运行,具体取决于硬件情况。

4.保存工程。

4. 评估植被健康情况

在上一节中,我们使用深度学习模型从影像中提取了椰子树。本节将通过计算植被健康指数来评估植被健康情况。

为评估植被健康情况,我们需要计算可视化大气阻抗指数 (VARI),该指数可仅用可见光波长的反射率值间接测量叶面积指数 (LAI) 和植被覆盖度 (VF):

(Rg - Rr) / (Rg + Rr - R(Rg - Rb))

其中,Rr、Rg 和 Rb 分别是红光、绿光和蓝光波段的反射率值。

注:通常情况下,我们可以使用NDVI(归一化插值植被指数)来评估植被健康情况,但我们下载的影像包含三个可见光波段,所以用 VARI 作为替代。

4.1 计算 VARI

注:使用波段算数-栅格函数计算VARI比地理处理工具要快,因为它们无需创建新的栅格数据集,而是在平移和缩放的同时对像元执行实时分析。

  1. 单击功能区上的影像选项卡。在分析组中,单击栅格函数
  2. 栅格函数窗口中,搜索并选择波段算术栅格函数。

3.在波段算术属性函数中,设置以下参数,并单击创建新图层

  • 栅格:选择 Kolovai Palms 栅格图层。
  • 方法:选择 VARI
  • 波段指数:输入 1 2 3。

VARI 图层将添加到内容窗口,命名为 Band Arithmetic_Kolovai Palms。确保在内容窗口中为选中状态。

4.在外观选项卡渲染组中,选择拉伸类型下拉菜单,并选择标准差

5.在内容窗口中,将 Band Arithmetic_Kolovai Palms 重命名为 VARI。

4.2 将 VARI 提取到 Coconut Palms

了解每棵树的平均 VARI。并对其进行符号化,以显示哪些树是健康的,哪些树需要保养。首先要将面要素转换为圆圈,以表示椰子树。

  1. 地理处理窗口中,搜索并打开要素转点工具。

    • 输入要素:选择 CoconutTrees 图层。
    • 输出要素类:输入 CoconutTrees_Points。

在每个检测到的面的质心,有一个点要素类。

  1. 窗口中,搜索并打开缓冲区工具。
  2. 指定以下参数,然后单击运行
    • 输入要素: CoconutTrees_Points
    • 输出要素类: PalmTreesBuffer
    • 距离: 3 线性单位)。

结果用于描绘每棵椰子树树顶的位置和一般形状。

内容窗口中,关闭 VARICoconutTrees 以及 CoconutTrees_Points 图层。接下来提取每个面的平均 VARI 值。

  1. 地理处理窗口中,搜索并打开以表格显示分区统计工具。
  2. 以表格显示分区统计工具中,输入以下参数并单击运行
    • 输入栅格或要素区域数据: PalmTreesBuffer
    • 区域字段: ORIG_FID
    • 输入值栅格: VARI
    • 输出表: MeanVARI_per_Palm。
    • 在计算中忽略 NoData
    • 统计类型平均值

区域字段设置为 ORIG_FID 可以确保单独获取每棵树的统计数据。此属性是来自原始 CoconutTrees 图层的唯一 ID。

输出表将添加到内容窗口。将此表连接到 PalmTreesBuffer 图层,得到一个包含每棵检测到的椰子树的置信度得分和平均 VARI 的要素类。

  1. 地理处理窗口中,搜索并打开连接字段工具。
  2. 连接字段工具中,输入以下参数并单击运行
    • 对于输入表,选择 PalmTreesBuffer
    • 对于输入连接字段,选择 ORIG_FID
    • 对于连接表,选择 MeanVARI_per_Palm
    • 对于输出连接字段,选择 ORIG_FID
    • 对于连接字段,选择 MEAN

  1. 内容窗口中,将 PalmTreesBuffer 重命名为 PalmTreesVARI。
  2. 外观选项卡绘图组中,单击符号系统。对于主符号系统,选择分级色彩

  1. 字段:选择 MEAN
  2. 方法:选择自然间断点分级法 (Jenks),并将设置为 4
  3. 配色方案,单击下拉菜单选中显示所有显示名称。选择--绿(4 类)

  1. 类别下,单击每个标注,并按顺序依次重命名为:Needs Inspection、Declining Health、Moderate 和 Healthy。

此时地图显示了影像中每棵椰子树的位置、健康情况和模型置信度。

  1. 保存工程。

ArcGIS Pro基于遥感影像使用深度学习地物识别评估植被健康情况(教程)相关推荐

  1. 基于PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化

    我国高分辨率对地观测系统重大专项已全面启动,高空间.高光谱.高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源.未来10年全球每天获取的观测 ...

  2. PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化

    我国高分辨率对地观测系统重大专项已全面启动,高空间.高光谱.高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源.未来10年全球每天获取的观测 ...

  3. 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割

    随着无人机自动化能力的逐步升级,它被广泛的应用于多种领域,如航拍.农业.植保.灾难评估.救援.测绘.电力巡检等.但同时由于无人机飞行高度低.获取目标类型多.以及环境复杂等因素使得对无人机获取的数据处理 ...

  4. 当医学影像遇见深度学习,MIDL 2020 论文征稿

    点击我爱计算机视觉标星,更快获取CVML新技术 MIDL 2020 (Medical Imaging with Deep Learning 2020), 将于2020年7月6-8日在加拿大蒙特利尔开幕 ...

  5. 基于遥感影像及轨迹数据融合的地图自动化生成器

    自动化的地图生成对于城市服务及基于位置服务非常重要,现有的工作研究主要利用遥感影像或可以充分反映地图路网情况的车辆轨迹数据生成地图,数据源较为单一,如果能将遥感影像数据及轨迹数据融合起来,地图生成的质 ...

  6. 基于NVIDIA GPUs的深度学习训练新优化

    基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...

  7. 值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(下)

    作者 | 黄浴 来源 | 转载自知乎专栏自动驾驶的挑战和发展 [导读]在近日发布的<值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(上)>一文中,作者介绍了一部分各大公司和机构基于 ...

  8. 第三十五课.基于贝叶斯的深度学习

    目录 贝叶斯公式 基础问题 贝叶斯深度学习与深度学习的区别 贝叶斯神经网络与贝叶斯网络 贝叶斯神经网络的推理与学习 前向计算 学习 贝叶斯公式 首先回顾贝叶斯公式:p(z∣x)=p(x,z)p(x)= ...

  9. R基于H2O包构建深度学习模型实战

    R基于H2O包构建深度学习模型实战 目录 R基于H2O包构建深度学习模型实战 #案例分析

最新文章

  1. 郑州大学北校区oracle考试题,2019郑州大学软件学院oracle期末考试试题及答案(一)...
  2. windows系统numpy的下载与安装教程
  3. struts2之OGNL用法
  4. 路由器漏洞:***展示如何攻陷百万台
  5. JDBC(Java Data Base Connectivity,java数据库连接)
  6. java习题-练习1
  7. Infinite Fraction Path UVALive - 8207
  8. C++:17---函数指针
  9. Flex 4(Hero)对应Flex 3 容器方法
  10. Java导入导出功能
  11. H3C认证网络工程师
  12. 拍案惊奇——软件调试实战训练营
  13. 日增进:Oracle dump文件的导入导出
  14. 基于java的滑雪场学具租赁管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  15. ERP、MES、APS在生产排程上的区别?
  16. 关于单应性矩阵的理解:Homography matrix for dummies
  17. 安装 office2007时出现:1706的错误-解决方案
  18. Java实现微信的申请退款功能
  19. Windows下用docker打包镜像
  20. 【全源码及文档】基于JSP实现的影视创作论坛系统

热门文章

  1. 在word中添加mendeley插件
  2. 原知因制药将亮相第五届进博会,解锁青春逆龄密码
  3. 求和计算机教案,小学信息技术《自动求和》教案
  4. 大一学生WEB前端静态网页——旅游网页设计与实现(15页面)
  5. Ubuntu-Touch-02:开始刷机
  6. 概率统计(一)随机事件与随机变量
  7. 动画舞蹈html5,纯CSS3动画:一棵跳舞的树
  8. 年轻人,看你骨骼惊奇,我这有一份来自阿里的Android开发学习指南,不仅能让你月入5w,度过中年危机都不是问题!
  9. 共享开源技术,共建开放生态丨平凯星辰余梦杰出席 2022 世界互联网大会开源论坛圆桌对话
  10. android 布局 注释,安卓布局属性代码中文注解