准备点云训练数据 (3D Analyst)

摘要

用于生成相应数据,这些数据用于训练和验证 PointCNN 模型以对点云进行分类。

使用情况

  • 查看输入点云,以确保针对感兴趣对象对其点进行良好分类。 分类模型的质量将取决于用于训练和验证的数据的质量。 如果需要改进点云的分类,请考虑以交互方式编辑点分类。

    了解有关交互式 LAS 分类编辑的详细信息

  • 点云训练数据由扩展名为 .pctd 的目录定义,该目录包含两个子目录,一个子目录包含将用于训练分类模型的数据,另一个子目录包含将用于验证经过训练的模型的数据。 必须始终指定输入点云,因为它将提供用于训练的数据源。 可以选择定义训练边界,以限制导出用于训练的点。 同时还需要验证数据,可以通过执行以下任一操作来指定验证数据:

    • 提供验证点云。 该数据集必须引用与输入点云不同的点集。
    • 提供具有验证边界的验证点云。 由此将根据与验证边界重叠的验证点云部分创建验证数据。
    • 提供不含验证点云的训练边界和验证边界。 由此将根据与训练边界相交的输入点云部分创建训练数据,并根据与验证边界相交的输入点云部分创建验证点云。 边界要素不得相互重叠。
  • 在训练点云分类模型时,将使用足以捕获要分类的对象及其周围环境的块大小来导出训练和验证数据。 如果存在足够的周围数据以获取实现合理分类所需的环境,则块大小无需捕获整个对象。 如果块包含的点数超过指定的点限制,则将针对同一位置创建多个块。 例如,如果块点限制参数值为 10,000,并且给定块包含 22,000 个点,则将创建三个 10,000 个点的块,以确保每个块中的采样均匀。 某些点将在两个块中重复,但是所有点都将至少存储在一个块中。

  • 最好避免使用块大小和块点限制,这会导致创建许多超过点限制的块。 可以使用用作栅格数据的 LAS 点统计工具,通过生成相应的输出栅格来估计给定块大小中的点数,该输出栅格针对方法参数将使用点计数选项。 此栅格的像元大小应与所需块大小相匹配。 可以检查此栅格的图像直方图,以了解特定块大小范围内的块数,并相应地调整点限制。

    块点限制参数值还必须考虑将用于训练深度学习模型的计算机的专用 GPU 内存容量。 训练期间的内存分配将取决于用于训练模型的属性数量、给定块中的点数以及给定迭代批处理中处理的总块数。 如果需要较大的块大小以及较大的点限制以高效地训练模型,则可以在训练步骤中减小批处理大小,以确保能够处理较多的点。

  • 确保将输出写入相应位置,该位置的磁盘空间足够容纳训练数据。 此工具将创建未压缩的 HDF5 文件的部分重叠块,这些文件将在 4 个块中复制每个点。 在超过最大点限制的块中,可能最终会对某些点复制四次以上。 生成的训练数据将占用的磁盘空间至少是源点云数据的三倍。

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

参数

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

如果未指定任何验证点云,则将用于创建训练数据以及可能用于创建验证数据的点云。 在这种情况下,必须同时定义训练边界和验证边界。

LAS Dataset Layer; File
块大小

根据输入点云创建的每个 HDF5 切片的二维宽度和高度。 通常,块大小应足够大,才能捕获感兴趣对象及其周围环境。

Linear Unit
输出训练数据

输出训练数据 (*.pctd) 的位置和名称。

File
训练边界要素
(可选)

将根据用于训练深度学习模型的输入点云描绘点的子集的边界面。

Feature Layer
验证点云
(可选)

将用于验证深度学习模型的点云的源。 该数据集必须引用与输入点云不同的点集,才能确保经过训练的模型的质量。 如果未指定验证点云,则必须同时提供训练边界要素验证边界要素参数值。

LAS Dataset Layer; File
验证边界要素
(可选)

将描绘用于验证经过训练的模型的点子集的面要素。 如果未指定验证点云,则将从输入点云中获取这些点。

Feature Layer
感兴趣的类代码
(可选)

将导出的训练数据块限制为仅包含指定值的训练数据块的类代码。 对于至少包含此参数中列出的其中一个类代码的任何块,将导出该块中的所有点。

Long
块点限制
(可选)

每个训练数据块中允许的最大点数。 如果某个块中包含的点数超过该值,则将针对同一位置创建多个块,以确保训练时使用所有这些点。

Long

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})
名称说明数据类型
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_boundaryvalidation_boundary 参数值。

LAS Dataset Layer; File
validation_boundary
(可选)

将描绘用于验证经过训练的模型的点子集的面要素。 如果未指定验证点云,则将从输入点云中获取这些点。

Feature Layer
class_codes_of_interest
[class_codes_of_interest,...]
(可选)

将导出的训练数据块限制为仅包含指定值的训练数据块的类代码。 对于至少包含此参数中列出的其中一个类代码的任何块,将导出该块中的所有点。

Long
block_point_limit
(可选)

每个训练数据块中允许的最大点数。 如果某个块中包含的点数超过该值,则将针对同一位置创建多个块,以确保训练时使用所有这些点。

Long

代码示例

PreparePointCloudTrainingData 示例(Python 窗口)

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

import arcpy
arcpy.env.workspace = 'C:/data'
arcpy.ddd.PreparePointCloudTrainingData('training_source.lasd', '20 Meters', 'vegetation_training.pctd', 
                                        validation_point_cloud='validation_source.lasd')

许可信息

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

相关主题