若内容图片加载失败,请联系博主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.6、0和1。单击运行。
无论是在 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米(线性单位)。
结果用于描绘每棵椰子树树顶的位置和一般形状。
在内容窗口中,关闭VARI、CoconutTrees以及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。
此时地图显示了影像中每棵椰子树的位置、健康情况和模型置信度。
保存工程。