使用深度学习分类像素 (影像分析工具)
汇总
用于运行输入栅格上的训练深度学习模型,以生成分类栅格,其中每个有效像素都被分配了一个类标注。
该工具需要包含经过训练的模型信息的模型定义文件。 可以使用训练深度学习模型工具或第三方训练软件(例如 PyTorch)训练模型。 模型定义文件可以是 Esri 模型定义 JSON 文件 (.emd) 或深度学习模型包,该文件必须包含为处理每个对象调用的 Python 栅格函数路径以及经过训练的二进制深度学习模型文件路径。
用法
您必须在 ArcGIS Pro Python 环境中安装适当的深度学习框架 Python API(例如 PyTorch);否则在将 Esri 模型定义文件添加至工具时会发生错误。 向 Esri 模型定义文件的创建者索取相应的框架信息。
要设置计算机以在 ArcGIS Pro 中使用深度学习框架,请参阅安装 ArcGIS 的深度学习框架。
该工具将调用第三方深度学习框架 Python API(例如 PyTorch),并使用指定的 Python 栅格函数来处理每个对象。
该工具的示例用例请参见 Esri Python 栅格函数 GitHub 页面。 您还可以按照 GitHub 资料档案库中的示例和说明编写自定义 Python 模块。
模型定义参数值可以是 Esri 模型定义 JSON 文件 (.emd)、JSON 字符串或深度学习模型包 (.dlpk)。 当在服务器上使用此工具时,JSON 字符串十分有用,因为您可以直接粘贴 JSON 字符串,而无需上传 .emd 文件。 .dlpk 文件必须存储在本地。
有关深度学习的详细信息,请参阅使用 ArcGIS Image Analyst 扩展模块的深度学习。
输入栅格可以是单个栅格、多个栅格或附加影像的要素类。 有关附件的详细信息,请参阅添加或移除文件附件。
增加批量大小可以提高工具性能;但是随着批量大小增加,所用内存也将随之增加。 如果出现内存不足错误,则降低批量大小。 可以使用参数参数调整 batch_size 值。
批量大小为平方数,例如 1、4、9、16、25、64 等。 如果输入值不是完全平方值,将使用可能的最高平方值。 例如,如果指定的值为 6,则批量大小设置为 4。
该工具将支持并使用多个 GPU(如果可用)。 要使用特定的 GPU,指定 GPU ID 环境。 如果未设置 GPU ID,该工具将使用所有可用 GPU。 这是默认设置。
- 当处理器类型环境设置为 CPU 且并行处理因子环境未指定时,工具将使用 50% 的并行处理因子值。
参数
|
标注
|
说明
|
数据类型
|
|
输入栅格
|
将分类的输入栅格数据集。
输入可以是镶嵌数据集、影像服务或影像文件夹中的一个或多个栅格,或者具有影像附件的要素类。
|
Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
|
|
模型定义
|
模型定义参数值可以是 Esri 模型定义 JSON 文件 (.emd)、JSON 字符串或深度学习模型包 (.dlpk)。 当在服务器上使用此工具时,JSON 字符串十分有用,因为您可以直接粘贴 JSON 字符串,而无需上传 .emd 文件。 .dlpk 文件必须存储在本地。
其中包含深度学习二进制模型文件路径、待使用的 Python 栅格函数路径以及其他参数,例如首选切片大小或填充。
|
File; String
|
|
参数
(可选)
|
模型定义参数中的信息将用于填充此参数。 这些参数会有所变化,具体取决于模型架构。 下面为在 ArcGIS 中训练的模型支持的模型参数。 ArcGIS 预训练模型和自定义深度学习模型可能具有该工具支持的其他参数。
batch_size—模型推断的每个步骤中处理的影像切片数。 这取决于显卡的内存。 此参数适用于所有模型架构。
direction—图像将从一个域转换为另一个域。 选项为 AtoB 和 BtoA。 此参数仅适用于 CycleGAN 架构。 有关此参数的详细信息,请参阅 CycleGAN 的工作原理。
merge_policy—用于合并增强预测的策略。 可用选项为 mean、max 和 min。 此参数仅在使用测试时数据增强时适用。 此参数适用于 MultiTaskRoadExtractor 和 ConnectNet 架构。 如果 IsEdgeDetection 存在于模型的 .emd 文件中,则 BDCNEdgeDetector、HEDEdgeDetector 和 MMSegmentation 架构同样适用。
n_timestep—将使用的时间步数。 默认值为 200。 它可以根据代数相应增大和减小。 仅采用 SR3 骨干模型架构的超分辨率支持该参数。
padding—影像切片边界处的像素数,将根据这些像素为相邻切片混合预测。 要在减少伪影的同时使输出更加平滑,请增大此值。 内边距的最大值可以是切片大小值的一半。 此参数适用于所有模型架构。
predict_background—指定是否对背景类进行分类。 如果为 true,则也会对背景类进行分类。 此参数适用于 UNET、PSPNET、DeepLab、MMSegmentation 和 SAMLoRA 架构。
return_probability_raster—指定输出是否为概率栅格。 如果为 true,则输出将为概率栅格。 如果为 false,则输出将为二进制分类栅格。 默认为 false。 如果模型的 .emd 文件中的 ArcGISLearnVersion 为 1.8.4 或更高版本,则 MultiTaskRoadExtractor 和 ConnectNet 架构适用。 如果 ArcGISLearnVersion 为 1.8.4 或更高版本,并且 IsEdgeDetection 存在于模型的 .emd 文件中,则 BDCNEdgeDetector、HEDEdgeDetector 和 MMSegmentation 架构同样适用。
sampling_type—将使用的采样类型。 有两种类型的采样可用:ddim 和 ddpm。 默认值为 ddim,与 ddpm 相比,它以更少的时间步长生成结果。 仅采用 SR3 骨干模型架构的超分辨率支持该参数。
schedule—设置计划类型的可选字符串。 默认计划与其训练的模型相同。 仅采用 SR3 骨干模型架构的超分辨率支持该参数。
test_time_augmentation—指定是否在预测期间执行测试时数据增强。 如果值为 true,则输入影像的翻转和旋转变体的预测将合并到最终输出中。 此参数适用于 UNET、PSPNET、DeepLab、HEDEdgeDetector、BDCNEdgeDetector、ConnectNet、MMSegmentation、MultiTaskRoadExtractor 和 SAMLoRA 架构。
tile_size—影像切片的宽度和高度,影像将按此值分割以进行预测。 此参数仅适用于 CycleGAN 架构。
thinning—指定是对预测边进行细化,还是对其进行骨架化。 选项为 True 和 False。 如果 IsEdgeDetection 存在于模型的 .emd 文件中,则 BDCNEdgeDetector、HEDEdgeDetector 和 MMSegmentation 架构适用。
threshold—置信度得分高于此阈值的预测将包含在结果中。 允许的值范围为从 0 到 1.0。 如果模型的 .emd 文件中的 ArcGISLearnVersion 为 1.8.4 或更高版本,则 MultiTaskRoadExtractor 和 ConnectNet 架构适用。 如果 ArcGISLearnVersion 为 1.8.4 或更高版本,并且 IsEdgeDetection 存在于模型的 .emd 文件中,则 BDCNEdgeDetector、HEDEdgeDetector 和 MMSegmentation 架构同样适用。
值表列:
|
Value Table
|
|
处理模式
|
指定处理镶嵌数据集或影像服务中的所有栅格项目的方式。 当输入栅格是镶嵌数据集或影像服务时,将应用此参数。
|
String
|
|
输出文件夹
(可选)
|
将存储输出分类栅格的文件夹。 将使用此文件夹中的分类栅格来生成镶嵌数据集。
当输入栅格是要单独处理所有项目的影像文件夹或镶嵌数据集时,此参数为必需项。 默认为工程文件夹中的文件夹。
|
Folder
|
|
输出要素
(可选)
|
将存储输出分类栅格的要素类。
当输入栅格为图像要素类时,此参数为必需参数。
如果要素类已存在,结果将追加到现有要素类。
|
Feature Class
|
|
覆盖附件
(可选)
|
指定是否将覆盖现有图像附件。
仅当输入栅格参数值为具有图像附件的要素类时,此参数才适用。
|
Boolean
|
|
使用像素空间
(可选)
|
指定是否对像素空间中的影像执行推断。
|
Boolean
|
返回值
|
标注
|
说明
|
数据类型
|
|
输出栅格数据集
|
包含结果的栅格或镶嵌数据集的名称。
|
Raster
|
ClassifyPixelsUsingDeepLearning(in_raster, in_model_definition, {arguments}, processing_mode, {out_classified_folder}, {out_featureclass}, {overwrite_attachments}, {use_pixelspace})
|
名称
|
说明
|
数据类型
|
|
in_raster
|
将分类的输入栅格数据集。
输入可以是镶嵌数据集、影像服务或影像文件夹中的一个或多个栅格,或者具有影像附件的要素类。
|
Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
|
|
in_model_definition
|
in_model_definition 参数值可以是 Esri 模型定义 JSON 文件 (.emd)、JSON 字符串或深度学习模型包 (.dlpk)。 当在服务器上使用此工具时,JSON 字符串十分有用,因为您可以直接粘贴 JSON 字符串,而无需上传 .emd 文件。 .dlpk 文件必须存储在本地。
其中包含深度学习二进制模型文件路径、待使用的 Python 栅格函数路径以及其他参数,例如首选切片大小或填充。
|
File; String
|
|
arguments
[arguments,...]
(可选)
|
in_model_definition 参数中的信息将用于设置此参数的默认值。 这些参数会有所变化,具体取决于模型架构。 下面为在 ArcGIS 中训练的模型支持的模型参数。 ArcGIS 预训练模型和自定义深度学习模型可能具有该工具支持的其他参数。
batch_size—模型推断的每个步骤中处理的影像切片数。 这取决于显卡的内存。 此参数适用于所有模型架构。
direction—图像将从一个域转换为另一个域。 选项为 AtoB 和 BtoA。 此参数仅适用于 CycleGAN 架构。 有关此参数的详细信息,请参阅 CycleGAN 的工作原理。
merge_policy—用于合并增强预测的策略。 可用选项为 mean、max 和 min。 此参数仅在使用测试时数据增强时适用。 此参数适用于 MultiTaskRoadExtractor 和 ConnectNet 架构。 如果 IsEdgeDetection 存在于模型的 .emd 文件中,则 BDCNEdgeDetector、HEDEdgeDetector 和 MMSegmentation 架构同样适用。
n_timestep—将使用的时间步数。 默认值为 200。 它可以根据代数相应增大和减小。 仅采用 SR3 骨干模型架构的超分辨率支持该参数。
padding—影像切片边界处的像素数,将根据这些像素为相邻切片混合预测。 要在减少伪影的同时使输出更加平滑,请增大此值。 内边距的最大值可以是切片大小值的一半。 此参数适用于所有模型架构。
predict_background—指定是否对背景类进行分类。 如果为 true,则也会对背景类进行分类。 此参数适用于 UNET、PSPNET、DeepLab、MMSegmentation 和 SAMLoRA 架构。
return_probability_raster—指定输出是否为概率栅格。 如果为 true,则输出将为概率栅格。 如果为 false,则输出将为二进制分类栅格。 默认为 false。 如果模型的 .emd 文件中的 ArcGISLearnVersion 为 1.8.4 或更高版本,则 MultiTaskRoadExtractor 和 ConnectNet 架构适用。 如果 ArcGISLearnVersion 为 1.8.4 或更高版本,并且 IsEdgeDetection 存在于模型的 .emd 文件中,则 BDCNEdgeDetector、HEDEdgeDetector 和 MMSegmentation 架构同样适用。
sampling_type—将使用的采样类型。 有两种类型的采样可用:ddim 和 ddpm。 默认值为 ddim,与 ddpm 相比,它以更少的时间步长生成结果。 仅采用 SR3 骨干模型架构的超分辨率支持该参数。
schedule—设置计划类型的可选字符串。 默认计划与其训练的模型相同。 仅采用 SR3 骨干模型架构的超分辨率支持该参数。
test_time_augmentation—指定是否在预测期间执行测试时数据增强。 如果值为 true,则输入影像的翻转和旋转变体的预测将合并到最终输出中。 此参数适用于 UNET、PSPNET、DeepLab、HEDEdgeDetector、BDCNEdgeDetector、ConnectNet、MMSegmentation、MultiTaskRoadExtractor 和 SAMLoRA 架构。
tile_size—影像切片的宽度和高度,影像将按此值分割以进行预测。 此参数仅适用于 CycleGAN 架构。
thinning—指定是对预测边进行细化,还是对其进行骨架化。 选项为 True 和 False。 如果 IsEdgeDetection 存在于模型的 .emd 文件中,则 BDCNEdgeDetector、HEDEdgeDetector 和 MMSegmentation 架构适用。
threshold—置信度得分高于此阈值的预测将包含在结果中。 允许的值范围为从 0 到 1.0。 如果模型的 .emd 文件中的 ArcGISLearnVersion 为 1.8.4 或更高版本,则 MultiTaskRoadExtractor 和 ConnectNet 架构适用。 如果 ArcGISLearnVersion 为 1.8.4 或更高版本,并且 IsEdgeDetection 存在于模型的 .emd 文件中,则 BDCNEdgeDetector、HEDEdgeDetector 和 MMSegmentation 架构同样适用。
值表列:
|
Value Table
|
|
processing_mode
|
指定处理镶嵌数据集或影像服务中的所有栅格项目的方式。 当输入栅格是镶嵌数据集或影像服务时,将应用此参数。
|
String
|
|
out_classified_folder
(可选)
|
将存储输出分类栅格的文件夹。 将使用此文件夹中的分类栅格来生成镶嵌数据集。
当输入栅格是要单独处理所有项目的影像文件夹或镶嵌数据集时,此参数为必需项。 默认为工程文件夹中的文件夹。
|
Folder
|
|
out_featureclass
(可选)
|
将存储输出分类栅格的要素类。
当输入栅格为图像要素类时,此参数为必需参数。
如果要素类已存在,结果将追加到现有要素类。
|
Feature Class
|
|
overwrite_attachments
(可选)
|
指定是否将覆盖现有图像附件。
仅当 in_raster 参数值为具有图像附件的要素类时,此参数才有效。
|
Boolean
|
|
use_pixelspace
(可选)
|
指定是否对像素空间中的影像执行推断。
|
Boolean
|
返回值
|
名称
|
说明
|
数据类型
|
|
out_classified_raster
|
包含结果的栅格或镶嵌数据集的名称。
|
Raster
|
代码示例
ClassifyPixelsUsingDeepLearning 示例 1(Python 窗口)
此示例使用 ClassifyPixelsUsingDeepLearning 函数并基于自定义像素分类对栅格进行分类。
# Import system modules
import arcpy
from arcpy.ia import *
out_classified_raster = ClassifyPixelsUsingDeepLearning(
"c:\\classifydata\\moncton_seg.tif", "c:\\classifydata\\moncton_sig.emd",
"padding 0; batch_size 16", "PROCESS_AS_MOSAICKED_IMAGE")
out_classified_raster.save("c:\\classifydata\\classified_moncton.tif")
ClassifyPixelsUsingDeepLearning 示例 2(独立脚本)
此示例使用 ClassifyPixelsUsingDeepLearning 函数并基于自定义像素分类对栅格进行分类。
# Import system modules
import arcpy
from arcpy.ia import *
# Set local variables
in_raster = "c:\\classifydata\\moncton_seg.tif"
in_model_definition = "c:\\classifydata\\moncton_sig.emd"
model_arguments = "padding 0; batch_size 16"
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"
# Run
Out_classified_raster = ClassifyPixelsUsingDeepLearning(in_raster,
in_model_definition, model_arguments, processing_mode)
Out_classified_raster.save("c:\\classifydata\\classified_moncton.tif")
环境
像元大小, 当前工作空间, 范围, 地理变换, GPU ID, 掩膜, 输出坐标系, 并行处理因子, 处理器类型, 临时工作空间, 捕捉栅格
许可信息
- 基本: 需要 Image Analyst
- 标准: 需要 Image Analyst
- 高级: 需要 Image Analyst