标注 | 说明 | 数据类型 |
输入点云 | 如果未指定任何验证点云,则将用于创建训练数据以及可能用于创建验证数据的点云。 在这种情况下,必须同时定义训练边界和验证边界。 | LAS Dataset Layer; File |
块大小 | 根据输入点云创建的每个圆形 HDF5 切片的直径大小。 通常,块大小应足够大,才能捕获感兴趣对象及其周围环境。 | Linear Unit |
输出训练数据 | 输出训练数据 (*.pctd) 的位置和名称。 | File |
训练边界要素 (可选) | 将根据用于训练深度学习模型的输入点云描绘点的子集的边界面。 | Feature Layer |
验证点云 (可选) | 在训练过程中将用于验证深度学习模型的点云。 该数据集必须引用与输入点云不同的点集,才能确保经过训练的模型的质量。 如果未指定验证点云,则输入点云可用于通过为训练边界要素和验证边界要素参数提供面要素类来定义训练和验证数据集。 | LAS Dataset Layer; File |
验证边界要素 (可选) | 将描绘用于在训练过程中评估模型的点子集的面要素。 如果未指定验证点云,则将从输入点云中获取这些点。 | Feature Layer |
按类代码过滤块 (可选) | 将用于限制导出的训练数据块的类代码。 块中所有至少包含一个为此参数列出的值的点都将被导出,但排除的类代码参数中指定的类或标记为保留点的点除外。 可以指定 0 到 255 范围内的任何值。 | Value Table |
块点限制 (可选) | 每个训练数据块中将允许的最大点数。 如果某个块中包含的点数超过该值,则将针对同一位置创建多个块,以确保训练时使用所有这些点。 | Long |
参考表面 (可选) | 将用于为点云数据中的每个点提供相对高度值的栅格表面。 与栅格不重叠的点将在分析中忽略。 | Raster Layer |
排除的类代码 (可选) | 将从训练数据中排除的类代码。 可以指定 0 到 255 范围内的任何值。 | Long |
摘要
用于生成相应数据,这些数据用于训练和验证 PointCNN 模型以进行点云分类。
使用情况
查看输入点云,以确保针对感兴趣对象对其点进行良好分类。 分类模型的质量将取决于用于训练和验证的数据的质量。 如果需要改进点云的分类,请考虑以交互方式编辑点分类。
点云训练数据由扩展名为 .pctd 的目录定义,该目录包含两个子目录,一个子目录包含将用于训练分类模型的数据,另一个子目录包含将用于验证经过训练的模型的数据。 必须始终指定输入点云,因为它将提供用于训练的数据源。 可以选择定义训练边界,以限制导出用于训练的点。 同时还需要验证数据,可以通过执行以下任一操作来指定验证数据:
- 提供验证点云。 该数据集必须引用与输入点云不同的点集。
- 提供具有验证边界的验证点云。 由此将根据与验证边界重叠的验证点云部分创建验证数据。
- 提供不含验证点云的训练边界和验证边界。 由此将根据与训练边界相交的输入点云部分创建训练数据,并根据与验证边界相交的输入点云部分创建验证点云。 边界要素不得相互重叠。
在训练点云分类模型时,将使用足以捕获要分类的对象的块大小以及用于捕获其周围环境的相关数据来创建训练数据。 如果存在足以适当推断分类策略的周围数据,则块大小无需捕获整个对象。 如果块包含的点数超过块点限制,则将针对同一位置创建多个块。 例如,如果块点限制参数值为 10,000,并且给定块包含 22,000 个点,则将创建三个 10,000 个点的块,以确保每个块中的采样均匀。 某些点将在两个块中重复,但是所有点都将至少存储在一个块中。
请避免使用块大小和块点限制,这会导致创建许多超过点限制的块。 可以使用用作栅格数据的 LAS 点统计工具,通过生成相应的输出栅格来估计给定块大小中的点数,该输出栅格针对方法参数将使用点计数选项。 此栅格的像元大小应与所需块大小相匹配。 可以检查此栅格的图像直方图,以了解特定块大小范围内的块数近似值,并相应地调整点限制。
块点限制参数值还必须考虑将用于训练深度学习模型的计算机的专用 GPU 内存容量。 训练期间的内存分配将取决于所使用的属性数量、给定块中的点数以及给定迭代批处理中处理的总块数。 如果需要较大的块大小以及较大的点限制以高效地训练模型,则可以在训练步骤中减小批处理大小,以确保能够处理较多的点。
确保将输出写入相应位置,该位置的磁盘空间足够容纳训练数据。 此工具将创建未压缩的 HDF5 文件的部分重叠块,这些文件将在 4 个块中复制每个点。 在超过最大点限制的块中,可能会对某些点复制四次以上。 生成的训练数据将占用的磁盘空间至少是源点云数据的三倍。
可以将参考高度信息合并到训练数据中,从而为训练过程提供其他属性。 该操作是通过在参考表面参数中指定栅格来完成的。 此栅格用于派生出每个重叠点的相对高度属性。 取每个点的 z 值并减去通过双线性插值法从栅格获得的高度,即可计算属性。 包含此信息有助于区分与栅格表面具有不同相对高度范围的对象。 此外,该信息还可为神经网络推断方向关系提供另一项依据。 例如,在训练电力线并使用地面高程栅格作为参考表面时,电力线点可能会位于地面以上的特定相对高度范围内。 此外,当参考高度基于地面高程时,一旦地面点的存在无法为识别感兴趣对象提供有用的上下文,则参考高度可以提供用于消除训练数据中所包含地面点的前文本。 神经网络将尝试学习在训练期间提供给它的所有数据的分类。 由于可以使用分类 LAS 地面工具实现高质量的地面分类,因此无需训练神经网络以识别地面点并将其与其他类进行区分。 地面点(通常由类 2 表示,有时也由类 8 和类 20 表示)可以通过在排除的类代码参数中将其列出来排除。 完成此操作后,神经网络将以更高的速度处理训练数据,原因是地面点通常占激光雷达测量中捕获的总点数的一半左右。
通过从 LAS 数据集的图层属性过滤 LAS 数据集并使用 LAS 数据集转栅格工具,可以从 LAS 点的子集(例如地面分类点)生成可用作参考表面参数的输入的栅格表面。 如果在 Python 中使用该工具,则可以在创建栅格之前使用创建 LAS 数据集图层工具过滤出所需的点。 也可以使用点云转栅格工具从点云场景图层生成地表。 也可以使用并非源自输入点云的栅格表面,但必须确保栅格中的 z 值与点云中的 z 值适当地对应。
排除的类代码参数可用于忽略与类代码关联的、无法提供用于推断如何识别感兴趣对象的有用上下文的点。 这样可以通过减少被评估的点的数量来提高训练过程的速度。 例如,对于训练诸如交通信号灯、电力线和各种铁路资产对象的分类模型而言,建筑物分类点通常无关紧要。 也可以使用分类 LAS 建筑物工具分类建筑物点。 将代表建筑物的类 6 指定为已排除的类将会从训练数据中忽略建筑物点。 任何将使用通过已排除类训练的模型的点云都应该在应用模型之前对这些类进行分类。 这些类还应在使用经过训练的模型对点云进行分类和评估点云训练数据工具的排除的类代码参数中列出,以便模型可以使用与用于训练模型的数据的特征相匹配的点云来推断其分类。
如果输入点云的空间参考未使用投影坐标系,则可以使用输出坐标系环境定义在分类点时将使用的投影坐标系。
参数
arcpy.ddd.PreparePointCloudTrainingData(in_point_cloud, block_size, out_training_data, {training_boundary}, {validation_point_cloud}, {validation_boundary}, {class_codes_of_interest}, {block_point_limit}, {reference_height}, {excluded_class_codes})
名称 | 说明 | 数据类型 |
in_point_cloud | 如果未指定任何验证点云,则将用于创建训练数据以及可能用于创建验证数据的点云。 在这种情况下,必须同时定义训练边界和验证边界。 | LAS Dataset Layer; File |
block_size | 根据输入点云创建的每个圆形 HDF5 切片的直径大小。 通常,块大小应足够大,才能捕获感兴趣对象及其周围环境。 | Linear Unit |
out_training_data | 输出训练数据 (*.pctd) 的位置和名称。 | File |
training_boundary (可选) | 将根据用于训练深度学习模型的输入点云描绘点的子集的边界面。 | Feature Layer |
validation_point_cloud (可选) | 将用于验证深度学习模型的点云的源。 该数据集必须引用与输入点云不同的点集,才能确保经过训练的模型的质量。 如果未指定验证点云,则输入点云可用于通过为 training_boundary 和 validation_boundary 参数提供面要素类来定义训练和验证数据集。 | LAS Dataset Layer; File |
validation_boundary (可选) | 将描绘用于在训练过程中评估模型的点子集的面要素。 如果未指定验证点云,则将从输入点云中获取这些点。 | Feature Layer |
class_codes_of_interest [class_codes_of_interest,...] (可选) | 将用于限制导出的训练数据块的类代码。 块中所有至少包含一个为此参数列出的值的点都将被导出,但 excluded_class_codes 参数中指定的类或标记为保留点的点除外。 可以指定 0 到 255 范围内的任何值。 | Value Table |
block_point_limit (可选) | 每个训练数据块中将允许的最大点数。 如果某个块中包含的点数超过该值,则将针对同一位置创建多个块,以确保训练时使用所有这些点。 | Long |
reference_height (可选) | 将用于为点云数据中的每个点提供相对高度值的栅格表面。 与栅格不重叠的点将在分析中忽略。 | Raster Layer |
excluded_class_codes [excluded_class_codes,...] (可选) | 将从训练数据中排除的类代码。 可以指定 0 到 255 范围内的任何值。 | Long |
代码示例
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
arcpy.env.workspace = 'C:/data'
arcpy.ddd.PreparePointCloudTrainingData('training_source.lasd', '35 Meters', 'vegetation_training.pctd',
validation_point_cloud='validation_source.lasd',
class_codes_of_interest=[14, 15], block_point_limit=12000,
reference_height='Ground_Elevation.tif',
excluded_class_codes=[2, 6, 8, 9, 20])
许可信息
- Basic: 需要 3D Analyst
- Standard: 需要 3D Analyst
- Advanced: 需要 3D Analyst