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

摘要

使用深度学习模型对点云进行分类。

使用情况

  • 此工具需要安装深度学习框架。

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

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

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

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

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

  • 该模型经过训练,可以处理特定大小的块中的点云数据,这些块包含一定数量的点和一组给定属性。 通过将输入点云划分到由模型定义的块中对其进行处理。 可以在任何给定时间处理多个块。 一起处理的一组块称为一批。 批次大小用于控制推断操作期间将使用的计算机资源量。 虽然可以使用 CPU 来处理点云,但使用支持 CUDA 的 NVIDIA GPU 可以更高效地运行推断。 可以通过指定批处理大小参数中的值来控制同时处理的块数,以限制消耗的 GPU 内存量。 避免指定超出计算机资源的批次大小。 可以通过 NVIDIA 的系统管理接口 (SMI) 实用程序来观察该工具运行之前和运行期间的可用 GPU 内存。 将随 GPU 的 NVIDIA 驱动程序一起自动安装此命令行实用程序。 此应用程序将追踪 GPU 使用情况。 要控制工具运行时剩余的可用内存量,请考虑评估具有较小批次大小的点云数据的子集,并逐渐增大该值,直至达到所需使用量为止。 否则,可以将该工具设置为自动最大限度地利用 GPU 的内存。

  • 当使用相对高度属性训练了输入模型时,参考表面参数为必需项。 栅格表面将用作参考高度,可以在其中为每个点插值相对高度。 由此为模型提供附加信息,可用于更加轻松地区分对象。 为此参数提供的栅格表面应表示与创建模型的训练数据中使用的栅格相同类型的数据。 在大多数情况下,将为根据地面分类点创建的栅格。 通过应用地面过滤器并使用 LAS 数据集转栅格工具,可以根据 LAS 数据集中的地面分类点生成栅格表面。 也可以使用点云转栅格工具从点云场景图层生成地表。 也可以使用并非源自输入点云的栅格表面,但必须确保栅格中的 z 值与点云中的 z 值适当地对应。

  • 当使用训练数据中排除的某些类中的点来训练输入模型时,请使用排除类代码参数以确保从该模型评估的点集中忽略这些点。 排除不能为给定模型的目标提供有用背景的类将减少评估的点数,从而提高训练和应用模型的速度。 例如,表示建筑物的点通常与表示诸如交通灯、电线或汽车等对象的点没有相关性。 还可以使用分类 LAS 建筑物工具对建筑点进行可靠分类。 如果在用于创建模型的训练数据中排除表示建筑物的类 6 的点,则输入点云还必须对建筑物点进行分类并将其排除在此工具中。

参数

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

将进行分类的点云。

LAS Dataset Layer
输入模型定义

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

File; String
目标分类

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

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

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

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

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

Long
计算统计数据
(可选)

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

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

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

Feature Layer
更新金字塔
(可选)

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

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

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

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

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

Long
批处理大小
(可选)

在推断操作期间同时处理的点云数据块数量。 通常,批次大小越大,则数据处理速度越快,但需要避免使用对于计算机资源而言过大的批次大小。 当使用 GPU 时,可用 GPU 内存是计算机可以处理的有关批次大小的最常见限制。 给定块所使用的内存将取决于模型的块点限制和所需点属性。 要确定可用的 GPU 内存并获取有关评估 GPU 内存使用情况的详细信息,请使用“用法”部分中介绍的 NVIDIA SMI 命令行实用程序。

对于某些架构,如果未指定批次大小,则将计算最佳批次大小。 当使用 GPU 时,最佳批次大小将取决于给定数据块消耗的内存量以及运行该工具时可用的 GPU 内存量。 当使用 CPU 进行推断时,将在 CPU 线程上处理每个块,并且最佳批次大小计算为可用的未使用 CPU 线程的一半。

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 上发布的深度学习包的 URL。

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 内存是计算机可以处理的有关批次大小的最常见限制。 给定块所使用的内存将取决于模型的块点限制和所需点属性。 要确定可用的 GPU 内存并获取有关评估 GPU 内存使用情况的详细信息,请使用“用法”部分中介绍的 NVIDIA SMI 命令行实用程序。

对于某些架构,如果未指定批次大小,则将计算最佳批次大小。 当使用 GPU 时,最佳批次大小将取决于给定数据块消耗的内存量以及运行该工具时可用的 GPU 内存量。 当使用 CPU 进行推断时,将在 CPU 线程上处理每个块,并且最佳批次大小计算为可用的未使用 CPU 线程的一半。

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

相关主题