使用深度学习检测对象 (栅格分析)

摘要

用于运行输入栅格上的训练深度学习模型,以生成包含其识别对象的要素类。 此要素类可作为托管要素图层在门户中共享。 这些要素可以是所找到对象周围的边界框或面,也可以是对象中心的点。

插图

“使用深度学习检测对象”工具图示

使用情况

  • 必须使用正确的深度学习框架 Python API(例如,Tensorflow、CNTK 或类似内容)配置栅格分析 (RA) 服务器 Python 环境。

  • 运行此工具后,您的 RA 服务器将调用第三方深度学习 Python API(例如,TensorFlow 或 CNTK),并使用指定的 Python 栅格函数来处理每个栅格切片。

  • 输入模型参数仅使用来自门户的深度学习包 (.dlpk) 项目。

  • 选择或指定输入模型后,该工具将从栅格分析服务器获取模型参数信息。 如果您的输入模型无效或者栅格分析服务器未使用深度学习框架正确配置,则该工具可能无法获得模型参数信息。

  • 使用非极大值抑制参数标识和移除对象检测中重复的要素。

  • 有关深度学习的详细信息,请参阅 ArcGIS Image Analyst 扩展模块中的深度学习

参数

标注说明数据类型
输入栅格

用于检测对象的输入图像。 它可以是影像服务 URL、栅格图层、影像服务、地图服务器图层或 Internet 切片图层。

Raster Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; String
输入模型

输入模型可以是文件或者来自门户的深度学习包 (.dlpk) 项目的 URL。

File
输出名称

检测对象的输出要素服务的名称。

String
模型参数
(可选)

函数模型参数在输入模型引用的 Python 栅格函数类中定义。 您可以在此列出其他深度学习参数和用于试验和优化的参数,例如用于优化灵敏度的置信度阈值。 参数名称将由工具通过读取 RA 服务器上的 Python 模块进行填充。

Value Table
非极大值抑制
(可选)

指定是否执行可用于标识重复对象和移除置信值较低的重复要素的非极大值抑制。

  • 未选中 - 所有检测到的对象都将位于输出要素类中。 这是默认设置。
  • 选中 - 将移除重复检测到的对象。

Boolean
置信度得分字段
(可选)

要素服务中的字段,该字段包含将由对象检测方法用作输出的置信度得分。

当选中了非最大抑制参数时需要用到该参数。

String
类值字段
(可选)

要素服务中类值字段的名称。

如果未提供字段名称,将使用 ClassvalueValue 字段。 如果这些字段不存在,则会将所有记录标识为属于一个类。

String
最大重叠比
(可选)

两个重叠要素的最大重叠比,其定义为交集区域与并集区域之比。 默认值为 0。

Double
处理模式
(可选)

指定处理镶嵌数据集或影像服务中的所有栅格项目的方式。 当输入栅格是镶嵌数据集或影像服务时,将应用此参数。

  • 以镶嵌影像方式处理将镶嵌在一起并处理镶嵌数据集或影像服务中的所有栅格项目。 这是默认设置。
  • 单独处理所有栅格项目将作为独立影像处理镶嵌数据集或影像服务中的所有栅格项目。
String

派生输出

标注说明数据类型
输出对象

输出要素服务。

Feature Class

arcpy.ra.DetectObjectsUsingDeepLearning(inputRaster, inputModel, outputName, {modelArguments}, {runNMS}, {confidenceScoreField}, {classValueField}, {maxOverlapRatio}, {processingMode})
名称说明数据类型
inputRaster

用于检测对象的输入图像。 它可以是影像服务 URL、栅格图层、影像服务、地图服务器图层或 Internet 切片图层。

Raster Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; String
inputModel

输入模型可以是文件或者来自门户的深度学习包 (.dlpk) 项目的 URL。

File
outputName

检测对象的输出要素服务的名称。

String
modelArguments
[modelArguments,...]
(可选)

函数模型参数在输入模型引用的 Python 栅格函数类中定义。 您可以在此列出其他深度学习参数和用于试验和优化的参数,例如用于优化灵敏度的置信度阈值。 参数名称将由工具通过读取 RA 服务器上的 Python 模块进行填充。

Value Table
runNMS
(可选)

指定是否执行可用于标识重复对象和移除置信值较低的重复要素的非极大值抑制。

  • NO_NMS所有检测到的对象都将位于输出要素类中。 这是默认设置。
  • NMS将移除重复检测到的对象。
Boolean
confidenceScoreField
(可选)

要素服务中的字段,该字段包含将由对象检测方法用作输出的置信度得分。

当将 NMS 关键字用于 runNMS 参数时需要用到该参数。

String
classValueField
(可选)

要素服务中类值字段的名称。

如果未提供字段名称,将使用 ClassvalueValue 字段。 如果这些字段不存在,则会将所有记录标识为属于一个类。

String
maxOverlapRatio
(可选)

两个重叠要素的最大重叠比,其定义为交集区域与并集区域之比。 默认值为 0。

Double
processingMode
(可选)

指定处理镶嵌数据集或影像服务中的所有栅格项目的方式。 当输入栅格是镶嵌数据集或影像服务时,将应用此参数。

  • PROCESS_AS_MOSAICKED_IMAGE将镶嵌在一起并处理镶嵌数据集或影像服务中的所有栅格项目。 这是默认设置。
  • PROCESS_ITEMS_SEPARATELY将作为独立影像处理镶嵌数据集或影像服务中的所有栅格项目。
String

派生输出

名称说明数据类型
outObjects

输出要素服务。

Feature Class

代码示例

DetectObjectsUsingDeepLearning_ra 示例 1(Python 窗口)

此示例使用 DetectObjectsUsingDeepLearning 工具并基于对象检测在您的门户中创建托管要素图层。

import arcpy
arcpy.ra.DetectObjectsUsingDeepLearning(
        "https://myserver/rest/services/Farm/ImageServer",
        "https://myportal/sharing/rest/content/items/itemId", "detectedTrees",
"score_threshold 0.6;padding 0", "NO_NMS")
DetectObjectsUsingDeepLearning 示例 2(独立脚本)

此示例使用 DetectObjectsUsingDeepLearning 工具并基于对象检测在您的门户中创建托管要素图层。

#---------------------------------------------------------------------------
# Name: DetectObjectsUsingDeepLearning_example02.py
# Requirements: ArcGIS Image Server
# Import system modules
import arcpy
# Set local variables
inImage = "https://myserver/rest/services/coconutFarmImage/ImageServer"
inModel = "https://myportal/sharing/rest/content/items/itemId"
outName = "detectedTrees"
modelArgs = "score_threshold 0.6;padding 0"
runNMS = "NMS"
confScoreField = "Confidence"
classVField = "Class"
maxOverlapRatio = 0.15 
# Execute Detect Objects Using raster analysis tool
arcpy.ra.DetectObjectsUsingDeepLearning(inImage, inModel, outName, modelArgs,
runNMS, confScoreField, ClassVField, maxOverlapRatio)

许可信息

  • Basic: 需要 ArcGIS Image Server
  • Standard: 需要 ArcGIS Image Server
  • Advanced: 需要 ArcGIS Image Server

相关主题