1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > ArcGIS Pro基于遥感影像使用深度学习地物识别评估植被健康情况(教程)

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

时间:2020-03-12 00:05:30

相关推荐

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

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

1、内容梳理

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

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

我们有哪些数据:

2、创建训练样本

2.1 获取数据

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

地址:/s/1sLf1xWhkyfmE3RqkFa3iKQ(暗号:0e0b)

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

2.2 查看数据

启动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.保存工程。

2.3 创建训练方案

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

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

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

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

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

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

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

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

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

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

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

添加新类窗口中,设置以下参数:名称:输入Palm。:输入1。颜色:选择火星红。单击确定

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

2.4 创建训练样本

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

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

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

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

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

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

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

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

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

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

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

8.保存工程。

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

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

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

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

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

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

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

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

pip install -i https://pypi.tuna./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 椰子树检测

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

地理处理窗口中,搜索并打开使用深度学习检测对象工具。输入以下参数:输入栅格:选择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:500 的比例放大。单击使用深度学习检测对象工具上的环境选项卡。将范围更改为当前显示范围。如有必要,请将阈值填充批量大小得分参数分别更改为0.601。单击运行

无论是在 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比地理处理工具要快,因为它们无需创建新的栅格数据集,而是在平移和缩放的同时对像元执行实时分析。

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

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。并对其进行符号化,以显示哪些树是健康的,哪些树需要保养。首先要将面要素转换为圆圈,以表示椰子树。

地理处理窗口中,搜索并打开要素转点工具。输入要素:选择CoconutTrees图层。输出要素类:输入CoconutTrees_Points。

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

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

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

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

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

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

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

地理处理窗口中,搜索并打开连接字段工具。在连接字段工具中,输入以下参数并单击运行: 对于输入表,选择PalmTreesBuffer。对于输入连接字段,选择ORIG_FID。对于连接表,选择MeanVARI_per_Palm。对于输出连接字段,选择ORIG_FID。对于连接字段,选择MEAN。在内容窗口中,将PalmTreesBuffer重命名为PalmTreesVARI。在外观选项卡绘图组中,单击符号系统。对于主符号系统,选择分级色彩字段:选择MEAN方法:选择自然间断点分级法(Jenks),并将设置为4配色方案,单击下拉菜单选中显示所有显示名称。选择--绿(4类)。在类别下,单击每个标注,并按顺序依次重命名为:Needs Inspection、Declining Health、Moderate和Healthy。

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

保存工程。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。