ArcGIS Pro2.5深度学习操作Unet详解

本篇文章以Unet模型为例,进行像素分类的推理使用,进行一些输入和输出的简单介绍。

我们仍然以官方的棕榈树为例,使用像素分类进行,棕榈树识别。

1、标注对象以供深度学习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
标注样本的时候:主要是键和值的关系,后续也会在emd中看到相关的信息。

2、导出训练数据进行深度学习

可以使用ArcGIS Pro和ArcGIS Enterprise中可用的“导出深度学习训练数据”工具来导出训练数据。 对于此示例,我们在ArcGIS Pro中使用400px的“ chip_size”和30cm的“ cell_size”准备了“分类图块”格式的训练数据。

2.1 栅格化目标对象(Polgon to Raster)

将面要素转换为栅格数据集。
在这里插入图片描述

在Value field我们选择的是矢量数据的属性表,我们可以选择Classvalue字段,当然这个不是必须唯一的,我们也可以选择object,这个是唯一的识别ID,这个是我们在标注样本的时候创建的键值对应的那个数值。
在这里插入图片描述
关于面转栅格工具的使用方法,如下:

可以将包含面要素的任意要素类(地理数据库、shapefile 或 coverage)转换为栅格数据集。

输入字段类型决定输出栅格的类型。如果字段是整型,则输出栅格也是整型;如果字段是浮点型,则输出栅格也是浮点型。

如果输入字段包含字符串值,则输出栅格将包含一个整数值字段和一个字符串字段。

但是,如果字段为浮点型并且值以整数形式表示,则输出栅格将为整型。

像元大小可以通过数值进行定义,也可以从现有栅格数据集获取。如果没有将像元大小明确指定为参数值,则将从像元大小环境获取相应值(如果已指定环境)。如果参数像元大小和环境像元大小均未指定,但是设置了捕捉栅格环境,则将使用捕捉栅格的像元大小。如果未指定任何内容,则像元大小会通过使用范围的宽度或高度中的较小值除以 250 来计算,其中范围位于在环境中指定的输出坐标系内。

如果使用数值指定像元大小,则工具会直接将其用于输出栅格。

如果使用栅格数据集指定像元大小,则该参数将显示栅格数据集的路径而不是像元大小的值。如果数据集的空间参考与输出空间参考相同,则栅格数据集的像元大小将直接用于分析。如果数据集的空间参考不同,则将基于所选的像元大小投影方法进行投影。

此工具与栅格转面工具互为补充,后者是将栅格转换为面要素类。

当输出像元中存在多个要素时,此工具可提供比要素转栅格工具更全面的像元值分配控制。

如果输出栅格中出现条纹图案或彩色条纹,则请使用检查几何和修复几何工具更正输入要素数据。

转换重叠面时,您可能想要将具有最小面积的面要素分配给像元。为此,比较容易的方法是,向输入要素类另外添加一个字段,并计算各面的面积倒数;然后在运行此工具时使用此字段作为优先级字段。

某些栅格存储环境可能适用于此工具。

那么我们看看转换后的数据是:

在这里插入图片描述

2.2重新分类栅格化的建筑标记(Reclassify)

使用“重分类栅格”工具将所有NoData值转换为“ 0”,将其他值转换为“ 1”。 选择输入栅格后,单击“分类”并仅设置一个类别。 对于具有“有效数据范围”的类,将“新数据”值设置为“ 0”,对于“无数据”,将“新数据”值设置为“ 0”。

这里需要把数据进行处理一下:

在这里插入图片描述

“栅格重分类”工具提供了多种可对输入像元值进行重分类或将输入像元值更改为替代值的方法。

对数据进行重分类的常见原因是为了达到以下目的:

根据新信息替换值。
将某些值归为一组。
将值重分类为常用等级。
将特定值设置为 NoData,或将 NoData 像元设置为值。

在这里插入图片描述
导出后数据是这样的:

在这里插入图片描述

注:此处我们为什么需要把矢量样本栅格化呢,因为深度学习的像元分类,需要对训练的样本全部进行标注,然后进行制作class tiles样本; 进而进行训练深度学习。

2.3 转换为像素类型为"8位无符号"的主题栅格

查看数据属性:
在这里插入图片描述

位深度对照表:
1_BIT —1 位无符号整数。值可以为 0 或 1。
2_BIT —2 位无符号整数。支持的值为 0 到 3。
4_BIT —4 位无符号整数。支持的值为 0 到 15。
8_BIT_UNSIGNED —8 位无符号数据类型。支持的值为 0 到 255。
8_BIT_SIGNED —8 位有符号数据类型。支持的值为 -128 到 127。
16_BIT_UNSIGNED —16 位无符号数据类型。取值范围为 0 到 65,535。
16_BIT_SIGNED —16 位有符号数据类型。取值范围为 -32,768 到 32,767。
32_BIT_UNSIGNED —32 位无符号数据类型。取值范围为 0 到 4,294,967,295。
32_BIT_SIGNED —32 位有符号数据类型。取值范围为 -2,147,483,648 到 2,147,483,647。
32_BIT_FLOAT —支持小数的 32 位数据类型。
64_BIT —支持小数的 64 位数据类型。
注:关于 像元位深度介绍参考

在这里插入图片描述

在这里插入图片描述

2.4导出训练数据

在这里插入图片描述
在这里插入图片描述
导出的结果为:

在这里插入图片描述
其中images和labels中存放的是样本导出的切片的标注。
此次输出的有第一个emd,但是这个里面只有样本的一些信息,具体的模型和配置信息还达不到我们的要求,我们一起打开看看。

在这里插入图片描述
此emd中会有一些基本的信息,但是还是无法完全满足我们的要求。

3、训练深度学习模型

在这里插入图片描述
出现这样,说明正在训练模型:
在这里插入图片描述

4、使用像素分类检测对象

对于输入栅格,选择Kolovai Palms。
对于“输出检测到的对象”,键入CoconutTrees。
对于模型定义,请导航到CoconutTrees.emd(下载的课程数据位于C:\ DeepLearning \ Data中)或使用从Jupyter Notebook中保存的模型创建的.emd文件。

在这里插入图片描述

最终我们输出的要素类,即是我们深度学习自己学习所导出的对象信息,即可在pro中查看我们的输出对象。

注:由于自己的电脑限制,只选取少量的样本进行训练学习,如果有条件的话,可以选取多的样本数量,以及控制batch_size的数量进行对象识别。

那么关于后处理,各位可以根据自己的需要进行一些modelbulider的建模处理等!!!

猜你喜欢

转载自blog.csdn.net/weixin_40625478/article/details/106896636