检测对象

获得 Image Analyst 许可后可用。

要检测输入影像上的对象,使用使用深度学习检测对象工具,该工具会在影像中的对象或要素周围生成边界框以标识其位置。 下图是使用 ArcGIS 中的深度学习工具检测棕榈树的示例:

棕榈树检测

使用深度学习的典型对象检测工作流主要分三步:

  1. 创建并导出训练样本。 使用标注对象以供深度学习窗格创建训练样本,然后使用导出训练数据进行深度学习工具将样本转换为深度学习训练数据。
  2. 训练深度学习模型。 使用训练深度学习模型工具通过在上一步中创建的训练样本训练模型。
  3. 执行推断 - 使用使用深度学习检测对象工具。 您将使用在步骤 2 中创建的模型。

在完成对象检测工作流后,建议您执行质量控制分析并检查结果。 如果您对结果不满意,可通过添加更多训练样本改进模型并再次执行工作流。 为了帮助您检查结果,可使用属性窗格。 为了帮助验证结果的精度,可使用计算对象检测的精度工具。

有关更多示例、支持的元数据格式和模型类型架构,请参阅深度学习模型架构

创建并导出训练样本

创建训练方案和训练样本并导出训练数据。

如果栅格数据集或要素类中存在现有训练样本,则可以使用导出训练数据进行深度学习工具继续执行下面的“训练深度学习模型”部分。

  1. 创建训练方案。
    1. 将要用于生成训练样本的图像添加到地图。
    2. 内容窗格中,选择之前添加的图像。
    3. 单击影像选项卡。
    4. 单击深度学习工具,然后单击标注对象以进行深度学习

      影像分类窗格随即显示,其中包含空白方案。

    5. 影像分类窗格中,右键单击新建方案并单击编辑属性

      编辑新方案

    6. 提供方案名称。

      编辑方案名称

    7. 单击保存

    已在影像分类窗格中对此方案进行重命名,可向其添加类。

  2. 向方案添加新类。
    1. 右键单击之前创建的方案,然后单击添加新类

      添加新类选项

    2. 提供类名称。

      新类名称

    3. 提供类值。

      值不能为 0。

    4. (可选)选择类的颜色。
    5. 单击确定

      该类即会添加至影像分类窗格中的方案。

    6. (可选)重复步骤 2a 到 2e 添加更多类。
  3. 创建训练样本。
    1. 选择圆等绘制工具,然后使用该工具在对象周围绘制边界。

      圆形工具

      棕榈树示例
      此棕榈树训练样本是使用工具创建的。

      如果您对某个对象不确定,不要包含该对象。 边界可以重叠。

    2. 使用绘制工具选择多个要素。

      由于最终的模型将考虑所识别对象的大小,因为您可以选择各种大小的对象。

      训练样本
      这些训练样本是在不同区域中创建的,具有不同的大小来显示各种样本。

  4. 在创建完训练样本后,在影像分类窗格中单击保存

    “保存”按钮

    1. 保存当前训练样本窗口中,浏览至地理数据库。
    2. 提供要素类的名称,然后单击保存

    在训练模型之前,必须将训练样本导出为影像片。 影像片为包含一个或多个要检测对象的小影像。

  5. 影像分类窗格中,单击导出训练数据选项卡,然后执行以下操作:
    1. 提供输出文件夹值。

      这是将存储输出影像片和元数据的文件夹的路径和名称。

    2. (可选)提供掩膜面值。

      这是描绘可创建影像片的区域的面要素类。 系统仅会创建完全位于面内的影像片。

    3. (可选)选择影像片的影像格式值。

      支持的格式包括 TIFF、PNG、JPEG 和 MRF。

    4. (可选)指定切片大小 X切片大小 Y 值。

      这些是影像片的 X 尺寸和 Y 尺寸。 默认值通常会生成优质结果。 通常,将为两个尺寸指定相同的大小。

    5. (可选)指定步幅 X步幅 Y 值。

      这是创建下一个影像片时在 x 方向和 y 方向上移动的距离。 当步幅等于切片大小时,不存在重叠。 当步幅等于切片大小的一半时,存在 50% 的重叠。

    6. (可选)指定旋转角度值。

      影像片将旋转指定角度以创建附加影像片。 将针对每个角度创建一个附加影像片,直到影像片完全旋转。 例如,如果指定旋转角度为 45 度,则将创建 8 个影像片。 将针对以下角度创建影像片:45、90、135、180、225、270 和 315 度。

    7. (可选)选择参考系值。

      这是用于解释输入影像的参考系。 可选择地图空间像素空间。 地图空间使用基于地图的坐标系,这是当输入栅格定义了空间参考时的默认选项。 像素空间使用影像空间坐标系,没有旋转或畸变。 当输入影像已定向或倾斜时,建议使用像素空间选项。 指定的参考系必须与用于训练深度学习模型的参考系相匹配。

    8. (可选)选中不输出要素切片复选框。

      当选中此选项时,将导出所有影像片,包括未捕获训练样本的影像片。 如果未选中此选项,则将仅导出捕获训练样本的影像片。 默认情况下取消选中该项。

    9. (可选)选择元数据格式值。

      适用于对象检测的元数据格式包括已标注切片、Pascal 可视化对象类或 RCNN 掩膜。

    10. 单击运行导出训练数据。

