标注 | 说明 | 数据类型 |
输入点云 | 将用于创建训练数据的点云,如果未提供验证点云,则可能用于创建验证数据。 在这种情况下,必须同时定义训练边界和验证边界。 | LAS Dataset Layer; File |
块大小 | 将根据输入点云创建的每个训练数据块的直径。 通常,块大小应足够大,才能捕获感兴趣对象及其周围环境。 | Linear Unit |
输出训练数据 | 输出训练数据(*.pctd 文件)的位置和名称。 | File |
训练边界要素 (可选) | 将根据用于训练模型的输入点云描绘点的子集的面要素。 如果未提供验证点云参数值,则此参数为必需项。 | Feature Layer |
验证点云 (可选) | 在训练过程中将用于验证深度学习模型的点云。 该数据集必须引用与输入点云不同的点集,才能确保经过训练的模型的质量。 如果未提供验证点云,则输入点云可用于通过为训练边界要素和验证边界要素参数提供面要素类来定义训练和验证数据集。 | LAS Dataset Layer; File |
验证边界要素 (可选) | 将描绘用于在训练过程中验证模型的点子集的面要素。 如果未提供验证点云,则将从输入点云中获取点;对于训练边界要素参数,面将为必需项。 | Feature Layer |
按类代码过滤块 (可选) | 将用于限制导出的训练数据块的类代码。 块中所有至少包含一个为此参数列出的值的点都将被导出,但排除的类代码参数中指定的类或标记为保留点的点除外。 可以指定 0 到 255 范围内的任何值。 | Value Table |
块点限制 (可选) | 每个训练数据块中将允许的最大点数。 如果某个块中包含的点数超过该值,则将针对同一位置创建多个块,以确保训练时使用所有这些点。 默认值为 8,192。 | Long |
参考表面 (可选) | 将用于为点云数据中的每个点提供相对高度值的栅格表面。 与栅格不重叠的点将在分析中忽略。 | Raster Layer |
排除的类代码 (可选) | 将从训练数据中排除的类代码。 可以指定 0 到 255 范围内的任何值。 | Long |
摘要
用于生成相应数据,这些数据用于训练和验证点云分类模型。
使用情况
查看输入点云,以确保针对感兴趣对象对其点进行良好分类。 分类模型的质量将取决于用于训练和验证的数据的质量。 如果需要改进点云的分类,请考虑以交互方式编辑点分类。
点云训练数据由扩展名为 .pctd 的目录定义,该目录包含两个子目录,一个子目录包含将用于训练分类模型的数据,另一个子目录包含将用于验证经过训练的模型的数据。 必须始终指定输入点云,因为它将提供用于训练的数据源。 可以定义训练边界,以限制导出用于训练的点。 同时还需要验证数据,可以通过执行以下任一操作来指定验证数据:
- 提供验证点云。 该数据集必须引用与输入点云不同的点集。
- 提供具有验证边界的验证点云。 由此将根据与验证边界重叠的验证点云部分创建验证数据。
- 提供不含验证点云的训练边界和验证边界。 由此将根据与训练边界相交的输入点云部分创建训练数据,并根据与验证边界相交的输入点云部分创建验证点云。 边界要素不得相互重叠。
输入点云应该具有相当一致的点密度。 评估点云以确定其是否包含点密度较高的位置,例如通过重叠航线测量或者闲置的地面扫描仪采集的区域。 对于具有重叠航线的机载激光雷达,可以使用分类 LAS 重叠工具来标记重叠点并实现更加一致的点分布。 可以使用稀疏化 LAS 工具将具有过采样热点的其他类型的点云稀疏化为规则分布。
对于点云中的点,可以在训练数据中通过其类代码将其从排除,从而通过减少必须处理的点的数量来帮助提高模型训练的性能。 排除的点应属于易于分类的类,并且无需为正在训练模型的对象提供足够的背景。 请考虑过滤掉分类为重叠或噪声的点。 如果在训练数据的生成过程中计算距地面的高度,也可以过滤掉地面分类点。
可以将参考高度信息合并到训练数据中,从而为训练过程提供其他属性。 该操作是通过在参考表面参数中指定栅格来完成的。 此栅格用于派生出每个重叠点的相对高度属性。 取每个点的 z 值并减去通过双线性插值法从栅格获得的高度,即可计算属性。 包含此信息有助于区分与栅格表面具有不同相对高度范围的对象。 此外,该信息还可为神经网络推断方向关系提供另一项依据。 例如,在训练电力线并使用地面高程栅格作为参考表面时,电力线点可能会位于地面以上的特定相对高度范围内。 此外,当参考高度基于地面高程时,一旦地面点的存在无法为识别感兴趣对象提供有用的上下文,则参考高度可以提供用于消除训练数据中所包含地面点的前文本。 神经网络将尝试学习在训练期间提供给它的所有数据的分类。 由于可以使用分类 LAS 地面点工具实现高质量的地面分类,因此无需训练神经网络以识别地面点并将其与其他类进行区分。 地面点(通常由类 2 表示,有时也由类 8 和类 20 表示)可以通过在排除的类代码参数中将其列出来排除。 完成此操作后,神经网络将以更高的速度处理训练数据,原因是地面点通常占激光雷达测量中捕获的总点数的一半左右。
用作参考表面参数输入的栅格表面可以通过过滤 LAS 数据集并使用 LAS 数据集转栅格工具从 LAS 点的子集(例如地面分类点)生成。 可以使用分类代码、返回值和分类标志的任意组合来过滤 LAS 数据集中所需的点子集。 可以通过 LAS 数据集图层的属性对话框或创建 LAS 数据集图层工具应用点过滤器。 也可以使用点云转栅格工具从点云场景图层生成栅格表面。
排除的类代码参数可用于忽略与类代码关联的、无法提供用于推断如何识别感兴趣对象的有用上下文的点。 省略这些点,可以通过减少被评估的点的数量来提高训练过程的速度。 例如,构建分类点通常对于训练交通灯、电线和其他资产等对象的分类模型并不重要。 还可以使用分类 LAS 建筑工具对建筑点进行可靠分类。 将代表建筑物的类 6 指定为已排除的类将会从训练数据中忽略建筑物点。 任何将使用通过已排除类训练的模型的点云都应该在应用模型之前对这些类进行分类。 这些类还应在使用经过训练的模型对点云进行分类和评估点云训练数据工具的排除的类代码参数中列出,以便模型可以使用与用于训练模型的数据的特征相匹配的点云来推断其分类。
块点限制应反映数据的块大小和平均点间距。 可以将用作栅格数据的 LAS 点统计工具以及方法参数的点计数选项配合使用,并将所需块大小作为输出栅格的像元大小,以估算给定块中的点数。 此栅格的图像直方图可以演示数据集中每个块的点分布。 如果直方图传达了大量具有宽方差的块,则可能指示存在包含密集点集合的潜在热点的不规则采样数据。 如果块包含的点数超过块点限制,则将多次创建该块,以确保在训练数据中表示其所有点。 例如,如果点限制为 10,000,并且给定块包含 22,000 个点,则将创建三个 10,000 个点的块,以确保每个块中的采样均匀。 还应该避免明显高于大多数块中标称点计数的块点限制。 在某些架构中,将对数据进行上采样以符合点限制。 由于这些原因,请使用接近覆盖训练数据中大部分块的预期点计数的块大小和块点限制。 创建训练数据后,工具的消息窗口中将显示直方图,并且其图像存储在包含训练和验证数据的文件夹中。 可以查看此直方图以确定是否指定了适当的块大小和点限制组合。 如果这些值指示点限制不理想,请针对块点限制参数使用更合适的值来重新运行该工具。
-
确保将输出写入相应位置,该位置的磁盘空间足够容纳训练数据。 此工具将创建未压缩的 HDF5 文件的部分重叠块,这些文件将在 4 个块中复制每个点。 在超过最大点限制的块中,可能会对某些点复制四次以上。 生成的训练数据将占用的磁盘空间至少是源点云数据的三倍。
参数
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 | 将根据输入点云创建的每个训练数据块的直径。 通常,块大小应足够大,才能捕获感兴趣对象及其周围环境。 | Linear Unit |
out_training_data | 输出训练数据(*.pctd 文件)的位置和名称。 | File |
training_boundary (可选) | 将根据用于训练模型的输入点云描绘点的子集的面要素。 如果未提供 validation_point_cloud 参数值,则此参数为必需项。 | Feature Layer |
validation_point_cloud (可选) | 将用于验证深度学习模型的点云的源。 该数据集必须引用与输入点云不同的点集,才能确保经过训练的模型的质量。 如果未提供验证点云,则输入点云可用于通过为 training_boundary 和 validation_boundary 参数提供面要素类来定义训练和验证数据集。 | LAS Dataset Layer; File |
validation_boundary (可选) | 将描绘用于在训练过程中验证模型的点子集的面要素。 如果未提供验证点云,则将从输入点云中获取点;对于 training_boundary 参数,面将为必需项。 | Feature Layer |
class_codes_of_interest [class_codes_of_interest,...] (可选) | 将用于限制导出的训练数据块的类代码。 块中所有至少包含一个为此参数列出的值的点都将被导出,但 excluded_class_codes 参数中指定的类或标记为保留点的点除外。 可以指定 0 到 255 范围内的任何值。 | Value Table |
block_point_limit (可选) | 每个训练数据块中将允许的最大点数。 如果某个块中包含的点数超过该值,则将针对同一位置创建多个块,以确保训练时使用所有这些点。 默认值为 8,192。 | 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])