使用训练模型对点云进行分类 (3D Analyst)

摘要

使用 PointCNN 分类模型对点云进行分类。

使用情况

  • 该工具通过深度学习框架使用 PointCNN 实施。

    要设置计算机以在 ArcGIS Pro 中使用深度学习框架,请参阅安装 ArcGIS 的深度学习框架

  • 该工具默认情况下对输入点云中的所有点进行分类。 如果输入点云中的任何现有类代码均已正确分类,请使用现有类代码处理现有类代码参数指示应编辑或保留哪些类代码,以使这些点不被修改。

    了解有关通过深度学习对点云进行分类的详细信息

  • 输入点云必须具有与用于开发分类模型的训练数据相同的属性,并且值范围必须相似。 例如,如果训练模型使用具有特定值范围的强度属性,则点云必须具有相同范围内的强度值。 点密度和分布也应与训练模型时使用的数据相似。

  • 如果输入点云的空间参考未使用投影坐标系,则可以使用输出坐标系环境定义在分类点时将使用的投影坐标系。

  • 当使用通过参考高度信息训练的分类模型时,参考表面参数是必需的输入。 为此参数提供的栅格用于派生出每个重叠点的相对高度属性。 取每个点的 z 值并减去通过双线性插值法从栅格获得的高度,即可计算属性。 该信息有助于区分与各个类相关联的对象,这些类具有与栅格表面不同的相对高度范围,因此更易于进行区分。 当使用相对高度信息训练模型时,作为分类输入提供的栅格表面应基于相同类型的点。 如果在训练期间用于合并相对高度的栅格基于地面分类点,则为此工具提供相同类型的栅格。 对于表示室外调查的 LAS 数据集,相对高度信息最典型的来源是相同点云中的地面分类点。 通过从图层属性中过滤 LAS 数据集并使用 LAS 数据集转栅格工具,可以从地面分类点生成栅格表面。 如果在 Python 中使用该工具,则可以在创建栅格之前使用创建 LAS 数据集图层过滤出所需的点。 也可以使用点云转栅格工具从点云场景图层生成地表。 也可以使用并非源自输入点云的栅格表面,但必须确保栅格中的 z 值与点云中的 z 值适当地对应。

参数

标注说明数据类型
目标点云

将进行分类的点云。

LAS Dataset Layer
输入模型定义

输入 Esri 模型定义文件 (*.emd) 或深度学习包 (*.dlpk) 将用于分类点云。 也可以使用在 ArcGIS OnlineArcGIS Living Atlas 上发布的深度学习包的网址。

File; String
目标分类

训练模型中的类代码,将用于对输入点云进行分类。 除非已指定子集,否则默认情况下将使用输入模型中的所有类。

String
现有类代码处理
(可选)

指定如何定义输入点云中的可编辑点。

  • 编辑所有点
  • 编辑所选点
  • 保留所选点
String
现有类代码
(可选)

将根据现有类代码处理参数值编辑点或保留原始类代码名称的类。

Long
计算统计数据
(可选)

指定是否将计算 LAS 数据集引用的 .las 文件的统计数据。 计算统计数据时会为每个 .las 文件提供一个空间索引,从而提高了分析和显示性能。 统计数据还可通过将 LAS 属性(例如分类代码和返回信息)显示限制为 .las 文件中存在的值来提升过滤和符号系统体验。

  • 选中 - 将计算统计数据。 这是默认设置。
  • 未选中 - 不计算统计数据。
Boolean
处理边界

面边界,可用于定义要通过输入点云处理的点的子集。 边界要素之外的点将不会进行评估。

Feature Layer
更新金字塔
(可选)

指定修改类代码后,LAS 数据集金字塔是否会更新。

  • 选中 - LAS 数据集金字塔将更新。 这是默认设置。
  • 未选中 - LAS 数据集金字塔不会更新。
Boolean
参考表面
(可选)

将用于为点云数据中的每个点提供相对高度值的栅格表面。 与栅格不重叠的点将在分析中忽略。

Raster Layer
排除的类代码
(可选)