导出训练数据选项卡

训练深度学习模型

训练深度学习模型工具使用已标注影像片确定每张影像中用于表示对象的像素组合。 您将使用这些训练样本训练深度学习模型。 在该工具中,仅需要输入训练数据输出模型参数。

由于输入训练数据基于元数据格式值,因此默认将分配适当的模型类型值。 例如,如果您在导出过程中指定了 PASCAL 可视化对象类元数据格式,则模型类型值将为单帧检测器模型类型参数的下拉列表还将更新为包含支持 PASCAL 可视化对象类元数据格式的模型类型。 批量大小模型自变量骨干模型参数均基于模型类型值进行填充。

  1. 打开训练深度学习模型工具。
  2. 对于输入训练数据参数,浏览到存储影像片的训练数据文件夹并将其选中。
  3. 对于输出模型参数,提供在训练后存储输出模型的文件夹的文件路径和名称。
  4. (可选)指定最大轮数参数值。

    一个轮数代表整个训练数据集的完整周期。 在每轮中,您存储在影像片文件夹中的训练数据集都将通过神经网络向前和向后传递一次。 通常,初始检查所用轮数为 20 到 50。 默认值为 20。 如果可以进一步改善模型,则可以使用相同的工具重新对其进行训练。

  5. (可选)在下拉列表中更改模型类型参数值。

    模型类型决定了将用于训练模型的深度学习算法和神经网络,例如单帧检测器 (SSD) 选项。 有关模型的详细信息,请参阅 ArcGIS 中的深度学习模型。 有关文档示例、支持的元数据和模型架构详细信息,请参阅深度学习模型架构

  6. (可选)更改模型自变量参数值。

    模型自变量参数将使用模型定义中的信息进行填充。 这些自变量会有所变化,具体取决于指定的模型架构。 可在模型自变量参数中找到适用于工具的模型自变量列表。

  7. (可选)设置批量大小参数值。

    此参数可确定每次训练的训练样本数。 批量大小值取决于诸多因素,例如影像片数、GPU 内存(如果使用了 GPU)以及学习率(如果使用了自定义值)。 通常,默认批量大小即可生成优质结果。

  8. (可选)提供学习率参数值。

    如果未提供任何值,则系统将在训练过程中从学习曲线中提取最佳学习率。

  9. (可选)指定骨干模型参数值。

    默认值基于模型架构。 可使用下拉列表更改默认骨干模型。

  10. (可选)提供预训练模型参数值。

    可以对具有相似类的预训练模型进行微调以适应新模型。 预训练模型必须已使用将用于训练新模型的相同模型类型和骨干模型进行了训练。

  11. (可选)更改验证百分比参数值。

    这是将用于验证模型的训练样本百分比。 该值取决于各种因素,例如训练样本数和模型架构。 通常,对于较小数量的训练数据,10% 到 20% 适用于验证。 如果存在大量训练数据,例如数千个样本,2% 到 5% 等较低的数据百分比适用于验证。 默认值为 10。

  12. (可选)选中当模型停止改进时停止参数。

    如果选中,则当模型不再改进时,无论所指定的最大轮数值为何,模型训练都将停止。 默认选中该选项。

  13. (可选)选中冻结模型参数。

    此参数用于指定是否冻结预训练模型中的骨干图层,以使权重和偏差保持原始设计。 如果选中此参数,将冻结骨干图层,并且不会在骨干模型参数中更改预定义权重和偏差。 如果未选中此选项,则不会冻结骨干图层,可以更改骨干模型参数值的权重和偏差以适应训练样本。 这需要更多的处理时间,但通常会产生更好的结果。 默认选中该选项。

  14. 单击运行开始训练。

