激光雷达是一种利用激光提供高程信息的光学遥感技术,可以更好地模拟电力线与周围区域之间的空间关系,从而辅助评估。使用 ArcGIS Pro 训练深度学习模型,以识别激光雷达点云中的电力线。 本文来自Esri官网,作者Jie Chang 和 Lindsay Weitz使用 ArcGIS Pro 3.1 进行测试,利用深度学习分类电力线,学习本教程大约需要1小时30分。
下载并浏览数据
运行深度学习模型之前,您需要检查您的计算机系统,为显卡安装最新的驱动程序,并安装您将用于训练和推断的深度学习库。接下来,您将下载三个
.zip
文件,其中包含您将在整个课程中用于点云数据的训练和分类的数据。下载并提取数据后,您将在
ArcGIS Pro
中浏览并符号化 LAS 数据集文件。
下载数据
完成此课程所需的所有数据位于您现在将要下载的 .zip 文件中。 (文末有数据下载链接)
1.下载数据前,请确保已安装深度学习库,并确认计算机已准备就绪。
注:
在 ArcGIS Pro 中使用深度学习工具需要在计算机上安装正确的深度学习库。如果您未安装这些文件,请确保已关闭 ArcGIS Pro,然后按照在 ArcGIS Pro 中为深度学习做好准备中提供的步骤说明操作。在这些说明中,您还可以了解如何检查您的计算机硬件和软件能否运行深度学习工作流,以及获取其他有用的提示。完成后,您即可继续本教程。
2.在您的计算机上,打开 文件资源管理器 。
3.在 C:\ 盘中,创建一个名为 LearnArcGIS 的文件夹。在 LearnArcGIS 文件夹中,创建另一个名为 DL 的文件夹。
C:\LearnArcGIS\DL 文件夹是您将存储课程的所有数据和输出的位置。
4.下载以下 .zip 文件:
-
smalldata.zip - 包含一个小型训练数据集和训练边界,一个小型验证数据集和验证边界,以及一个 DEM 栅格。
-
testdata.zip - 包含测试数据集、处理边界和 DEM 栅格。
-
results.zip - 包含来自大型数据集的训练结果,您可以使用此训练结果而无需训练大型数据集的模型。
5.下载文件后,将每个 .zip 文件提取至 LearnArcGIS/DL 文件夹。
注:
要提取 .zip 文件,右键单击,选择 全部提取 ,然后浏览至 LearnArcGIS\DL 文件夹。
文件夹包含您将用于准备和训练数据的多种信息。文件夹中的一些主要文件为 LAS 文件。LAS 文件采用行业标准二进制格式,用于存储机载激光雷达数据。LAS 数据集允许您以其原生格式方便快捷地检查 LAS 文件,同时提供 LAS 文件中包含的激光雷达数据的详细统计数据和区域覆盖范围。结果文件夹包含使用大型数据集训练的模型,此过程在具有 24 GB GPU 的计算机上执行。在本课程的最后部分,您将使用此已训练模型分类 LAS 数据集。
接下来,您将在 ArcGIS Pro 中查看并熟悉下载的数据。
查看训练数据和验证数据
您将创建一个 ArcGIS Pro 工程,然后查看小型训练数据和验证数据。
1.如有必要,启动 ArcGIS Pro。
2.登录到 ArcGIS 组织账户或 ArcGIS Enterprise。
注:
如果您没有 ArcGIS Pro 的访问权限或者 ArcGIS 组织帐户,请参阅软件访问权限选项。
3.在 新建工程 下,单击 局部场景 。
4.在 创建新工程 对话框上,对于 名称 ,输入 Powerline Classification with DL 。对于 位置 ,单击 浏览 ,浏览至 C:\LearnArcGIS ,单击 DL 文件夹,然后单击 确定 。取消选中 为此工程创建新文件夹 。
5.单击 确定 。
在 目录 窗格中,展开 Folders ,然后展开 DL 。
注:
如果 目录 窗格不可见,在功能区上单击 查看 ,然后在 窗口 组中,单击 目录窗格 。
您可以看到您下载并提取到此位置的数据文件夹。
首先,您将浏览 smalldata 文件夹中的文件,并更新此数据集上的统计数据,以确保显示正确的类代码。
7.在 目录 窗格中,展开 smalldata 文件夹。右键单击 train_small.lasd ,然后选择 属性 。
8.在 LAS 数据集属性 窗口中,单击 统计数据 选项卡。
数据集包含多个类代码:
-
1 - 未分配 表示未分类的点,主要为低植被或地面以上的对象,但低于高植被和建筑物。
-
2 - 地面 表示地面。
-
5 - 高植被 表示高植被,如树木。
-
6 - 建筑物 表示建筑物和其他结构。
-
7 - 噪点 表示低点。
-
14 - 导线 表示当前电力线。
-
15 - 输电塔 表示电力线塔。
您感兴趣的
导线
的类代码为 14。您的目标是训练一个模型来检测作为电力线的激光雷达点,以便更好地评估靠近树木的电力线的火灾风险。
在窗口底部,有一条消息指出一个文件已过期或没有统计数据。您现在将解决此问题,以便您可以在场景中显示正确的类代码。
9.单击 更新 。
随即显示一条消息,确认统计数据为最新。
现在,统计数据为最新,您可以根据类代码设置图层的样式。
10.单击 确定 。
11. 在 目录 窗格中,右键单击 train_small.lasd 然后选择 添加到当前地图 。
LAS 数据集图层显示在场景中。
您已更新小型数据集 LAS 文件的统计数据,您需对将用于验证模型的 LAS 数据集 val_small.lasd 执行相同操作。
12.在 目录 窗格中,打开 val_small.lasd 的属性,更新统计数据,然后单击 确定 。将 val_small.lasd 添加到当前地图。
13.在场景中,在拖动指针时按 V 或 C 键以倾斜和平移场景,从而在 3D 模式下浏览数据集。
您将使用 train_small.lasd 训练模型,然后使用 val_small.lasd 验证训练的模型,从而防止训练过程中出现过度拟合。
接下来,您将更新每个 LAS 数据集图层的符号系统,从而根据类代码显示不同的颜色。您将从 train_small.lasd 图层开始。
14.在 内容 窗格中,单击 train_small.lasd 图层以将其选中。在功能区上,单击 LAS 数据集图层 选项卡。
15.在 LAS 数据集图层 选项卡的 绘制 部分中,对于 符号系统 ,单击下拉菜单并选择 类 。
符号系统
窗格随即显示,
train_small.lasd
图层已根据其类代码符号化。
-
注:
如果您的 LAS 数据集图层中包含空白区,则可能存在缓存问题。您可以转到 LAS 数据集的属性,选择 缓存 ,然后单击 清除缓存 以修复此问题,或者当您关闭并打开 ArcGIS Pro 时,它将自动修复。
16.在 内容 窗格中,单击 val_small.lasd 。在 LAS 数据集图层 选项卡上,单击 符号系统 的下拉箭头,然后选择 类 。
val_small.lasd
图层现已按照其类代码进行符号化。
-
注:
LAS 数据集可能较大,与其他图层相比需要花费更多时间显示。要加速显示,您可以使用 构建 LAS 数据集金字塔 工具构建金字塔。此工具将创建或更新 LAS 数据集显示缓存,从而优化其渲染性能。
17.在功能区上方的 快速访问 工具栏上,单击 保存 来保存您的工程。
接下来,您将使用这两个浏览过的数据集训练模型。
使用小型数据集训练模型
在本部分中,您将使用小型数据集全面了解训练分类模型的过程。由于此数据集不包含训练更准确的分类模型所需的那么多点,因此可能会生成不太准确的分类模型。本部分向您展示了训练模型的过程,然后您将在课程的后续部分中使用来自更大点样本的训练模型对 LAS 数据集进行分类并可视化电力线。
准备训练数据集
LAS 数据集无法直接用于训练模型。LAS 数据集必须转换为更小的训练块。您将在 ArcGIS Pro 中使用 准备点云训练数据 地理处理工具将 LAS 文件导出到块。
您的目标是训练模型以识别并分类属于电力线的点。不需要检查 LAS 数据云中的每一个点。仅需检查电力线周围区域内的点。您将使用准备的边界数据 bnd_train_small 和 bnd_val_small 指定应将哪些点转换为训练块。下图显示了电源线周围的训练和验证边界。
1.在功能区上,单击
分析
选项卡,然后单击
工具
。
将出现
地理处理
窗格。
2.在 地理处理 窗格中,搜索并打开 准备点云训练数据 工具。
注:
此工具需要 ArcGIS 3D Analyst extension。
3.在 准备点云训练数据 工具中,设置以下参数:
-
对于 输入点云 ,选择 train_small.lasd 。
-
对于 训练边界要素 ,单击 浏览 ,浏览至 C:\LearnArcGIS\DL\smalldata\boundaries.gdb ,选择 bnd_train_small ,然后单击 确定 。
-
对于 验证点云 ,选择 val_small.lasd 。
-
对于 验证边界要素 ,单击 浏览 ,浏览至 C:\LearnArcGIS\DL\smalldata\boundaries.gdb ,选择 bnd_val_small ,然后单击 确定 。
-
对于 参考表面 ,单击 浏览 并浏览至 C:\LearnArcGIS\DL\smalldata 。单击 dem_small.tif ,然后单击 确定 。
DEM 栅格将用于计算点距地面的相对高度。您已输入所有训练数据、验证数据和处理边界。
接下来,您将指定要排除的类代码。
4.对于 排除类代码 ,键入 2 。单击 添加另一个 按钮,然后键入 7 。
训练数据中排除了地面(第 2 类)和噪声(第 7 类)点。通常情况下,地面点占总点数的很大一部分,因此排除地面点可以提高训练过程速度。
5.将 Filter Blocks by Class Code 留空。
6.对于 输出训练数据 ,单击 浏览 ,然后浏览至 C:\LearnArcGIS\DL\results 。对于 名称 ,输入 training_data_small.pctd 。
注:
输出文件扩展名 .pctd 表示点云训练数据。
7.单击 保存 。
8.在 准备点云训练数据 工具中,继续输入以下参数:
-
对于 块大小 ,输入 82 。对于 未知 ,单击下拉菜单并选择 US Survey Feet 。
-
对于 块点限制 ,保留默认值 8192 。
块大小 和 块点限制 控制一个训练块中的点数量。要确定此值,在设置这两个参数时考虑平均点间距、感兴趣的对象、可用的专用 GPU 内存和批量大小十分重要。一般规则是块大小应该足够大,以便以最少的子采样来捕获感兴趣的对象。
您将从 82 英尺(约 25 米)的 块大小 和 8192 的 块点限制 开始。82 英尺是适用于捕获电力线几何的块大小。您将检查输出,以查看 8192 是否是合适的块点限制。如果大多数块具有超过 8192 个点,则您需要增加块点限制以减少子采样。
注:
对于大型数据,建议您使用 用作栅格数据的 LAS 点统计 生成直方图,以在运行 准备点云训练数据 工具之前确定适合的块大小和块点限制。要使用此工具,请选择 点计数 作为方法,选择 像元大小 作为采样类型,并使用不同的 块大小 值进行测试。
9.单击 运行 。
工具完成时,将在工具窗格底部显示一条确认消息。
10.单击 查看详细信息 。
在 消息 下,您可以看到块点计数的两个直方图,一个用于训练数据,一个用于验证数据。
两个直方图显示了大多数块的点数小于 8000,这证实了 82 英尺的块大小和 8192 的默认块点限制适用于这些数据集。
11.在窗口中,打开 文件资源管理器 ,然后浏览至 C:\LearnArcGIS\DL\results 。 结果 文件夹现在包含 training_data_small.pctd 文件夹。
12.双击 training_data_small.pctd 以打开文件夹。
输出文件包含两个子文件夹, train 和 val ,其中分别包含导出的训练和验证数据。
13.打开各个文件夹以查看其内容。
在每个文件夹中,您将看到一个 Statistics.json 文件,一个 ListTable.h5 文件和一个 BlockPointCountHistogram.png 文件,还有一个包含 Data_x.h5 文件的 0 文件夹。
ListTable.h5
和
Data_x.h5
文件包括点信息(xyz 和回波编号、强度等属性),这些信息组织为块。
准备训练数据后,您可以使用训练块通过深度学习训练分类模型。
训练分类模型
接下来,您将通过 训练点云分类模型 地理处理工具使用小型训练数据集训练一个用于电力线分类的模型。结果可能因工具的不同运行方式和不同的计算机配置而有所不同。
1.在 ArcGIS Pro 中的 地理处理 窗格中,单击后退箭头。搜索并打开 训练点云分类模型 工具。
2.在 训练点云分类模型 工具中,设置以下参数:
-
对于 输入训练数据 ,单击 浏览 。浏览至 C:\LearnArcGIS\DL\results ,然后双击 training_data_small.pctd 。
-
对于 预训练模型 ,将其留空。
-
对于 模型架构 ,请保留 RandLA-Net 的默认值。
注:
您将使用 RandLA-Net 架构来训练分类模型。 RandLA-Net 使用随机采样来减少内存使用和计算成本,并使用局部要素聚合来保留来自广泛邻域的有用要素。
-
对于 属性选择 ,单击 强度 和 相对高度 的复选框。
注:
相比其他要素,电力线的强度较低,因此强度是区分电力线的有效属性。电源线的相对高度通常在一定范围内,因此也可用于将电源线与其他要素分开。
-
对于 输出模型位置 ,浏览至 results 文件夹。单击,再单击 确定 。
-
对于 输出模型名称 ,输入 Powerline_classification_model_small_data 。
-
对于 每块的最小点数 ,输入 1000 。
通过在训练过程中将 每块的最小点数 设置为 1000,点数小于 1000 的块将被跳过。具有少量点的块很可能位于没有电力线点的边界处。在训练中跳过这些块将使训练更快,并使模型的学习更有效率。此参数仅适用于训练数据块,而不适用于验证数据块。
3.展开 管理类 。
4.在 类重映射 下,对于 当前类 ,选择 14 。对于 重映射的类 ,选择 14 。
类 14 表示您要在点云中分类和定位的导线。
5.在下一行中,对于 当前类 ,选择 其他 ,从 重映射类 中,选择 1 。
通过指定
类重映射
,类代码 14 保持不变,意味着 LAS 数据集中已分类为电力线的点仍为电力线。所有其他类代码(1、5 和 15)都将重映射为类代码 1。生成的训练数据将只有两个类,1 和 14,因此使电力线在场景中更容易区分。
6.对于 类描述 ,接受填充的类代码和描述。
7.展开 训练参数 。对于 模型选择条件 ,接受 召回率 的默认值。
模型选择条件 指定将用于确定最终模型的统计基础。 召回率 的默认值将选择实现所有类代码召回率的最佳宏观平均值的模型。每个类代码的召回率值由正确分类的点(真阳性)与所有应该使用该值分类的点(预期阳性)的比率确定。对于每个类,其召回值是该类正确预测的点与验证数据中该类所有参考点的比率。例如,类代码 14 的召回率值是正确预测的电力线点与验证数据中所有参考电力线点的比率。
8.对于 最大时期数 ,输入 10 。
一个时期是神经网络学习到的整个训练数据的完整循环(换言之,整个训练数据通过神经网络向前和向后传递一次)。您将采用时期值 10 训练模型以节省时间。
9.对于 每期训练的迭代 (%) ,接受默认值 100 。
将 每期训练的迭代 (%) 参数保留为 100 可确保所有训练数据通过每个时期。
注:
您还可以选择在每个时期传递一定比例的训练数据。如果您想通过随机选择较少的批次来减少每个时期的完成时间,请将此参数设置为 100 之外的值。但是,这可能会导致模型收敛之前有更多时期。如果您想在工具的消息窗口中快速查看模型指标,则此参数十分有用。
10.对于 学习率策略 ,保持默认 One Cycle Learning Rate 。
11.对于 学习率 ,输入 .005 。
注:
您也可以将 学习率 留空,以允许工具为您找到最佳学习率。
12.对于 批量大小 ,输入 6 。
批量大小 ,指定一次处理多少个块。训练数据分割为多个批次。例如,如果 批量大小 值设置为 20,则 1000 个块被分割为 50 个批次,并且这 50 个批次中的每一个批次均在一个时期中处理。通过将块分割为批次,此过程将消耗更少的 GPU 内存。
注:
建议在 8 GB 显卡上使用批量大小 20。如果您收到 CUDA 内存不足错误 ,则应使用较小的批量大小。
13.取消选中 当模型不再改进时停止训练 。
取消选中此选项将使训练运行 10 个时期。如果选中,无论指定的最大时期数如何,当模型在几个时期后不再改进时,训练将停止。
14.单击 运行 。
注:
运行此工具的时间可能有所不同,具体取决于您的系统。在具有 8 GB 专用内存的 NVIDIA Quadro RTX 4000 GPU 上,此工具可能需要运行约 20 分钟。工具运行时,您可以监控其进度。
15.在 地理处理 窗格的底部,单击 查看详细信息 。
训练点云分类模型(3D Analyst 工具)
窗口随即出现,显示
参数
选项卡,其中包含用于运行此工具的参数。
16.单击 消息 选项卡。
注:
工具运行时将填充地理处理消息。当工具运行完成时,地理处理消息将显示每个时期的结果。
注:
您的消息中的信息可能与显示的示例有所不同,具体取决于 GPU 和系统设置。
此工具报告以下信息:
该工具报告每个时期的 训练损失 、 验证损失 、 准确度 、 精度 、 召回率 、 F1 得分 和 时间 。
在每个时期的过程中,您可以看到训练损失和验证损失的值在减少,表示模型正在学习。
10 个时期后,最高 召回 值超过 0.98。
该模型不是一个准确的模型,这是意料之中的,因为此模型使用小数据集训练。这些结果强调需要单独的数据集中包含更多的样本点,才能获得更好的结果。
-
训练中使用的 GPU。
-
训练中使用的训练数据块的计数(训练中仅使用包含超过 1000 个点的训练数据块)。
-
验证中使用的验证数据块的计数,所有验证数据块都用于验证。
-
每期训练的迭代 - 训练数据块的数量除以批量大小。
检查训练输出
接下来,您将查看训练分类模型的结果。
1.在 文件浏览器 中,浏览至 C:\LearnArcGIS\DL\results 。
在此文件夹中,包含两个子文件夹。一个为模型文件夹,另一个为检查点文件夹。
2.展开 Powerline_clas sification_model_small_data 文件夹,然后展开 Model Characteristics 文件夹。
Powerline_classification_model_small_data 文件夹包含第 9 时期保存的模型。模型文件夹包含几个文件。其中 .pth 文件为模型文件, .emd 文件为 Esri 模型定义文件(. JSON 格式的配置文件)。 model_metrics.htm 包含一个学习损失图表。 .dlpk 文件是深度学习模型包。它是一个压缩文件,可以在 ArcGIS Online 中共享。
Model Characteristics 文件夹包含损失图表及实际地表和预测结果图表。
3.返回到 results 文件夹。打开 Powerline_classification_model_small_data.checkpoints 文件夹并查看其内容。
Powerline_classification_model_small_data.checkpoints 文件夹包括 models 文件夹,其中包含每个时期检查点的模型和两个 .csv 文件。训练工具运行时,将在每个时期结束后创建一个检查点。每个检查点包含一个 .pth 文件和一个 .emd 文件。
4.在 Powerline_classification_model_small_data.checkpoints 文件夹中,打开 Powerline_classification_model_small_data_Epoch_Statistics Microsoft Excel 文件以查看统计数据。
CSV 文件在 Excel 中打开。
它与您在工具的消息中看到的表相同。
Powerline_classification_model_small_data_Statistics 文件包括每个时期后各个类的精度、召回率和 f1 分数值。在某些情况下,具有最佳整体指标的模型可能不是在对特定类别代码进行分类时表现最佳的模型。如果您仅对分类某些类代码感兴趣,则可以考虑使用与该类代码的最佳指标相关联的检查点模型。通过在 Excel 中查看统计数据,您可以对列进行排序并轻松定位具有最高召回率值的时期。您已使用小型点样本训练了模型。接下来,您将借助采用大型点样本训练的模型分类 LAS 数据集。
使用训练的模型分类 LAS 数据集
您将使用经过训练的模型对具有超过 300 万个点的 LAS 数据集进行分类。通过使用训练的模型分类 LAS 数据集,您可以定位研究区域内的电力线,从而进行风险评估分析。在训练模型时,指定了两个分类代码, 未分配 和 导线 。通过将点云中的点分类为导线,将其余点分类为未分配,可以使数据集更有价值,因为这将清楚地识别电力线。
浏览模型结果并选择最佳轮数
您将浏览提供的使用大型数据集的模型训练结果。您将查找导线的最佳召回率值。
1.打开 文件资源管理器 并浏览至 C:\LearnArcGIS\DL\results 。
这些文件夹包含使用具有 24 GB 专用 GPU 内存的计算机训练大型数据的结果。
2.打开 Powerline_classification_model_large_data.checkpoints 文件夹,然后双击 Powerline_classification_model_large_data_Statistics 以在 Excel 中查看统计数据。
文件将在 Excel 中打开。
3.在 Excel 中,双击列分隔线以将其展开,以看到所有文本。
您将对
召回率
列进行排序并找到
导线
的最大值并使用该轮分类 LAS 数据集。
导线
的最大
召回率
值表示您应在分类中使用的轮数。
4.单击 Recall 列标题以高亮显示整个列。
5.在功能区的 编辑 部分,单击 过滤和排序 ,然后选择 从大到小排序 。
6.在显示的 排序 窗口中,单击 排序 。
电子表格中的行已排序,因此很容易看到 导线 的最大值。
7.找到 CLASS_CODE 为 14 且 CLASS_Description 为 导线 的第一行(第 23 行)。
这是
导线
的最高召回率值
0.993655113
,发生于第 18 时期。
在对 LAS 数据集进行分类时,您将使用轮数或检查点 18,因为其具有电力线类代码的最高召回率值,并且将提供最佳结果。
使用训练的模型分类电力线
接下来,您将使用训练的模型分类测试数据集中的电力线。您将应用处理边界,以便仅分类边界范围内的点。