ArcGIS Pro 中的深度学习

获得 Image Analyst 许可后可用。

ArcGIS Pro 允许使用统计或机器学习分类方法对遥感影像进行分类。深度学习是一种机器学习,依赖于多图层的非线性处理以便进行模型中描述的要素识别和图案识别。深度学习模型可以与 ArcGIS Pro 集成,用于对象检测、对象分类和影像分类。

使用分类和深度学习工具在 ArcGIS Pro 中生成感兴趣要素或对象的训练样本。这些训练样本用于通过地理处理工具来训练深度学习模型,生成的模型定义文件或深度学习模型包 (.dlpk) 用于运行推断地理处理工具以提取特定对象位置、对对象进行分类或标注,或对影像中的像素进行分类。也可以在 ArcGIS Pro 外部使用外部第三方框架训练模型,然后使用模型定义文件运行推断地理处理工具。模型定义文件和 .dlpk 包可以多次用作地理处理工具的输入,从而可以在训练模型后可轻松评估不同位置和时间段的多个影像。

工作流如下图所示。

深度学习工作流

步长说明

深度学习步骤 1

使用标注对象以供深度学习窗格创建训练样本,然后使用导出训练数据进行深度学习工具将样本转换为深度学习训练数据。

深度学习步骤 2

使用训练深度学习模型工具通过 PyTorch 训练模型,或在 ArcGIS Pro 外部使用支持的第三方深度学习框架训练模型。

深度学习步骤 3

使用训练模型运行使用深度学习检测对象工具、使用深度学习分类像素工具或使用深度学习分类对象工具以生成输出。

特性和功能

通过 ArcGIS Pro 中的深度学习工具,可以使用除标准机器学习分类方法以外的更多方法。

  • 使用卷积神经网络或深度学习模型检测对象、对对象进行分类或对图像像素进行分类。
  • 集成外部深度学习模型框架,例如 TensorFlow、PyTorch 和 Keras。
  • 多次使用模型定义文件来检测随时间的变化或检测不同感兴趣区域中的对象。
  • 生成面要素类来显示检测到的对象的位置,以供其他分析或工作流使用。
  • 利用 GPU 处理以及使用 CPU 进行分布式处理。

深度学习入门

可在 ArcGIS Pro 中使用标准训练样本生成工具创建和导出训练样本。深度学习模型可以使用训练深度学习模型工具通过 PyTorch 框架进行训练,或者可以在 ArcGIS Pro 外部使用另一个深度学习框架进行训练。训练模型后,使用 Esri 模型定义文件 (.emd) 运行地理处理工具以检测影像中的要素或对其进行分类。

您必须安装深度学习框架 Python 包;否则,在将 Esri 模型定义文件添加到深度学习地理处理工具时会出现错误。有关如何安装这些包的信息,请参阅安装 ArcGIS 的深度学习框架

  1. 创建并导出训练样本。
    1. 使用标注对象以供深度学习窗格或训练样本管理器来选择或创建分类方案。
    2. 为感兴趣的类类别或类要素创建训练站点样本。保存训练样本文件。
    3. 运行导出训练数据进行深度学习地理处理工具,将源影像和训练样本转换为深度学习训练数据。源影像可以是影像服务、镶嵌数据集、栅格数据集或栅格文件夹。该工具的输出为影像片或样本,其中包含用于训练深度学习模型的训练场。该工具的另一个输出是必须填充的模板文件 .emd
  2. 训练深度学习模型。
    1. 使用训练深度学习模型工具通过在上一步中生成的影像片训练深度学习模型。
  3. ArcGIS Pro 中运行推理地理处理工具。
    1. 使用使用深度学习检测对象使用深度学习 分类像素使用深度学习分类对象地理处理工具处理影像。如果经过训练的模型整合了自定义 Python 栅格函数及其他变量(如用于微调灵敏度的填充或置信度阈值),则这些变量将显示在地理处理工具的用户输入对话框中。数据类型(如字符串或数字)在 Python 栅格函数中指定。理想情况下,其他推断参数的个数限制应为两个。

      Esri 模型定义参数值可以是 Esri 模型定义 JSON 文件 (.emd) 或 JSON 字符串。当在服务器上使用此工具时,JSON 字符串十分有用,因为您可以直接粘贴 JSON 字符串,而无需上传 .emd 文件。

      使用深度学习检测对象工具的输出是显示模型检测到的对象的要素类。使用深度学习分类像素工具会输出已分类栅格。使用深度学习分类对象工具需要要素类和影像作为输入数据集,并将生成一个要素类,其中每个要素中的每个对象均以类名称标注。

