标注 | 说明 | 数据类型 |
自栅格 | 更改前的输入栅格。 | Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer |
至栅格 | 更改后的输入栅格。 | Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer |
输出分类栅格 | 显示变化的输出分类栅格。 | Raster Dataset |
模型定义 | 模型定义参数值可以是 Esri 模型定义 JSON 文件 (.emd)、JSON 字符串或深度学习模型包 (.dlpk)。 当在服务器上使用此工具时,JSON 字符串十分有用,因为您可以直接粘贴 JSON 字符串,而无需上传 .emd 文件。 .dlpk 文件必须存储在本地。 其中包含深度学习二进制模型文件的路径、待使用的 Python 栅格函数的路径以及其他参数,例如首选切片大小或填充。 | File; String |
参数 (可选) | 函数参数在 Python 栅格函数类中进行定义。 您可以在此列出其他深度学习参数和用于试验和优化的参数,例如用于调整灵敏度的置信度阈值。 参数名称将通过读取 Python 模块进行填充。 | Value Table |
获得 Image Analyst 许可后可用。
摘要
运行训练深度学习模型以检测两个栅格之间的变化。
该工具需要包含经过训练的模型信息的模型定义文件。 模型定义文件可以是 Esri 模型定义 JSON 文件 (.emd) 或深度学习模型包,它必须包含为处理每个对象调用的 Python 栅格函数的路径以及经过训练的二进制深度学习模型文件的路径。
使用情况
此工具的输入为两个图像:先前时间图像和最近时间图像。 输出为已分类栅格数据集,用于显示两个栅格输入之间的变化。
您必须在 AllSource Python 环境中安装适当的深度学习框架 Python API(例如 TensorFlow 或 PyTorch);否则在将 Esri 模型定义文件添加至工具时会发生错误。 向 Esri 模型定义文件的创建者索取相应的框架信息。
要设置计算机以在 AllSource 中使用深度学习框架,请参阅安装 ArcGIS 的深度学习框架。
该工具将调用第三方深度学习 Python API(例如 TensorFlow、PyTorch 或 Keras),并使用指定的 Python 栅格函数来处理每个对象。
模型定义参数值可以是 Esri 模型定义 JSON 文件 (.emd)、JSON 字符串或深度学习模型包 (.dlpk)。 当在服务器上使用此工具时,JSON 字符串十分有用,因为您可以直接粘贴 JSON 字符串,而无需上传 .emd 文件。 .dlpk 文件必须存储在本地。
可能需要其他输入参数,例如迷你批量大小、填充大小等。
有关模型定义 JSON 文件 (.emd),请参阅下面的示例。
示例模型定义 JSON 文件
{ "Framework": "", "ModelConfiguration":" ", "ModelFile":"", "InferenceFunction":"", "ModelType":"", "ImageHeight":256, "ImageWidth":256, "ExtractBands":[0,1,2], "CropSizeFixed": 1, "BlackenAroundFeature": 1, "Classes": [ { "Value": 0, "Name": "Building", "Color": [255, 0, 0] } ] }
增加批量大小可以提高工具性能;但是随着批量大小增加,所用内存也将随之增加。 如果出现内存不足错误,则降低批量大小。 可以使用自变量参数调整 batch_size 值。
批量大小为平方数,例如 1、4、9、16、25、64 等。 如果输入值不是完全平方值,将使用可能的最高平方值。 例如,如果指定的值为 6,表示可以将批量大小设置为 4。
有关运行此工具的要求以及您可能遇到的问题的信息,请参阅深度学习常见问题。
有关深度学习的详细信息,请参阅 AllSource 中的深度学习。
参数
DetectChangeUsingDeepLearning(from_raster, to_raster, out_classified_raster, in_model_definition, {arguments})
名称 | 说明 | 数据类型 |
from_raster | 更改前的输入栅格。 | Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer |
to_raster | 更改后的输入栅格。 | Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer |
out_classified_raster | 显示变化的输出分类栅格。 | Raster Dataset |
in_model_definition | in_model_definition 参数值可以是 Esri 模型定义 JSON 文件 (.emd)、JSON 字符串或深度学习模型包 (.dlpk)。 当在服务器上使用此工具时,JSON 字符串十分有用,因为您可以直接粘贴 JSON 字符串,而无需上传 .emd 文件。 .dlpk 文件必须存储在本地。 其中包含深度学习二进制模型文件的路径、待使用的 Python 栅格函数的路径以及其他参数,例如首选切片大小或填充。 | File; String |
arguments [arguments,...] (可选) | 函数参数在 Python 栅格函数类中进行定义。 您可以在此列出其他深度学习参数和用于试验和优化的参数,例如用于调整灵敏度的置信度阈值。 参数名称将通过读取 Python 模块进行填充。 | Value Table |
代码示例
此示例运行深度学习模型以查找两个图像之间的差异。
# Import system modules
import arcpy
from arcpy.ia import *
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")
DetectChangeUsingDeepLearning("c://detectchange//input_image1.tif",
"c://detectchange//input_image2.tif", "c://detectchange//output_difference.tif",
"c://detectchange/detectBuilding.emd", "padding 0;score_threshold 0.6;batch_size 4")
此示例运行深度学习模型以查找两个图像之间的差异。
# Import system modules
import arcpy
from arcpy.ia import *
"""
Usage: DetectObjectsUsingDeepLearning(from_raster, to_raster, out_classified_raster,
in_model_definition, {model_arguments})
"""
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")
# Set local variable
from_raster = r"c:/detectchange/input_image1.tif"
to_raster = r"c:/detectchange/input_image2.tif"
out_classified_raster = r"c:/detectchange/output_difference.tif"
in_model_definition = r"c:/ detectchange/detectbuilding.emd"
# arcpy.env.processorType = "GPU"
# arcpy.env.gpuId = 0
# Execute
DetectChangeUsingDeepLearning(from_raster, to_raster, out_classified_raster,
in_model_definition, "padding 0;score_threshold 0.6;batch_size 4")