使用训练的模型从点云中检测对象 (3D Analyst)

摘要

使用深度学习模型,检测在点云中捕捉到的对象。

插图

使用训练的模型从点云中检测对象工具图示

使用情况

  • 此工具需要安装 Deep Learning Essentials,该要素提供了多个神经网络解决方案,其中包括用于分类点云的神经架构。

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

  • 对象检测模型不需要对输入点云进行分类。 但是,将要评估的点云应具有与用于训练模型的点云数据相似的特征。 例如,使用陆地点云训练的用于分类汽车的对象检测模型点云将适用于其他陆地点云,但在从航空激光雷达测量中收集的点云上可能效果不佳。

  • 该模型可以识别多种对象,其中一些可能重叠。 要细化这些检测结果,需使用两个关键阈值:置信度得分阈值和重叠阈值。 置信度得分是一个介于 0.0 和 1.0 之间的数值,表示对象被正确识别的可能性有多大。 较高的得分意味着确定性更高,可以设置一个阈值来过滤掉低于特定置信度级别的检测结果。

    在多个相似对象具有重叠边界框的情况下,重叠阈值变得更为重要。 此测量值使用交并比 (IoU) 比率,通过将重叠边界框的交集体积除以并集体积进行计算。 对于 IoU 超过重叠阈值的对象,仅保留具有最高置信度得分的对象。 使用非极大值抑制 (NMS) 算法确保最终输出中仅包含最相关的检测结果。

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

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

参数

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

将用于检测对象的点云。

LAS Dataset Layer
输入模型定义

将使用的对象检测模型。 可以指定 Esri 模型定义文件 (.emd),深度学习包 (.dlpk) 或从 ArcGIS OnlinePortal for ArcGIS 的发布的对象检测模型。

File; String
目标对象

将在输入点云中识别的对象,以及用于接受检测到的对象的置信度和重叠阈值。

  • 对象代码 - 表示模型经过训练以识别的对象的代码。
  • 置信度 - 对象识别的置信度阈值在 0.0 到 1.0 的范围内。 较高的值意味着将符合正确识别条件的对象越少。 将阈值设置为 1.0 需要对象检测具有 100% 确定性,任何被识别的对象几乎都不可能满足此要求。 如果要在输出中排除特定对象,可将其置信度阈值设置为 1.0。
  • 重叠 - 利用重叠阈值,可以在多个重叠对象被识别时,选择将保留的对象。 重叠阈值描述了重叠边界框的交集与并集之间的比率。 当多个对象重叠并超过重叠阈值时,将保留置信度较高的对象。

Value Table
输出对象要素

包含从输入点云中检测到的对象周围边界框的输出多面体要素。

Feature Class
批大小
(可选)

将同时处理的输入点云块的数量。 如果未提供值,则每次处理一个块。

Long
处理边界

定义将进行处理的感兴趣区域的面要素。

Feature Layer
参考表面

将用于计算每个点的相对高度的栅格表面。 当输入模型包含相对高度属性(指示使用参考高度栅格表面进行训练)时,此参数为必需项。

Raster Layer
已排除的类

将从要处理以检测对象的点云中排除的输入点云的类代码。 如果该模型在训练时省略了某些类代码的点云,则输入点云中的点应具有相同类别的对象,以获得最佳结果。

Long

arcpy.ddd.DetectObjectsFromPointCloudUsingTrainedModel(in_point_cloud, in_trained_model, target_objects, out_features, {batch_size}, boundary, reference_height, excluded_class_codes)
名称说明数据类型
in_point_cloud

将用于检测对象的点云。

LAS Dataset Layer
in_trained_model

将使用的对象检测模型。 可以指定 Esri 模型定义文件 (.emd),深度学习包 (.dlpk) 或从 ArcGIS OnlinePortal for ArcGIS 的发布的对象检测模型。

File; String
target_objects
[target_objects,...]

将在输入点云中识别的对象,以及用于接受检测到的对象的置信度和重叠阈值。

  • 对象代码 - 表示模型经过训练以识别的对象的代码。
  • 置信度 - 对象识别的置信度阈值在 0.0 到 1.0 的范围内。 较高的值意味着将符合正确识别条件的对象越少。 将阈值设置为 1.0 需要对象检测具有 100% 确定性,任何被识别的对象几乎都不可能满足此要求。 如果要在输出中排除特定对象,可将其置信度阈值设置为 1.0。
  • 重叠 - 利用重叠阈值,可以在多个重叠对象被识别时,选择将保留的对象。 重叠阈值描述了重叠边界框的交集与并集之间的比率。 当多个对象重叠并超过重叠阈值时,将保留置信度较高的对象。

Value Table
out_features

包含从输入点云中检测到的对象周围边界框的输出多面体要素。

Feature Class
batch_size
(可选)

将同时处理的输入点云块的数量。 如果未提供值,则每次处理一个块。

Long
boundary

定义将进行处理的感兴趣区域的面要素。

Feature Layer
reference_height

将用于计算每个点的相对高度的栅格表面。 当输入模型包含相对高度属性(指示使用参考高度栅格表面进行训练)时,此参数为必需项。

Raster Layer
excluded_class_codes
[excluded_class_codes,...]

将从要处理以检测对象的点云中排除的输入点云的类代码。 如果该模型在训练时省略了某些类代码的点云,则输入点云中的点应具有相同类别的对象,以获得最佳结果。

Long

代码示例

DetectObjectsFromPointCloudUsingTrainedModel 示例(Python 窗口)

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

import arcpy
arcpy.env.workspace = 'C:/data/detect_cars'
arcpy.ddd.DetectObjectsFromPointCloudUsingTrainedModel('2018_survey.lasd', 'cars.emd',
                                                       [(1, 0.7, 0.4)], 'Cars_in_Point_Cloud.shp',
                                                       10, 'study_area_boundary.shp',
                                                       'dem.tif', [2, 6, 7, 18])