有关运行此工具的要求以及您可能遇到的问题的信息,请参阅 ArcGIS Pro 常见问题中的深度学习深度学习常见问题 PDF

Esri 模型定义文件

.emd 文件是 JSON 文件,用于描述经过训练的深度学习模型。该文件包含运行推断工具所需的模型定义参数,并且应由训练该模型的数据科学家进行修改。文件中的必选参数与可选参数如下表所述。

.emd 文件完成并验证后,只要输入影像来自与原始模型输入相同的传感器,且正在检测的类或对象相同,则可以将该文件多次用于推理。例如,可以使用通过 Sentinel-2 卫星影像定义的具有检测油井平台模型的 .emd 文件,检测多个感兴趣区域和多个使用 Sentinel-2 影像的日期的油井平台。

下表列出了所有推断工具所使用的一些参数。还有一些参数仅适用于特定工具,例如 CropSizeFixedBlackenAroundFeature 参数,二者仅适用于使用深度学习分类对象工具。

模型定义文件参数说明

框架

用于训练模型的深度学习框架的名称。

支持以下深度学习框架:

  • TensorFlow
  • Keras
  • PyTorch
如果使用未列出的深度学习框架训练模型,则需要一起使用自定义推断函数(Python 模块)和经过训练的模型,并且必须将 InferenceFunction 设置为 Python 模块路径。

ModelConfiguration

模型配置的名称。

模型配置用于定义模型输入和输出、推断逻辑以及关于模型输入和输出的假设。现有开源深度学习工作流用于定义标准输入和输出配置以及推断逻辑。ArcGIS 支持以下预定义配置集:

TensorFlow

  • ObjectDetectionAPI
  • DeepLab

Keras

  • MaskRCNN

如果使用了其中一个预定义配置,请在 .emd 文件中输入配置的名称。如果使用自定义配置训练深度学习模型,则必须在 .emd 文件或自定义 Python 文件中对输入和输出进行完整描述。

ModelType

模型类型。

  • ImageClassification - 用于对像素进行分类
  • ObjectDetection - 用于检测对象或要素
  • 对象分类 - 用于对对象和要素进行分类

ModelFile

经过训练的深度学习模型文件的路径。文件格式将取决于模型框架。例如,在 TensorFlow 中,模型文件为 .pb 文件。

说明

提供有关模型的信息。模型信息可以包含描述已训练模型的所有信息。例如,模型编号和名称、模型创建时间、性能精度等等。

InferenceFunction

(可选)

推断函数的路径。

推断函数了解经过训练的模型数据文件并提供推断逻辑。ArcGIS Pro 深度学习地理处理工具支持六种推断函数:

  • 使用 TensorFlow 检测对象
  • 使用 Tensor Flow 分类像素
  • 使用 Keras 检测对象
  • 使用 PyTorch 检测对象
  • 使用 Pytorch 分类对象
如果您使用的推断函数是上述之一,则无需在 .emd 文件中指定。如果使用尚不支持的深度学习模型配置训练模型,或者需要特殊的推断逻辑,则需要一起使用自定义推断函数(Python 模块)和经过训练的模型。在这种情况下,请将 InferenceFunction 设置为 Python 模块路径。推断 Python 模块文件可以位于 ArcGIS Pro 可访问的任何位置。

SensorName

(可选)

用于收集生成训练样本时基于的影像的传感器的名称。

RasterCount

(可选)

用于生成训练样本的栅格数。

BandList

(可选)

源影像中使用的波段列表

ImageHeight

(可选)

正在分类或处理的影像中的行数。

ImageWidth

(可选)

正在分类或处理的影像中的列数。

ExtractBands

(可选)

要从输入影像中提取的波段索引或波段名称。

(可选)

有关输出类类别或对象的信息。

DataRange

(可选)

如果在预处理中进行了缩放或归一化,则为数据值的范围。

ModelPadding

(可选)

要添加到输入影像以用于推断的填充量。

BatchSize

(可选)

模型每次迭代中将使用的训练样本数量。

PerProcessGPUMemoryFraction

(可选)

为模型中每次迭代分配的 GPU 内存的比例。默认值为 0.95 或 95%。

MetaDataMode

(可选)

用于影像片的元数据标注的格式。

ImageSpaceUsed

(可选)

用于训练模型的参考系统的类型。

  • MAP_SPACE
  • PIXEL_SPACE

WellKnownBandNames

(可选)

按照波段索引的顺序为每个输入波段提供的名称。然后,可以在其他工具中按照这些给定名称来引用波段。

