ArcGIS 中的深度学习模型

获得 Image Analyst 许可后可用。

深度学习模型是一个计算机模式,它使用训练样本和深度学习神经网络进行训练,来执行各种任务,例如对象检测、像素分类、检测变化和对象分类。

可以在 ArcGIS 中按三个类别对深度学习模型进行分组:

  • ArcGIS 预训练模型
  • 使用 ArcGIS 训练的模型
  • 自定义模型

ArcGIS 预训练模型

ArcGIS 预训练模型可自动执行影像和点云数据集中地理要素的数字化和提取任务。

从原始数据提取要素(例如数字化覆盖区或生成土地覆盖地图)十分耗时。 深度学习会自动化该过程并最大程度地减少完成这些任务所需的手动交互。 但是,训练深度学习模型可能十分复杂,因为需要大量数据、计算资源和深度学习知识。

借助 ArcGIS 预训练模型,您无需投入时间和精力来训练深度学习模型。 ArcGIS 已使用来自各种地理的数据进行了训练。 当获取新影像时,您可以提取要素并生成 GIS 数据集图层,从而进行制图、可视化和分析。 如果您具有 ArcGIS 帐户,则可以在 ArcGIS Living Atlas of the World 上找到预训练模型。

使用 ArcGIS 训练的模型

出于各种原因,您可能需要训练您自己的模型。 例如,当可用的 ArcGIS 预训练模型是针对与您的感兴趣区不同的地理区域进行训练的。 在此类情况下,您可以使用训练深度学习模型工具。 要训练您自己的模型,需要执行额外的步骤,但是对于特定感兴趣区和用例,通常可以提供最佳结果。 该工具使用导出训练数据进行深度学习工具的输出训练深度学习模型。 这两个工具均支持大多数常用的深度学习元数据格式和模型架构。

有关不同元数据格式的详细信息,请参阅导出训练数据进行深度学习工具文档。 有关各种模型类型的详细信息,请参阅训练深度学习模型工具文档。

自定义模型

ArcGIS 中推断的深度学习模型是在 Python 栅格函数框架上实施的。 在 ArcGIS 外部训练的诸多深度学习模型可在 ArcGIS 中用于推断;但是这需要自定义推断函数并安装支持模型的正确包。 栅格深度学习资料档案库提供了有关 ArcGIS 中深度学习 Python 栅格函数的指导,以及如何创建自定义 Python 栅格函数在 ArcGIS 中集成其他深度学习模型。 这些模型视为自定义模型。

深度学习模型内容

在 ArcGIS 中训练的典型模型包含下图所示并在下面列出的文件夹和文件:

模型文件夹结构

  • loss_graph.png - 显示所处理批次的训练和验证损失。 这用于 model_metrics.html 文件。
  • show_results.png - 显示模型的示例结果。 这用于 model_metrics.html 文件。
  • training_validation_loss.json - 显示每轮次的训练和验证损失。
  • model_metrics.html - 包含有关训练模型的信息,例如学习速率、训练和验证损失以及示例结果。
  • model_name.pth - 包含模型权重。

根据模型架构,模型文件夹可能包含其他支持文件,例如 ModelConfiguration.py

Esri 模型定义文件

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 - 检测对象或要素。
  • ObjectClassification - 对对象和要素进行分类。

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

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

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

{
    "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]
      }
    ]
}

下面是配置中包含其他可选参数的模型定义文件的示例:

{
    "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 包的信息,请参阅共享深度学习模型包

相关主题