下图显示了模型类型参数值设置为单帧检测器(对象检测)训练深度学习模型窗格。

“训练深度学习模型”工具参数

执行推断

要执行推断,需要使用生成的深度学习模型分析新数据。 推断指使用在深度学习训练过程中学到的信息检测数据集中的相似要素的过程。 您将使用使用深度学习检测对象工具,因为您要执行对象检测工作流。

  1. 打开使用深度学习检测对象工具。
  2. 对于输入栅格,浏览至要查找对象的输入栅格数据并将其选中。

    输入可以是单一栅格数据集、镶嵌数据集或影像服务中的多个栅格、影像文件夹或具有影像附件的要素类。

  3. 对于输出检测对象,输入输出要素类的名称。

    此输出要素类中包含在输入影像中检测到的对象周围的几何。

  4. 执行模型定义值(*.emd*.dlpk)。

    这是包含训练输出的模型文件。 这是训练深度学习部分的输出。

  5. 自变量参数将使用模型定义参数值中的信息进行填充。 这些自变量会有所变化,具体取决于当前使用的模型架构。 在此示例中,使用了单帧检测器模型,因此将填充以下自变量。 可接受默认值或对其进行编辑。

    这些自变量会有所变化,具体取决于当前使用的模型架构。 在此示例中,使用了单帧检测器模型,因此将填充以下自变量。 可接受默认值或对其进行编辑。

    1. padding - 影像切片边界处的像素数,将根据这些像素为相邻切片混合预测。 增加此值以减少伪影,使输出更加平滑。 内边距的最大值可以是切片大小值的一半。
    2. threshold - 置信度得分高于此数量的检测将包含在结果中。 允许的值范围为从 0 到 1.0。
    3. batch_size - 模型推断每个步骤中处理的影像切片数。 这取决于显卡的内存大小。
    4. nms_overlap - 两个重叠要素的最大重叠比,其定义为交集区域与并集区域之比。 默认值为 0.1。
    5. exclude_pad_detections - 如果此项为 true,则工具将过滤影像片内边距区域中的边附近可能被截断的检测结果。
    6. test_time_augmentation - 将在预测期间执行测试时数据增强。 如果为 true,则输入影像的翻转和旋转变体的预测将合并到最终输出中。
  6. (可选)选中非极大值抑制复选框。

    在选中此复选框后,检测到的重复对象将从输出中移除,您必须为以下三个参数提供信息:

    1. 置信度得分字段 - 要素类中包含将由对象检测方法输出的置信度得分的字段名称。
    2. 类值字段 - 输入要素类中类值字段的名称。
    3. 最大重叠比 - 两个重叠要素的最大重叠比,其定义为交集区域与并集区域之比。
  7. 单击运行开始推断。

    “使用深度学习检测对象”工具参数

在下面的结果图像中,检测到的棕榈树使用多边形边界框进行识别。

棕榈树检测结果

有关详细的对象检测示例,请参阅使用深度学习评估棕榈树健康情况

相关主题