AllTileStats

训练数据中每个波段的统计数据。

下面是使用标准模型配置的模型定义文件 (.emd) 的示例:

{
    "Framework": "TensorFlow",
    "ModelConfiguration": "ObjectDetectionAPI",
    "ModelFile":"C:\\ModelFolder\\ObjectDetection\\tree_detection.pb",
    "ModelType":"ObjectionDetection",
    "ImageHeight":850,
    "ImageWidth":850,
    "ExtractBands":[0,1,2],
    "Classes" : [
      {
        "Value": 0,
        "Name": "Tree",
        "Color": [0, 255, 0]
      }
    ]
}

下面是配置中包含多个可选参数的模型定义文件 (.emd) 的示例:

{
    "Framework": "PyTorch",    "ModelConfiguration": "FasterRCNN",    "ModelFile":"C:\\ModelFolder\\ObjectDetection\\river_detection.pb",    "ModelType":"ObjectionDetection",				"Description":"This is a river detection model for  imagery",    "ImageHeight":448,    "ImageWidth":448,    "ExtractBands":[0,1,2,3],				"DataRange":[0.1, 1.0],				"ModelPadding":64,				"BatchSize":8,				"PerProcessGPUMemoryFraction":0.8,				"MetaDataMode" : "PASCAL_VOC_rectangles",				"ImageSpaceUsed" : "MAP_SPACE",    "Classes" : [      {
        "Value": 1,        "Name": "River",        "Color": [0, 255, 0]      }
    ],				"InputRastersProps" : {
						"RasterCount" : 1,						"SensorName" : "Landsat 8",						"BandNames" : [								"Red",								"Green",								"Blue",								"NearInfrared"
						]				},				"AllTilesStats" : [      {
      		"BandName" : "Red",      		"Min" : 1,      		"Max" : 60419,      		"Mean" : 7669.720049855654,      		"StdDev" : 1512.7546387966217      },      {
      		"BandName" : "Green",      		"Min" : 1,      		"Max" : 50452,      		"Mean" : 8771.2498195125681,      		"StdDev" : 1429.1063589515179      },      {
      		"BandName" : "Blue",      		"Min" : 1,      		"Max" : 47305,      		"Mean" : 9306.0475897744163,      		"StdDev" : 1429.380049936676      },      {
      		"BandName" : "NearInfrared",      		"Min" : 1,      		"Max" : 60185,      		"Mean" : 17881.499184561973,      		"StdDev" : 5550.4055277121679      }
    ], }

深度学习模型包

深度学习模型包 (.dlpk) 包含运行深度学习推断工具所需的文件和数据以进行对象检测或影像分类。该包可以作为 DLPK 项目上传到您的门户,并用作深度学习栅格分析工具的输入。

深度学习模型包必须包含 Esri 模型定义文件 (.emd) 和经过训练的模型文件。经过训练的模型文件扩展名取决于您用于训练模型的框架。例如,如果您使用 TensorFlow 训练模型,则模型文件将为 .pb 文件,而使用 Keras 训练的模型将生成 .h5 文件。根据您用于训练模型的模型框架和选项,您可能需要包括 Python Raster 函数 (.py) 或其他文件。您可以在一个深度学习模型包中包括多个经过训练的模型文件。

大多数包可以在任何版本的 ArcGIS Pro 中打开。默认情况下,包的内容存储在 <User Documents>\ArcGIS\Packages 文件夹中。您可以在共享和下载选项中更改此位置。在当前用于使用包的 ArcGIS Pro 版本中不受支持的包功能将不可用。

要查看或编辑 .dlpk 包的属性,或在 .dlpk 包中添加或移除文件,右键单击目录窗格中的 .dlpk 包,然后单击属性

在“目录”窗格中打开深度学习包

属性包括以下信息:

  • 输入 - .emd 文件、经过训练的模型文件以及运行推断工具所需的任何其他文件。
  • 构架 - 用于训练模型的深度学习框架。
  • ModelConfiguration - 执行的模型训练类型(对象检测、像素分类或要素分类)。
  • 描述 - 模型的描述。此项可选且可编辑。
  • 汇总 - 模型的简短介绍。此项可选且可编辑。
  • 标签 - 用于标识包的任何标签。这对于在门户上存储的 .dlpk 包项目非常有用。

深度学习包属性

属性窗口中编辑的任何属性将在单击确定时更新。如果正在从门户的目录窗格访问 .dlpk 包项目,则门户项目也将一并更新。

有关如何创建 .dlpk 包的信息,请参阅共享深度学习模型包

相关主题