将从处理过程中排除的类代码。 可以指定 0 到 255 范围内的任何值。

Long
批大小
(可选)

在推断操作期间由神经网络同时处理的点云数据块。 未指定值时,将根据可用的 GPU 内存计算最佳批量大小。 给定数据块使用的 GPU 内存量取决于模型所需的块点限制和点云属性。

Long

派生输出

标注说明数据类型
输出点云

通过深度学习模型进行分类的点云。

Feature Layer

arcpy.ddd.ClassifyPointCloudUsingTrainedModel(in_point_cloud, in_trained_model, output_classes, {in_class_mode}, {target_classes}, {compute_stats}, boundary, {update_pyramid}, {reference_height}, {excluded_class_codes}, {batch_size})
名称说明数据类型
in_point_cloud

将进行分类的点云。

LAS Dataset Layer
in_trained_model

输入 Esri 模型定义文件 (*.emd) 或深度学习包 (*.dlpk) 将用于分类点云。 也可以使用在 ArcGIS OnlineArcGIS Living Atlas 上发布的深度学习包的网址。

File; String
output_classes
[output_classes,...]

训练模型中的类代码,将用于对输入点云进行分类。 除非已指定子集,否则默认情况下将使用输入模型中的所有类。

String
in_class_mode
(可选)

指定如何定义输入点云中的可编辑点。

  • EDIT_ALL将会编辑输入点云中的所有点。 这是默认设置。
  • EDIT_SELECTED仅会编辑具有在 target_classes 参数中指定的类代码的点;所有其他点将保持不变。
  • PRESERVE_SELECTED将会保留具有在 target_classes 参数中指定的类代码的点;将会编辑其余点。
String
target_classes
[target_classes,...]
(可选)

将根据 in_class_mode 参数值编辑点或保留原始类代码名称的类。

Long
compute_stats
(可选)

指定是否将计算 LAS 数据集引用的 .las 文件的统计数据。 计算统计数据时会为每个 .las 文件提供一个空间索引,从而提高了分析和显示性能。 统计数据还可通过将 LAS 属性(例如分类代码和返回信息)显示限制为 .las 文件中存在的值来提升过滤和符号系统体验。

  • COMPUTE_STATS将计算统计数据。 这是默认设置。
  • NO_COMPUTE_STATS不计算统计数据。
Boolean
boundary

面边界,可用于定义要通过输入点云处理的点的子集。 边界要素之外的点将不会进行评估。

Feature Layer
update_pyramid
(可选)

指定修改类代码后,LAS 数据集金字塔是否会更新。

  • UPDATE_PYRAMIDLAS 数据集金字塔将更新。 这是默认设置。
  • NO_UPDATE_PYRAMIDLAS 数据集金字塔不会更新。
Boolean
reference_height
(可选)

将用于为点云数据中的每个点提供相对高度值的栅格表面。 与栅格不重叠的点将在分析中忽略。

Raster Layer
excluded_class_codes
[excluded_class_codes,...]
(可选)

将从处理过程中排除的类代码。 可以指定 0 到 255 范围内的任何值。

Long
batch_size
(可选)

在推断操作期间由神经网络同时处理的点云数据块。 未指定值时,将根据可用的 GPU 内存计算最佳批量大小。 给定数据块使用的 GPU 内存量取决于模型所需的块点限制和点云属性。

Long

派生输出

名称说明数据类型
out_point_cloud

通过深度学习模型进行分类的点云。

Feature Layer

代码示例

ClassifyPointCloudUsingTrainedModel 示例(独立脚本)

下面的示例演示了如何在 Python 窗口中使用此工具。


import arcpy
arcpy.env.workspace = 'C:/data/'
arcpy.ddd.ClassifyPointCloudUsingTrainedModel('2018_survey.lasd', 'electrical_infrastructure_classification.emd', 
                                              [14, 15], 'EDIT_SELECTED', [0,1])

许可信息

  • Basic: 需要 3D Analyst
  • Standard: 需要 3D Analyst
  • Advanced: 需要 3D Analyst

相关主题