Skip to main content

使用深度学习对点云中的电力线进行分类

电力线的精确 3D 信息对于检测潜在危害(例如植被侵入)以及评估线路的结构稳定性至关重要。 借助激光雷达技术,可以快速、精准且经济高效地获取电力线的 3D 点云数据,因而成为获取此类信息的关键技术。

但是,从激光雷达点云中提取电力线点仍然具有挑战性,尤其在树木或其他对象非常接近的情况下更是如此。 传统方法通常依赖基于规则的算法和手动编辑,此类方法在复杂的环境中既耗时又容易出错。 深度学习提供了一种强大的替代方案:通过训练模型以从数据中学习并识别模式,从而实现更精准的自动化分类。

ArcGIS Pro 提供点云深度学习工具,这些工具支持训练电力线分类模型,并将其应用于激光雷达点云中的电力线分类。

硬件和软件要求:

  • 包含 3D Analyst 扩展模块的 ArcGIS Pro

  • 深度学习库,可以使用 ArcGIS 的深度学习库安装程序 进行安装

  • 拥有 CUDA 计算能力且专用显存不低于 8 GB 的 NVIDIA 显卡

数据要求:

  • 通过飞机、直升机或无人机捕获的机载激光雷达点云

  • 平均点间距小于 1 英尺,以确保为电力线分类提供足够的细节

建议

训练深度学习分类模型评估训练结果 以及 使用经过训练的模型对点云进行分类 时,遵循一些通用准则至关重要。 以下建议主要针对电力线分类:

选择具有代表性的训练样本

电力线横跨各种地形,所处环境条件也各不相同。 包含不同地形类型的点云数据能够反映这种差异性并增强模型的鲁棒性。 电力线在高度和材质方面也存在差异,因此纳入能够反映这些差异的样本有助于模型学习不同类型的电力线。 电力线周边的植被在类型和密度上也存在差异,通过使用多样化的植被样本,可帮助模型更好地区分电力线与周边树丛。

重点训练电力线邻近区域

电力线通常安装在指定廊道内,并保持特定高度以确保安全净空距离。 随着时间的推移,这些区域内的植被可能向电力线方向侵入,由此导致难以区分电力线与周边树丛。

为了提高模型精度,在进行训练时,应排除与电力线的距离超出设定阈值的激光雷达点。 将模型聚焦于电力线周边区域,既有助于模型学习更具相关性的特征差异,又能减小数据集规模并提升训练效率。

利用属性来区分电力线与其他要素

电力线作为线性要素,通常位于地面以上特定高度范围内。 相对高度 属性对于识别电力线特别有效,尤其当训练数据中排除地面点时更是如此,与绝对高程相比,相对高度能够提供更有意义的背景信息。

对于低压电力线, 强度 是另一个非常有用的属性,因为相较于其他要素,其通常返回较低的强度值。 相比之下,高压电力线反射的激光脉冲强度值通常较高(与其他对象相似),由此使得强度属性在识别高压线路时的可靠性较低。

缓解数据不均衡带来的影响

当某些类的样本量远多于其他类时,将会出现数据不均衡现象,由此导致模型偏向于众数类。 此问题在电力线分类中尤为关键,相较于诸如地面、植被等主要类,电力线点仅占少数比例。

为了缓解这一问题,可在训练过程中减少众数类样本(例如排除地面点),从而最大限度降低偏差。 此外,应用 焦点损失 可以为少数类样本分配更高权重,从而帮助模型更有效地利用有限的电力线数据进行学习。

工作流概览

以下工作流从未分类的激光雷达点云开始。 如果您的数据已分类,则可以跳过相关步骤。

  1. 使用 构建 LAS 数据集金字塔 地理处理工具在 LAS 数据集 上构建 LAS 金字塔以优化渲染。

  2. 使用 分类 LAS 地面点 地理处理工具对地面点进行分类。

  3. 使用 LAS 数据集转栅格 工具创建 DEM 和 DSM 栅格。

  4. 使用 地理处理工具创建归一化 DSM (DSM - DEM) 以高亮显示电力线。 创建处理边界,使其以相应缓冲距离(例如 10 米)封闭所有电力线。

    电力线边界

    归一化 DSM 栅格中的电力线,其中淡黄色线显示了处理边界。
  5. 如果存在适配模型,可通过 使用经过训练的模型对点云进行分类 地理处理工具来标注电力线。 否则,可通过剖面编辑手动标注电力线点,或者使用 按高度分类 LAS 地理处理工具进行分类,然后使用交互式编辑工具对指定电力线高度范围内的误分类点(如输电塔和植被)进行修正。

  6. 在剖面图查看器中手动分类电力线

    在剖面图查看器中手动分类电力线。
    注:

    您也可以使用 按高度分类 LAS 地理处理工具,对位于电力线高度范围以上或以下的点进行分类。 可以从训练中排除这些点以及地面点,以缩减数据集规模并使模型训练聚焦于电力线周边区域。

  7. 将数据分为训练子集和验证子集,例如按 80:20 的比例划分。

  8. 通过使用 准备点云训练数据 地理处理工具准备训练数据,并导出训练块和验证块。 有关更多详细信息,请参阅以下部分。

  9. 通过使用 训练点云分类模型 地理处理工具来训练模型。 有关更多详细信息,请参阅以下部分。

  10. 通过 使用经过训练的模型对点云进行分类 地理处理工具来分类电力线。 有关更多详细信息,请参阅以下部分。

使用“准备点云训练数据”地理处理工具

必须将 LAS 数据集转换为较小的训练块,然后才能将其用于模型训练。 准备点云训练数据 地理处理工具可将 LAS 导出至这些块中。 以下是电力线分类的关键参数以及使用指南摘要。

训练边界要素验证边界要素 :利用边界面以仅导出电力线附近的点,从而将训练集中于相关区域。

参考表面 :提供 DEM 栅格以计算相对高度值。 此属性对于区分电力线与其他要素至关重要。

排除的类代码 :从训练数据中排除电力线高度范围外的类(例如,地面、低/中高度、噪声等)。 特别是地面点,通常在数据集中占比较大,因此移除此类数据可以显著减小数据规模并加快训练速度。

块大小和块点限制 :这些参数用于控制每个块中包含的点数量。 通过平衡点密度、对象大小、GPU 内存和批量大小来设置这些参数。 可能需要进行一些实验,以确定适合您的数据集和硬件的最佳配置。

注:
  • 一个实用的参考原则是:在设置块大小时,确保其足够大,以便在最小限度地进行降采样的情况下捕捉目标对象,从而确保训练数据中能够保留关键要素和足够的细节。

  • 块大小及其包含的点数量主要取决于 GPU 内存。 较大的块和较密集的点云会增加内存使用量。 块点限制用于控制每个块中的最大点数量。 如果超过此限制,则会将块分割为多个较小的块。 例如,如果一个块包含 10,000 个点,并且点限制为 3000,则会将其分割为 4 个子块,其中每个子块包含 3000 个随机采样点(注意,某些点可能会在两个子块中重复出现)。

  • 批量大小用于控制在 GPU 上并发处理的块数量。 较大的批量大小将使用较多的 GPU 内存;而较小的批量大小将需要较少的内存。

  • 请根据您的 GPU 内存调整这些参数。 对于高内存 GPU,您可以选择更大的块大小(以捕获更多上下文信息)、更高的块点限制(以减少降采样),以及更大的批量大小,从而实现更快且更稳定的训练。

当工具运行完成后,请查看 消息 窗口中的直方图,以评估块大小和块点限制是否设置合理。 输出训练数据保存在一个具有 .pctd 扩展名的文件夹中,其中包含两个子文件夹:“train”和“val”,分别存储已导出的训练数据和验证数据。 点数据存储在 .h5 文件中,并按块进行组织。

结果的直方图

该直方图显示了每个块中的点计数分布情况。 如果默认块点限制为 8192,则任何超过此数量的块都将进行降采样处理。 将该限制增大为 30,000 有助于避免降采样,前提是您的 GPU 具有足够的内存来支持此设置。

使用“训练点云分类模型”地理处理工具

可以使用由“准备点云训练数据”工具导出的训练数据来训练分类模型。 如果存在合适的预训练电力线分类模型,您可以使用自己的数据对其进行微调;否则,请从头开始训练一个新模型。 以下是该工具的参数列表,以及有关如何针对电力线分类来配置这些参数的指南。

预训练模型 :选择合适的预训练模型(如果适用)。 确保您的训练数据与模型的属性、类代码以及其原始训练过程中所使用的最大点数相匹配。

模型架构 :对于电力线分类,推荐使用 Point Transformer V3,因为其具有最佳性能和最高精度,尤其适用于识别数量较少的类。 RandLA-Net 也是一个推荐的选项:其在内存使用方面较为高效,同时仍能产生精确的结果。 相比之下,PointCNN 需要较多的 GPU 内存,并且通常精度较低。 虽然语义查询网络能够在采样数据有限的情况下训练有效的模型,但其在本场景中的适用性较差。 由于电力线呈线性分布,并且在数据集中仅占较小部分,因此若采用随机采样的方式,可能会导致关键局部要素丢失,进而降低模型的精度。

属性选择 :选择 相对高度 ;对于低压电力线,还需额外选择 强度 。 这些属性有助于区分电力线与点云中的其他对象。

电力线的强度图像

此激光雷达点云基于强度值渲染生成。 电力线的强度值显著低于其他要素,这使得强度成为一个有效区分电力线与周围对象的有效属性。

类重映射 :将所有非电力线类重映射为背景类。 由此有助于模型专注于从单一背景类中区分电力线,从而简化分类、加快训练速度,并且通常通过降低复杂度来提升模型精度。

损失函数 :选择 焦点损失 函数,通过为少数类电力线分配更高权重来解决类不平衡问题。

模型选择条件 :选择默认 召回率 选项,该选项用于计算所有类代码上的宏平均召回率。

每个块的最小点数 :将从训练中排除点数小于指定值的块。 跳过仅包含少量电力线点的块可以加快训练速度并提升模型的学习效率。

最大轮数 :使用默认设置 25 轮。 如果模型在 25 个训练周期后仍有性能提升,则可将其作为预训练模型进一步优化。

每轮迭代次数 (%) :保留默认值 100%,以确保每个训练周期中使用全部训练数据。

学习率策略 :保留默认 单周期学习率 选项。 此策略会在训练过程中动态调整学习率,从较低的学习率开始,逐渐增大到峰值,然后再次减小。 该策略能够加速模型收敛,防止过度拟合,帮助模型找到更优的局部最优解,从而同步提升训练效率和模型精度。

学习率 :如果您不确定如何设置此参数,可将其留空以允许工具自动计算最优学习率。

批量大小 :批量大小用于指定一次处理的块数量。 训练数据划分为多个批次。 例如,当批量大小为 20 时,可将 1000 个块分割为 50 个批次,并且全部在 1 个训练周期内完成处理。 较小的批量大小有助于稳定训练,适用于内存有限的 GPU,但可能会增加训练时间。 较大的批量大小可加快训练,但需要显著更多的内存,并且可能会影响模型概化。 确定最佳批量大小需要在 GPU 内存、训练速度和模型精度三者之间进行权衡,这一过程通常需要通过实验来确定。

当模型不再提升时停止训练 :启用此选项后,如果模型在 5 个训练周期后未见任何提升,则将停止训练,由此帮助防止模型过度拟合。

在训练过程中,通过追踪训练损失、验证损失和召回率的变化来监测训练进度。

注:

随着每个训练周期的推进,如果训练损失和验证损失持续下降且召回率稳步上升,则表明模型正在有效学习。

输出包含两个文件夹。 其中一个为模型文件夹,其中包含具有最佳整体召回率的已保存模型。 另一个为检查点文件夹,其中包含在每个训练周期检查点时保存的模型。

对于电力线分类,整体召回率最佳的模型(即电力线与背景的宏观平均召回率最高者)未必是电力线分类效果最佳的模型。 适用于电力线分类的最佳模型是电力线召回率最高的模型。 打开检查点文件夹中的 Epoch_Statistics.csv 文件,定位电力线召回率最高的训练周期,然后使用相应模型来分类电力线。

使用“使用训练模型分类点云”地理处理工具

当使用经过训练的模型来分类点云时,请确保待分类的激光雷达数据与训练数据相似。 如果您在训练数据准备过程中使用了处理边界、DEM 表面或者排除了一些类代码,请在此处应用相同的设置。 以下指南将帮助您高效配置电力线分类的相关参数。

​​ 输入模型定义 :选择电力线召回率最高的检查点模型​​。

现有类代码处理方式 :可以选择 编辑选定点保留选定点 以提高分类精度。 对目标点云进行预分类,例如地面点(类代码为 2)、低矮植被(类代码为 3)和中等高度植被(类代码为 4),并指定在分类过程中需要编辑或保留的类代码。 例如,如果保留中等高度植被,即使模型将部分中等高度植被点误分类为电力线,其类代码仍将保持不变。

批量大小 :如果您不确定如何设置此参数,可将其留空以允许工具基于可用 GPU 内存自动计算最优批量大小。

处理边界参考表面已排除的类代码 :如果使用这些输入数据对电力线分类模型进行了训练,请务必在此处使用相同的设置。

工具运行完成后,请在场景视图中查看结果。 可以使用 交互式选择和编辑 工具来修正任何误分类的电力线点。 此外,可以使用 从点云中提取电力线 地理处理工具以生成用于建模电力线的 3D 线。 为了进行更深入的分析,请使用 生成净空面表面 工具以确定电力线周围的净空面区域。 该区域内的要素(通常为树木)与电力线距离过近,存在引发断电或火灾的风险,应尽快采取措施加以解决。

电力线结果

利用经过训练的模型对电力线进行分类。

激光雷达数据源致谢:

  • NASA 授权 NNX13AP69G、马里兰大学和索诺马县植被制图和激光雷达计划。

  • 如需实际操作练习,请参阅教程: 使用深度学习分类电力线